scriptconv 0.0.3a21__tar.gz → 0.0.3a22__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/PKG-INFO +1 -1
  2. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/ar.py +50 -29
  3. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/version.py +1 -1
  4. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv.egg-info/PKG-INFO +1 -1
  5. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/LICENSE +0 -0
  6. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/README.md +0 -0
  7. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/pyproject.toml +0 -0
  8. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/requirements.txt +0 -0
  9. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/__init__.py +0 -0
  10. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/__main__.py +0 -0
  11. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/cangjie.py +0 -0
  12. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/conventions.py +0 -0
  13. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/data/__init__.py +0 -0
  14. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/data/cangjie5_tc.tsv.gz +0 -0
  15. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/graph.py +0 -0
  16. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/notation.py +0 -0
  17. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/__init__.py +0 -0
  18. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/__init__.py +0 -0
  19. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/bw2ipa.py +0 -0
  20. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/hangul2ipa.py +0 -0
  21. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/aspiration.csv +0 -0
  22. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/assimilation.csv +0 -0
  23. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/double_coda.csv +0 -0
  24. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/hanja.tsv +0 -0
  25. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/ipa.csv +0 -0
  26. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/neutralization.csv +0 -0
  27. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/tensification.csv +0 -0
  28. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/yale.csv +0 -0
  29. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/__init__.py +0 -0
  30. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/codeswitch.py +0 -0
  31. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/diacritize.py +0 -0
  32. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/dialectal.py +0 -0
  33. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/english_g2p.py +0 -0
  34. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/espeak.py +0 -0
  35. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/frontend.py +0 -0
  36. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/levantine_g2p.py +0 -0
  37. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/normalize.py +0 -0
  38. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/phoneme_inventory.py +0 -0
  39. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/zh_num.py +0 -0
  40. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/__init__.py +0 -0
  41. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/kog2p/LICENSE.md +0 -0
  42. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/kog2p/__init__.py +0 -0
  43. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/kog2p/rulebook.txt +0 -0
  44. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/LICENSE.md +0 -0
  45. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/__init__.py +0 -0
  46. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/buck/__init__.py +0 -0
  47. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/buck/phonetise_buckwalter.py +0 -0
  48. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/buck/symbols.py +0 -0
  49. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/buck/tokenization.py +0 -0
  50. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/num2words.py +0 -0
  51. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/unicode_symbol2label.py +0 -0
  52. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/base.py +0 -0
  53. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/en.py +0 -0
  54. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/enums.py +0 -0
  55. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/eu.py +0 -0
  56. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/fa.py +0 -0
  57. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/gl.py +0 -0
  58. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/he.py +0 -0
  59. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/ja.py +0 -0
  60. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/ko.py +0 -0
  61. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/mul.py +0 -0
  62. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/mwl.py +0 -0
  63. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/o2ipa.py +0 -0
  64. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/pt.py +0 -0
  65. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/registry.py +0 -0
  66. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/shami.py +0 -0
  67. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/vi.py +0 -0
  68. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/zh.py +0 -0
  69. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/py.typed +0 -0
  70. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/readings.py +0 -0
  71. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/scripts.py +0 -0
  72. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/translit.py +0 -0
  73. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv.egg-info/SOURCES.txt +0 -0
  74. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv.egg-info/dependency_links.txt +0 -0
  75. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv.egg-info/requires.txt +0 -0
  76. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv.egg-info/top_level.txt +0 -0
  77. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/setup.cfg +0 -0
  78. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_arpa_stress.py +0 -0
  79. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_cangjie.py +0 -0
  80. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_cli.py +0 -0
  81. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_conventions.py +0 -0
  82. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_errors_policy.py +0 -0
  83. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_examples.py +0 -0
  84. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_graph.py +0 -0
  85. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_notation.py +0 -0
  86. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_phonemizers_base.py +0 -0
  87. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_phonemizers_cjk_ar.py +0 -0
  88. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_readings.py +0 -0
  89. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_readings_zh.py +0 -0
  90. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_scripts.py +0 -0
  91. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_scripts_stressonnx_compat.py +0 -0
  92. {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_translit.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scriptconv
3
- Version: 0.0.3a21
3
+ Version: 0.0.3a22
4
4
  Summary: Zero-dependency script & phoneme-notation core — ISO-15924 detection & metadata, IPA↔ARPABET/X-SAMPA/Lexique/Kirshenbaum/Cotovía/RFE, Buckwalter↔Arabic, Hangul→jamo, kana
5
5
  License: Apache-2.0
6
6
  Project-URL: Homepage, https://github.com/TigreGotico/scriptconv
@@ -4,44 +4,65 @@ from scriptconv.phonemizers.enums import Alphabet
4
4
  from scriptconv.phonemizers.base import BasePhonemizer
5
5
 
6
6
 
7
+ # Module-level indirection for the mantoq backend: resolved lazily on first
8
+ # construction, kept as module globals so tests and callers can patch them.
9
+ mantoq = None # the g2p callable
10
+ from scriptconv.notation import mantoq_to_ipa # noqa: E402 (patchable name)
11
+
12
+
13
+ def _load_mantoq_g2p():
14
+ try:
15
+ # an externally-installed upstream mantoq wins
16
+ import mantoq as _pkg
17
+ except ImportError:
18
+ # quarantined vendored copy under its OWN license (the phonetisation
19
+ # core is CC BY-NC 4.0 — see _vendored/mantoq/LICENSE.md); using it
20
+ # is an explicit opt-in by requesting this phonemizer
21
+ from scriptconv.phonemizers import _vendored
22
+ from scriptconv.phonemizers._vendored import mantoq as _pkg
23
+ return _pkg.g2p
24
+
25
+
7
26
  class MantoqPhonemizer(BasePhonemizer):
8
- """Arabic phonemizer wrapping the external ``mantoq`` package.
9
-
10
- Uses an externally-installed ``mantoq`` when present, otherwise the
11
- quarantined vendored copy under ``_vendored/mantoq``distributed under
12
- its OWN license (the phonetisation core is CC BY-NC 4.0, non-commercial;
13
- see its LICENSE.md), NOT this library's Apache-2.0. Never selected
14
- automatically. Kept for compatibility with published models trained on mantoq phoneme
15
- sequences; the Arabic default is :class:`ArbtokPhonemizer`. Output is
16
- IPA (via :func:`scriptconv.notation.mantoq_to_ipa`) or the raw mantoq
17
- inventory with ``alphabet=Alphabet.MANTOQ``.
27
+ """Arabic phonemizer backed by mantoq (Halabi Arabic-Phonetiser pipeline).
28
+
29
+ Distributed under its own license from the quarantined vendored copy —
30
+ the phonetisation core is CC BY-NC 4.0, non-commercial unless an
31
+ externally-installed ``mantoq`` package is present. Never selected
32
+ automatically; :class:`ArbtokPhonemizer` is the Arabic default.
33
+
34
+ Historical contract, preserved for models in the wild: the default
35
+ ``alphabet=Alphabet.BUCKWALTER`` returns the raw mantoq inventory (its
36
+ long-standing, if imprecise, label — ``Alphabet.MANTOQ`` is the accurate
37
+ alias); ``Alphabet.IPA`` converts via
38
+ :func:`scriptconv.notation.mantoq_to_ipa`.
18
39
  """
19
40
 
20
- def __init__(self, alphabet: Alphabet = Alphabet.IPA):
21
- if alphabet not in (Alphabet.IPA, Alphabet.MANTOQ):
22
- raise ValueError("MantoqPhonemizer outputs IPA or MANTOQ")
41
+ def __init__(self, alphabet: Alphabet = Alphabet.BUCKWALTER):
42
+ if alphabet not in (Alphabet.IPA, Alphabet.BUCKWALTER, Alphabet.MANTOQ):
43
+ raise ValueError("unsupported alphabet")
23
44
  super().__init__(alphabet)
24
- try:
25
- # an externally-installed upstream mantoq wins
26
- import mantoq
27
- except ImportError:
28
- # quarantined vendored copy under its OWN license (the
29
- # phonetisation core is CC BY-NC 4.0 — see
30
- # _vendored/mantoq/LICENSE.md); using it is an explicit opt-in
31
- # by requesting this phonemizer
32
- from scriptconv.phonemizers._vendored import mantoq
33
- self._g2p = mantoq.g2p
45
+ global mantoq
46
+ if mantoq is None:
47
+ mantoq = _load_mantoq_g2p()
34
48
 
35
49
  @classmethod
36
50
  def get_lang(cls, target_lang: str) -> str:
37
51
  return cls.match_lang(target_lang, ["ar"])
38
52
 
39
- def phonemize_string(self, text: str, lang: str) -> str:
40
- _, tokens = self._g2p(text)
41
- if self.alphabet == Alphabet.MANTOQ:
42
- return " ".join(tokens)
43
- from scriptconv.notation import mantoq_to_ipa
44
- return mantoq_to_ipa(tokens)
53
+ def phonemize_string(self, text: str, lang: str = "ar") -> str:
54
+ """Phonemize Arabic text via mantoq's G2P.
55
+
56
+ Tokens are joined and the ``_+_`` word separator becomes a space —
57
+ the byte-exact historical behavior; IPA output converts the joined
58
+ string with :func:`mantoq_to_ipa`.
59
+ """
60
+ lang = self.get_lang(lang)
61
+ normalized_text, phonemes = mantoq(text)
62
+ phonemes = "".join(phonemes).replace("_+_", " ")
63
+ if self.alphabet == Alphabet.IPA:
64
+ return mantoq_to_ipa(phonemes)
65
+ return phonemes
45
66
 
46
67
 
47
68
 
@@ -2,7 +2,7 @@
2
2
  VERSION_MAJOR = 0
3
3
  VERSION_MINOR = 0
4
4
  VERSION_BUILD = 3
5
- VERSION_ALPHA = 21
5
+ VERSION_ALPHA = 22
6
6
  # END_VERSION_BLOCK
7
7
 
8
8
  VERSION_STR = f"{VERSION_MAJOR}.{VERSION_MINOR}.{VERSION_BUILD}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scriptconv
3
- Version: 0.0.3a21
3
+ Version: 0.0.3a22
4
4
  Summary: Zero-dependency script & phoneme-notation core — ISO-15924 detection & metadata, IPA↔ARPABET/X-SAMPA/Lexique/Kirshenbaum/Cotovía/RFE, Buckwalter↔Arabic, Hangul→jamo, kana
5
5
  License: Apache-2.0
6
6
  Project-URL: Homepage, https://github.com/TigreGotico/scriptconv
File without changes
File without changes
File without changes