From e9f66f2795a6b0eecf29a8204b24a9d428482c0b Mon Sep 17 00:00:00 2001 From: PicusZeus Date: Sat, 19 Oct 2019 10:31:01 +0200 Subject: [PATCH 1/2] added accentuation.make_varia --- .gitignore | 5 ++++ README.md | 4 ++++ docs.rst | 15 ++++++++++++ greek_accentuation/accentuation.py | 38 ++++++++++++++++++++++-------- greek_accentuation/characters.py | 1 + 5 files changed, 53 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 5b7dd7a..819c605 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,8 @@ __pycache__ dist .coverage htmlcov +.idea/ +venv/ +.ipynb_checkpoints +*/.ipynb_checkpoints/* +*.ipynb \ No newline at end of file diff --git a/README.md b/README.md index 1c141b0..f58b0fb 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,10 @@ see [docs.rst](https://github.com/jtauber/greek-accentuation/blob/master/docs.rs ## Change Log +### Changed in 1.2.1 + +* added `accentuation.make_varia`, that changes acute in oxytona to grave + ### Changed in 1.2.0 * `on_penult` will now return an oxytone rather than None if input only has one syllable diff --git a/docs.rst b/docs.rst index 5bb568b..326defa 100644 --- a/docs.rst +++ b/docs.rst @@ -428,6 +428,9 @@ provided): >>> get_accent_type('ψυχή') == OXYTONE True +>>> get_accent_type('ψυχὴ') == VARIA +True + >>> get_accent_type('ἀγαθοῦ') == PERISPOMENON True @@ -467,6 +470,9 @@ If you want to display the type of accent you can use ``display_accent_type``: >>> syllable_add_accent('ος', ACUTE) 'ός' +>>> syllable_add_accent('κος', GRAVE) +'κὸς' + >>> syllable_add_accent('ου', CIRCUMFLEX) 'οῦ' @@ -477,6 +483,15 @@ If you want to display the type of accent you can use ``display_accent_type``: >>> make_oxytone('θεος') 'θεός' +>>> make_varia('θεος') +'θεὸς' + +>>> make_varia('θεός') +'θεὸς' + +>>> make_varia('λόγος') +'λόγος' + This is the same as: >>> add_accent(syllabify('θεος'), OXYTONE) diff --git a/greek_accentuation/accentuation.py b/greek_accentuation/accentuation.py index 84e8c2b..332fd12 100644 --- a/greek_accentuation/accentuation.py +++ b/greek_accentuation/accentuation.py @@ -1,5 +1,5 @@ -from .characters import add_diacritic -from .characters import ACUTE, CIRCUMFLEX, SHORT, LONG, SMOOTH, ROUGH +from .characters import add_diacritic, remove_diacritic +from .characters import ACUTE, CIRCUMFLEX, SHORT, LONG, SMOOTH, ROUGH, GRAVE from .syllabify import onset_nucleus_coda, syllabify, UNKNOWN, syllable_length from .syllabify import syllable_accent, ultima, penult, antepenult @@ -18,6 +18,7 @@ def add_accent(s, accent_type): return "".join(s[:-pos] + [syllable_add_accent(s[-pos], accent)] + final) +VARIA = 1, GRAVE OXYTONE = 1, ACUTE PERISPOMENON = 1, CIRCUMFLEX PAROXYTONE = 2, ACUTE @@ -27,6 +28,7 @@ def add_accent(s, accent_type): def display_accent_type(accent_type): return { + VARIA: "varia", OXYTONE: "oxytone", PERISPOMENON: "perispomenon", PAROXYTONE: "paroxytone", @@ -62,21 +64,37 @@ def make_properispomenon(w): else: return add_accent(s, PAROXYTONE) +def make_varia(w): + s = syllabify(w) + if get_accent_type(w) == OXYTONE: + s[-1] = remove_diacritic(ACUTE)(s[-1]) + return add_accent(s, VARIA) + elif get_accent_type(w) in [PAROXYTONE, PROPAROXYTONE, PERISPOMENON, PROPERISPOMENON]: + return w + else: + return add_accent(s, VARIA) def get_accent_type(w): u = syllable_accent(ultima(w)) + print(u) if u == ACUTE: return OXYTONE elif u == CIRCUMFLEX: return PERISPOMENON - p = syllable_accent(penult(w)) - if p == ACUTE: - return PAROXYTONE - elif p == CIRCUMFLEX: - return PROPERISPOMENON - a = syllable_accent(antepenult(w)) - if a == ACUTE: - return PROPAROXYTONE + elif u == GRAVE: + return VARIA + if len(syllabify(w)) > 1: + p = syllable_accent(penult(w)) + if p == ACUTE: + return PAROXYTONE + elif p == CIRCUMFLEX: + return PROPERISPOMENON + elif len(syllabify(w)) > 2: + a = syllable_accent(antepenult(w)) + if a == ACUTE: + return PROPAROXYTONE + else: + return None def possible_accentuations( diff --git a/greek_accentuation/characters.py b/greek_accentuation/characters.py index e0b31a6..29f1cf9 100644 --- a/greek_accentuation/characters.py +++ b/greek_accentuation/characters.py @@ -53,6 +53,7 @@ def _(text): return _ + PSILI = SMOOTH = "\u0313" DASIA = ROUGH = "\u0314" From a40b40d6c3d309f7a770e9eade6ddf78710120e6 Mon Sep 17 00:00:00 2001 From: Krzysztof H Date: Sun, 14 Nov 2021 01:18:37 +0100 Subject: [PATCH 2/2] minor bugster --- docs.rst | 4 ++-- greek_accentuation/__init__.pyc | Bin 0 -> 117 bytes greek_accentuation/accentuation.py | 9 ++++++--- greek_accentuation/accentuation.pyc | Bin 0 -> 5598 bytes greek_accentuation/characters.pyc | Bin 0 -> 3155 bytes 5 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 greek_accentuation/__init__.pyc create mode 100644 greek_accentuation/accentuation.pyc create mode 100644 greek_accentuation/characters.pyc diff --git a/docs.rst b/docs.rst index 326defa..fed47e3 100644 --- a/docs.rst +++ b/docs.rst @@ -628,7 +628,7 @@ If the word only has one syllable, it will fall back to an oxytone: 'δός' -The ``persistent`` function will try to persist the accent from the given form: +The ``persistent`` function will try to keep an accent from a given form: >>> persistent('ἀνθρωπος', 'ἄνθρωπος') 'ἄνθρωπος' @@ -637,4 +637,4 @@ The ``persistent`` function will try to persist the accent from the given form: 'ἀνθρώπου' >>> persistent('καταβαινον', 'καταβαίνων') -'καταβαῖνον' +'καταβαῖνον' \ No newline at end of file diff --git a/greek_accentuation/__init__.pyc b/greek_accentuation/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ba14e014b11abe7e6ec824778d5eff89344149e6 GIT binary patch literal 117 zcmZSn%*%D*KVM=p0~9ajjV0EP+{m;e9( literal 0 HcmV?d00001 diff --git a/greek_accentuation/accentuation.py b/greek_accentuation/accentuation.py index 332fd12..a2fd4e6 100644 --- a/greek_accentuation/accentuation.py +++ b/greek_accentuation/accentuation.py @@ -76,7 +76,6 @@ def make_varia(w): def get_accent_type(w): u = syllable_accent(ultima(w)) - print(u) if u == ACUTE: return OXYTONE elif u == CIRCUMFLEX: @@ -89,7 +88,7 @@ def get_accent_type(w): return PAROXYTONE elif p == CIRCUMFLEX: return PROPERISPOMENON - elif len(syllabify(w)) > 2: + if len(syllabify(w)) > 2: a = syllable_accent(antepenult(w)) if a == ACUTE: return PROPAROXYTONE @@ -157,8 +156,9 @@ def on_penult(w, default_short=False): def persistent(w, lemma, default_short=False): - w = w.replace("|", "") + w = w.replace("|", "") + get_accent_type(lemma) place, accent = get_accent_type(lemma) s = syllabify(w) possible = list(possible_accentuations(s, default_short=default_short)) @@ -175,3 +175,6 @@ def persistent(w, lemma, default_short=False): accent_type = (place2 - i, ACUTE) break return add_accent(s, accent_type) + + + diff --git a/greek_accentuation/accentuation.pyc b/greek_accentuation/accentuation.pyc new file mode 100644 index 0000000000000000000000000000000000000000..494a814e8f1111ea0ec4a68bc63203bcca191a50 GIT binary patch literal 5598 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 QrBs=$EX^&=%}*csH(>Pa)&Kwi literal 0 HcmV?d00001 diff --git a/greek_accentuation/characters.pyc b/greek_accentuation/characters.pyc new file mode 100644 index 0000000000000000000000000000000000000000..105234d1cb63bfdacc6bc5201721eeadd20f9895 GIT binary patch literal 3155 zcmb_eZFAE`5MIf)5}P=N@R9@y2tJuk2MmO^9~h>tV}fUhoskltY8j8ByVxSO6m(}^ zTKGh#%F(Vz1`=YyTZTK%0KTG{Q$C05&wU{qLvH* zfjF7I9tBKLg$}w=Q$*3dj}kRzctjXF=4!JIB3eL7rpJzGBmP^*o56+qib)g(v5>;ozAj@u zij%QF3V)S#vaM-cFs!2l7Rp9#kVv`T_k%!2dgALaj;;kmKk)-C6Lt0ArKT+I`byHj zA`@T)BuS+*hee%4@h89@yZZ;gYjm2nNCVX0C@MC7Ho|8zvVA*aU>_W&leZqEx`KYGw|AkSNJnv--2Y7 zboc2hJVfNDf#^DDAWfG;32`VooKT0>&@~i72J!eHR#No$FngTFJTPe*D>N*R)hA?< z*6c5$Q1d9jSTd@{g24tjQ4Xcjp}w?@edP4o*!I6bAvntynxNCq{Ud9NpaWK|6dYoP z8d}tI6y_MbWrTVLoI5y#bI}xnb2wlC<;HCt&omQA?Hmnh60?KSO7}MnIyvHy7mkG@ z-7YHdaYv$xBYh#JyF5cv$tDzekCe_57T)7;s2qijNv9D3g5-k7dcO$CL#omdN0;|a zs%LWw+<}Bxf=d)08didf9Ht{fRuB8ltRG3#t#bx9(TNX)ayOB_9){82{ZQ5sfhyb` zy|hzekmAbG$TF5gjwk_=nJAQXwPkRRo%toeDUhw%i-ZiqB6!-_MsM8T!B zGA-RgCC3*c=!tnq#RWhr&bo@(EwYY~qaPhIf@s&Fu;U=S8^|oBkl=e0i@JmYFQ3QD z8KJ)g*q?(0A!)z^<0)R(#BDUKo2H9q^F4F5!JNi@%q!ggQO8RWDsB&CBwrjPcdlcF z3B)oAMoOUM-jqNYS5M+FO4*T6rjdp|XJzKTYqTJ-0vNR~Nsq_TVj{=!GdbmruW2pv z7)mvZ7yV_@xOx5NR9(x}#`US%$knwQx!U+XSJ!UkYUA6fy2cr%bkUkjPUHc;Ffx!J zC-GB*F0ji?QCP)$99vyZHHE&*hl(6+tdU&1@xipv$sild+}!h?3{5Sko%9XXT%=QIjUz~6E^_dA;A zxtqP-_C0P~Z@Qf(Yff)xMbZYvSO0pa*>>7)$31)q$V948@#vqn zdK+zAW|J+Gr=8w*v+wTw=(e2B*0!dmFxGxwO?DMNtqwHLdwCEK