scriptconv 0.0.4a30__tar.gz → 0.0.4a32__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.
- {scriptconv-0.0.4a30/scriptconv.egg-info → scriptconv-0.0.4a32}/PKG-INFO +4 -1
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/pyproject.toml +1 -0
- scriptconv-0.0.4a32/scriptconv/phonemizers/_vendored/matoub_kab/__init__.py +143 -0
- scriptconv-0.0.4a32/scriptconv/phonemizers/ber.py +62 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/enums.py +2 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/mul.py +99 -1
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/registry.py +2 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/version.py +1 -1
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32/scriptconv.egg-info}/PKG-INFO +4 -1
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv.egg-info/SOURCES.txt +4 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv.egg-info/requires.txt +4 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_phonemizers_base.py +2 -1
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_phonemizers_friendly_import_errors.py +5 -1
- scriptconv-0.0.4a32/tests/test_phonemizers_matoub_kab.py +137 -0
- scriptconv-0.0.4a32/tests/test_phonemizers_phonetisaurus.py +201 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/LICENSE +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/README.md +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/requirements.txt +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/__init__.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/__main__.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/cangjie.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/conventions.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/data/__init__.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/data/cangjie5_tc.tsv.gz +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/diacritics.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/graph.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/notation.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/__init__.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/__init__.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/bw2ipa.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/hangul2ipa.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/ko_tables/aspiration.csv +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/ko_tables/assimilation.csv +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/ko_tables/double_coda.csv +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/ko_tables/hanja.tsv +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/ko_tables/ipa.csv +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/ko_tables/neutralization.csv +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/ko_tables/tensification.csv +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/ko_tables/yale.csv +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/shami/__init__.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/shami/codeswitch.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/shami/diacritize.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/shami/dialectal.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/shami/english_g2p.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/shami/espeak.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/shami/frontend.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/shami/levantine_g2p.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/shami/normalize.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/shami/phoneme_inventory.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/vosk_g2p.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_thirdparty/zh_num.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/__init__.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/DATA_LICENSE.md +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/LICENSE.md +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/__init__.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/cli.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/convert.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/data/ipa_universal_graphemes.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/data/registry.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/english.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/fallback.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/g2p.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/aar.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/abi.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/acd.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ach.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/acz.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ada.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ade.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/adj.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/aeb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ael.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/afr.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ags.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/aha.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/aiw.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ajg.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/akp.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/aks.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/aku.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/alz.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/amb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/amf.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/amh.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/anc.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ank.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ann.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/any.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/apd.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ara.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/arb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ary.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/arz.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ato.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/avi.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/avn.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/avu.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ayb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/azo.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bam.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bas.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bav.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bax.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bba.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bbq.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bci.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bcq.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bde.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bdj.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bdu.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bec.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/beh.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bej.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bem.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bex.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bfa.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bfj.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bfm.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bhy.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bib.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bim.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bin.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bjo.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bjt.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bkc.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bkm.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bky.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ble.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/blm.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bng.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bni.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bol.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bom.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bot.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/boy.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/boz.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bqj.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bqp.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bqx.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bsc.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bsq.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/buc.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bud.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/buf.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bum.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bva.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bvm.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bwj.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bxk.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/byn.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/byv.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bza.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/cgg.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/cjk.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/cko.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/cme.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/cop.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/daa.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/daf.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dag.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dbq.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dec.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dgd.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/did.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/din.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dmf.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dnj.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dop-benin.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dop-benin2.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dow.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dsh.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dua.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dug.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dyo.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dyu.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dzd.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ebo.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ebr.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/efi.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ell.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ema.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/emk.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/eng.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/enn.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/etn.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/eto.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ewe.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ewo.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fak.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fat.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ffm.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fia.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/flr.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fmp.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fng.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fod.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fon.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fuc.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fue.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gaa.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gej.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gez.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gfe.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gha.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gho.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gjn.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gng.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/god.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gog.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gou.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/grb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/grr.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gud.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/guk.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gur.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gux.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/guz.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gwa.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gwd.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gwr.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gxx.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/hag.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/har.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/hau-niger.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/hau-nigeria.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/hay.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/hdy.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/hts.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ibo.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/igb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ige.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/igl.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/igo.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ikw.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/irk.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/iso.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/jib.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kab.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kbo.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kbp.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kbr.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kcn.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kde.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kdh.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kdj.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kdn.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kdx.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kea.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kec.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ker.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/khq.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/khy.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kik.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kin.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kiz.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kmb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/knc.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/knf.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/koo.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kpe.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kqs.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/krb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kri.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ksb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ktz.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kuj.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kus.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lad.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lai.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lch.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ldd.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lgg.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lgq.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lig.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lin.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lky.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lln.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lma.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lmd.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lmp.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lns.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/loi.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lok.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lol.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lot.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lpx.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lub.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/luc.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lue.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lug.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lul.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lun.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/luw.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mas.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/maw.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mck.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mcp.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mcu.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mdj.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mev.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mfb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mfe.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mfi.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mfq.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mgc.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mgd.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mgh.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mhi.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mkf.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mkw.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mlg.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mlw.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mmo.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mmy.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mnf.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mnk.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mos.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mpg.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mqu.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mse.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mur.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mwe.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/myf.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/myk.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/myo.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/myx.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mzk.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/naw.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nba.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ncu.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ndb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ndo.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ney.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nfr.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nga.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ngb-zaire.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ngb-zaire2.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ngh.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ngi.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nhb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nhu.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nhw.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nko.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nmn.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nmq.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nnb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nnh.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nnw.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nqo.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nso.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nuj.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nup.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nus.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nwb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nya.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nym.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nzd.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nzi.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ogc.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/oku.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/onw.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/pae.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/pbi.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/pny.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/pov.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/puu.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/pze.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/rel.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/rmt.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/rng.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/run.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sad.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sag-central_african_republic.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sag-congo.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sav.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sef-cote_d_ivoire.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sef-cote_d_ivoire2.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/seh.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/she.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/shk.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/shu.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/shy.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sig.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/siz.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sld.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sna.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/snk-senegal.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/snk.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sok.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sop.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/spa.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/spy.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ssl.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ssn.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ssw.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/suk.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sur.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sus.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/swb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/swh.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sym.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/szg.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tan.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/taq.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/taz.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tbt.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tbz.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ted.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tem.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/teo.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/thv.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/thz.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tig.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tik.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tir.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tmc.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tnr.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/toh.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/toq.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/trc.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tsc.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tso.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tsp.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ttq.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tui.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tum.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tuq.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tuz.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/twi.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tzm.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/uba.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/udu.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ukv.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/urh.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/vag.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/vai.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ven.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/vmw.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/vut.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/wan.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/wib.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/wmw.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/wob.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/wol.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/wwa.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/xho.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/xog.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/xon.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/xrb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/xsm.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/yam.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/yat.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ybb.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/yid.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/yko.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/yor.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/yun.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/zag.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/zen.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ziw.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/zne.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/languages/zul.json +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/loader.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/normalizer.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/africa_g2p/pipeline.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/iqra_phonetiser/LICENSE.md +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/iqra_phonetiser/__init__.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/iqra_phonetiser/phonetiser.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/kog2p/LICENSE.md +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/kog2p/__init__.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/kog2p/rulebook.txt +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/mantoq/LICENSE.md +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/mantoq/__init__.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/mantoq/buck/__init__.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/mantoq/buck/phonetise_buckwalter.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/mantoq/buck/symbols.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/mantoq/buck/tokenization.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/mantoq/num2words.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/_vendored/mantoq/unicode_symbol2label.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/africa.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/ar.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/base.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/en.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/eu.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/fa.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/ghana.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/gl.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/he.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/ja.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/ko.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/mwl.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/o2ipa.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/pt.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/ru.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/shami.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/vi.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/phonemizers/zh.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/py.typed +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/readings.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/scripts.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv/translit.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv.egg-info/dependency_links.txt +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/scriptconv.egg-info/top_level.txt +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/setup.cfg +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_arpa_stress.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_cangjie.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_cli.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_conventions.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_diacritics.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_diacritics_graph.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_errors_policy.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_examples.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_graph.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_he_extra_declares_phonikud.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_notation.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_phonemizers_africa.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_phonemizers_cjk_ar.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_phonemizers_ghana.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_phonemizers_halabi_iqra.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_phonemizers_pt_tugaphone.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_phonemizers_ru.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_readings.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_readings_zh.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_scripts.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_scripts_stressonnx_compat.py +0 -0
- {scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_translit.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scriptconv
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.4a32
|
|
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
|
|
@@ -42,6 +42,9 @@ Requires-Dist: epitran; extra == "epitran"
|
|
|
42
42
|
Provides-Extra: transphone
|
|
43
43
|
Requires-Dist: scriptconv[phonemizers]; extra == "transphone"
|
|
44
44
|
Requires-Dist: transphone; extra == "transphone"
|
|
45
|
+
Provides-Extra: phonetisaurus
|
|
46
|
+
Requires-Dist: scriptconv[phonemizers]; extra == "phonetisaurus"
|
|
47
|
+
Requires-Dist: phonetisaurus; extra == "phonetisaurus"
|
|
45
48
|
Provides-Extra: misaki
|
|
46
49
|
Requires-Dist: scriptconv[phonemizers]; extra == "misaki"
|
|
47
50
|
Requires-Dist: misaki; extra == "misaki"
|
|
@@ -42,6 +42,7 @@ gruut = ["scriptconv[phonemizers]", "gruut"]
|
|
|
42
42
|
goruut = ["scriptconv[phonemizers]", "pygoruut"]
|
|
43
43
|
epitran = ["scriptconv[phonemizers]", "epitran"]
|
|
44
44
|
transphone = ["scriptconv[phonemizers]", "transphone"]
|
|
45
|
+
phonetisaurus = ["scriptconv[phonemizers]", "phonetisaurus"]
|
|
45
46
|
misaki = ["scriptconv[phonemizers]", "misaki"]
|
|
46
47
|
byt5 = ["scriptconv[phonemizers]", "onnxruntime", "numpy"]
|
|
47
48
|
o2i = ["scriptconv[phonemizers]", "orthography2ipa"]
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"""Vendored Kabyle grapheme-to-phoneme rules from agbalu/Matoub-82M.
|
|
2
|
+
|
|
3
|
+
Source: https://huggingface.co/agbalu/Matoub-82M, file ``tokenization_matoub.py``
|
|
4
|
+
at revision ``3d00056f3663d4d1d364e9b12c21230685a0ba9a``, sha256
|
|
5
|
+
``c95fdf4bd23efa649287662a0059d9053d17c8cab4fade383784e084cc422416``, the value
|
|
6
|
+
the model's own ``export.stats.json`` records for that file. Licence Apache-2.0,
|
|
7
|
+
the same licence this repository uses. See ``LICENSE.md`` beside this file.
|
|
8
|
+
|
|
9
|
+
Only the rule functions are kept. The upstream ``MatoubTokenizer`` class is
|
|
10
|
+
dropped: it subclasses ``transformers.PreTrainedTokenizer``, and scriptconv
|
|
11
|
+
emits phoneme strings, not model ids. The ``vocab.json`` constant goes with it.
|
|
12
|
+
The rules themselves are unchanged, because a caller that feeds Matoub-82M needs
|
|
13
|
+
the exact string that model was fitted on.
|
|
14
|
+
|
|
15
|
+
The upstream file states that these rules are a copy of ``agbalu.tts.g2p`` and
|
|
16
|
+
``agbalu.tts.kokoro``, kept in step by a test in that project. This copy is one
|
|
17
|
+
step further away, so ``tests/test_phonemizers_matoub_kab.py`` holds it to
|
|
18
|
+
measured outputs.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from __future__ import annotations
|
|
22
|
+
|
|
23
|
+
import re
|
|
24
|
+
from typing import Final
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
VOWELS: Final = frozenset("aeiou")
|
|
28
|
+
|
|
29
|
+
BACKING_TRIGGERS: Final = frozenset("ḍṣṭẓṛqɣx")
|
|
30
|
+
|
|
31
|
+
SPIRANTS: Final[dict[str, tuple[str, str]]] = {
|
|
32
|
+
"b": ("β", "b"),
|
|
33
|
+
"d": ("ð", "d"),
|
|
34
|
+
"g": ("ʝ", "ɡ"),
|
|
35
|
+
"k": ("ç", "k"),
|
|
36
|
+
"t": ("θ", "t"),
|
|
37
|
+
"ḍ": ("ðˤ", "dˤ"),
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
PLAIN: Final[dict[str, str]] = {
|
|
41
|
+
"a": "æ",
|
|
42
|
+
"c": "ʃ",
|
|
43
|
+
"e": "ə",
|
|
44
|
+
"f": "f",
|
|
45
|
+
"h": "h",
|
|
46
|
+
"i": "i",
|
|
47
|
+
"j": "ʒ",
|
|
48
|
+
"l": "l",
|
|
49
|
+
"m": "m",
|
|
50
|
+
"n": "n",
|
|
51
|
+
"o": "o",
|
|
52
|
+
"p": "p",
|
|
53
|
+
"q": "q",
|
|
54
|
+
"r": "r",
|
|
55
|
+
"s": "s",
|
|
56
|
+
"u": "u",
|
|
57
|
+
"v": "v",
|
|
58
|
+
"w": "w",
|
|
59
|
+
"x": "χ",
|
|
60
|
+
"y": "j",
|
|
61
|
+
"z": "z",
|
|
62
|
+
"č": "t͡ʃ",
|
|
63
|
+
"ǧ": "d͡ʒ",
|
|
64
|
+
"ɛ": "ʕ",
|
|
65
|
+
"ɣ": "ʁ",
|
|
66
|
+
"ḥ": "ħ",
|
|
67
|
+
"ṛ": "rˤ",
|
|
68
|
+
"ṣ": "sˤ",
|
|
69
|
+
"ṭ": "tˤ",
|
|
70
|
+
"ẓ": "zˤ",
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
NASAL_ASSIMILATION: Final[dict[str, str]] = {"f": "m", "m": "m", "y": "ɲ", "q": "ŋ", "x": "ŋ"}
|
|
74
|
+
|
|
75
|
+
FOLD: Final[dict[str, str]] = {"t͡ʃ": "ʧ", "d͡ʒ": "ʤ"}
|
|
76
|
+
"""Tie-bar sequences the base model already carries as single symbols."""
|
|
77
|
+
|
|
78
|
+
LEGACY_TENSE_T: Final = "ţ"
|
|
79
|
+
LENGTH: Final = "ː"
|
|
80
|
+
BOUNDARY: Final = " "
|
|
81
|
+
|
|
82
|
+
_SPLIT: Final = re.compile(r"[\s\-]+")
|
|
83
|
+
_STRIP: Final = "«»\"'“”‘’.,;:!?()[]{}…"
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
class PhonemeError(ValueError):
|
|
87
|
+
"""A character with no rule."""
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def _segment(word: str) -> list[tuple[str, bool]]:
|
|
91
|
+
segments: list[tuple[str, bool]] = []
|
|
92
|
+
index = 0
|
|
93
|
+
while index < len(word):
|
|
94
|
+
char = word[index]
|
|
95
|
+
paired = index + 1 < len(word) and word[index + 1] == char and char not in VOWELS
|
|
96
|
+
segments.append((char, paired))
|
|
97
|
+
index += 2 if paired else 1
|
|
98
|
+
return segments
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def _backed(chars: list[str], position: int) -> bool:
|
|
102
|
+
before = chars[position - 1] if position > 0 else ""
|
|
103
|
+
after = chars[position + 1] if position + 1 < len(chars) else ""
|
|
104
|
+
return before in BACKING_TRIGGERS or after in BACKING_TRIGGERS
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def phonemize_word(word: str) -> str:
|
|
108
|
+
"""One orthographic word to IPA. Raises on any character without a rule."""
|
|
109
|
+
segments = _segment(word.casefold())
|
|
110
|
+
chars = [char for char, _ in segments]
|
|
111
|
+
out: list[str] = []
|
|
112
|
+
for position, (char, geminate) in enumerate(segments):
|
|
113
|
+
if char == LEGACY_TENSE_T:
|
|
114
|
+
out.append(SPIRANTS["t"][1] + LENGTH)
|
|
115
|
+
continue
|
|
116
|
+
if char in SPIRANTS:
|
|
117
|
+
short, stop = SPIRANTS[char]
|
|
118
|
+
out.append(stop + LENGTH if geminate else short)
|
|
119
|
+
continue
|
|
120
|
+
if char not in PLAIN:
|
|
121
|
+
message = f"no rule for {char!r} (U+{ord(char):04X}) in {word!r}"
|
|
122
|
+
raise PhonemeError(message)
|
|
123
|
+
if char == "a" and _backed(chars, position):
|
|
124
|
+
symbol = "ɑ"
|
|
125
|
+
elif char == "n" and not geminate and position + 1 < len(chars):
|
|
126
|
+
symbol = NASAL_ASSIMILATION.get(chars[position + 1], PLAIN["n"])
|
|
127
|
+
else:
|
|
128
|
+
symbol = PLAIN[char]
|
|
129
|
+
out.append(symbol + LENGTH if geminate else symbol)
|
|
130
|
+
return "".join(out)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def fold(ipa: str) -> str:
|
|
134
|
+
"""Rewrite tie-bar affricates onto the base model's own single symbols."""
|
|
135
|
+
for sequence, symbol in FOLD.items():
|
|
136
|
+
ipa = ipa.replace(sequence, symbol)
|
|
137
|
+
return ipa
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def phonemize(text: str) -> str:
|
|
141
|
+
"""A Kabyle sentence to the phoneme string the model was fitted on."""
|
|
142
|
+
words = [token.strip(_STRIP) for token in _SPLIT.split(text) if token.strip(_STRIP)]
|
|
143
|
+
return fold(BOUNDARY.join(phonemize_word(word) for word in words))
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"""Berber phonemizers.
|
|
2
|
+
|
|
3
|
+
Kabyle (``kab``) through the rule set that ``agbalu/Matoub-82M`` was fitted on.
|
|
4
|
+
|
|
5
|
+
This is deliberately a separate route from :class:`AfricaG2PPhonemizer`, which
|
|
6
|
+
also answers ``kab``. The two are different phonemizers and their output
|
|
7
|
+
differs, so they are not interchangeable:
|
|
8
|
+
|
|
9
|
+
=============== =========================== ==============
|
|
10
|
+
text africa-g2p Matoub
|
|
11
|
+
=============== =========================== ==============
|
|
12
|
+
``taddart`` ``t a ð ð a r t`` ``θædːærθ``
|
|
13
|
+
``ameqqran`` ``a m ə q q r a n`` ``æməqːræn``
|
|
14
|
+
``aqcic`` ``a q ʃ i ʃ`` ``ɑqʃiʃ``
|
|
15
|
+
=============== =========================== ==============
|
|
16
|
+
|
|
17
|
+
africa-g2p does not spirantise the initial ``t``, writes gemination as a
|
|
18
|
+
doubled symbol rather than length, and does not back ``/a/`` beside a backing
|
|
19
|
+
consonant. A caller driving Matoub-82M needs the Matoub string: the other one
|
|
20
|
+
carries symbols that model has no embedding row for.
|
|
21
|
+
"""
|
|
22
|
+
from typing import List
|
|
23
|
+
|
|
24
|
+
from scriptconv.phonemizers.base import BasePhonemizer
|
|
25
|
+
from scriptconv.phonemizers.enums import Alphabet
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class MatoubKabylePhonemizer(BasePhonemizer):
|
|
29
|
+
"""Kabyle Latin orthography to the IPA string ``agbalu/Matoub-82M`` reads.
|
|
30
|
+
|
|
31
|
+
The rules are vendored under ``_vendored/matoub_kab`` (Apache-2.0, the same
|
|
32
|
+
licence as this repository) and need nothing outside the standard library.
|
|
33
|
+
|
|
34
|
+
The rules raise on a character they have no rule for, and that is kept on
|
|
35
|
+
purpose. The upstream file records that silent deletion already cost three
|
|
36
|
+
Kabyle consonants once, so an unknown symbol is reported rather than
|
|
37
|
+
dropped.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
_LANGS: List[str] = ["kab"]
|
|
41
|
+
|
|
42
|
+
def __init__(self):
|
|
43
|
+
super().__init__(Alphabet.IPA)
|
|
44
|
+
|
|
45
|
+
@classmethod
|
|
46
|
+
def supported_langs(cls) -> List[str]:
|
|
47
|
+
return list(cls._LANGS)
|
|
48
|
+
|
|
49
|
+
@classmethod
|
|
50
|
+
def get_lang(cls, target_lang: str) -> str:
|
|
51
|
+
"""Validate *target_lang* against the one language these rules cover.
|
|
52
|
+
|
|
53
|
+
Raises:
|
|
54
|
+
ValueError: if the language code is not Kabyle.
|
|
55
|
+
"""
|
|
56
|
+
return cls.match_lang(target_lang, cls._LANGS)
|
|
57
|
+
|
|
58
|
+
def phonemize_string(self, text: str, lang: str = "kab") -> str:
|
|
59
|
+
self.get_lang(lang)
|
|
60
|
+
from scriptconv.phonemizers._vendored.matoub_kab import phonemize
|
|
61
|
+
|
|
62
|
+
return phonemize(text)
|
|
@@ -52,6 +52,7 @@ class Phonemizer(str, Enum):
|
|
|
52
52
|
BYT5 = "byt5"
|
|
53
53
|
CHARSIU = "charsiu" # technically same as byt5, but needs special handling for whitespace
|
|
54
54
|
TRANSPHONE = "transphone"
|
|
55
|
+
PHONETISAURUS = "phonetisaurus" # WFST g2p; language and symbols come from the model
|
|
55
56
|
MIRANDESE = "mwl_phonemizer"
|
|
56
57
|
|
|
57
58
|
DEEPPHONEMIZER = "deepphonemizer" # en
|
|
@@ -85,3 +86,4 @@ class Phonemizer(str, Enum):
|
|
|
85
86
|
ORTHOGRAPHY2IPA = "orthography2ipa" # multilingual data-driven IPA (o2i lattice)
|
|
86
87
|
AFRICA_G2P = "africa_g2p" # rule-based G2P for 400+ African languages (native units or IPA)
|
|
87
88
|
GHANA_G2P = "ghana_g2p" # africa-g2p rules patched for 42 Ghanaian languages (native units or IPA)
|
|
89
|
+
MATOUB_KAB = "matoub_kab" # kabyle — the rule set agbalu/Matoub-82M was fitted on
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
import numpy as np
|
|
10
10
|
|
|
11
11
|
from scriptconv.phonemizers.enums import Alphabet
|
|
12
|
-
from scriptconv.phonemizers.base import BasePhonemizer
|
|
12
|
+
from scriptconv.phonemizers.base import BasePhonemizer, _check_alphabet
|
|
13
13
|
# minimal ONNX session construction — scriptconv has no provider
|
|
14
14
|
# machinery; consumers wanting CUDA/etc. pass providers= explicitly
|
|
15
15
|
ProviderSpec = str
|
|
@@ -1465,3 +1465,101 @@ class TransphonePhonemizer(BasePhonemizer):
|
|
|
1465
1465
|
[p if p != "<SPACE>" else " "
|
|
1466
1466
|
for p in pho.tokenize(text, use_space=True)]
|
|
1467
1467
|
).strip()
|
|
1468
|
+
|
|
1469
|
+
|
|
1470
|
+
class PhonetisaurusPhonemizer(BasePhonemizer):
|
|
1471
|
+
"""WFST grapheme-to-phoneme, through the ``phonetisaurus`` bindings.
|
|
1472
|
+
|
|
1473
|
+
https://github.com/AdolfVonKleist/Phonetisaurus
|
|
1474
|
+
|
|
1475
|
+
Phonetisaurus has no rules and no language list of its own: all of its
|
|
1476
|
+
knowledge is in one trained FST, so the language and the symbol set are
|
|
1477
|
+
properties of the MODEL, not of this wrapper. That has three consequences,
|
|
1478
|
+
and each one is a design decision rather than a limitation to work around:
|
|
1479
|
+
|
|
1480
|
+
* ``model`` is required. scriptconv never downloads a model (the same rule
|
|
1481
|
+
:class:`ByT5Phonemizer` follows). ``MODEL_SOURCES`` names where published
|
|
1482
|
+
models live; a caller resolves one and passes the path.
|
|
1483
|
+
* ``alphabet`` is declared by the caller, because only the caller knows
|
|
1484
|
+
what the model was trained to emit. A CMUdict-trained model emits ARPA,
|
|
1485
|
+
an o2i-trained or espeak-trained one emits IPA. The wrapper cannot read
|
|
1486
|
+
it off the FST, so it does not guess.
|
|
1487
|
+
* There is no language check and no ``LANG_DEFAULTS`` entry. A wrapper that
|
|
1488
|
+
cannot know its own model's language must not be any language's default.
|
|
1489
|
+
|
|
1490
|
+
``phonetisaurus`` ships the binaries it drives, so no system package is
|
|
1491
|
+
needed. Training a model needs the bundled ``estimate-ngram``, which is not
|
|
1492
|
+
exercised here: this wrapper only applies a model.
|
|
1493
|
+
"""
|
|
1494
|
+
|
|
1495
|
+
#: Where published FSTs come from. Documentation, never a download.
|
|
1496
|
+
MODEL_SOURCES = {
|
|
1497
|
+
"rhasspy": "https://github.com/rhasspy/*-g2p (one g2p.fst per language)",
|
|
1498
|
+
"cmudict": "trained from CMUdict with 'phonetisaurus train' (ARPA symbols)",
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1501
|
+
#: Symbol sets a Phonetisaurus model is known to be trained on. The wrapper
|
|
1502
|
+
#: passes the model's symbols through untouched, so this list says which
|
|
1503
|
+
#: declarations are meaningful, not which conversions happen.
|
|
1504
|
+
SUPPORTED_ALPHABETS = [Alphabet.IPA, Alphabet.ARPA, Alphabet.SAMPA,
|
|
1505
|
+
Alphabet.XSAMPA, Alphabet.GRAPHEMES]
|
|
1506
|
+
|
|
1507
|
+
def __init__(self, model: Optional[str] = None,
|
|
1508
|
+
alphabet: Alphabet = Alphabet.IPA,
|
|
1509
|
+
nbest: int = 1,
|
|
1510
|
+
separator: str = " ",
|
|
1511
|
+
normalizer=None):
|
|
1512
|
+
"""
|
|
1513
|
+
Args:
|
|
1514
|
+
model: path to a trained Phonetisaurus FST. Required.
|
|
1515
|
+
alphabet: the symbol set the model emits. The caller states it.
|
|
1516
|
+
nbest: how many pronunciations the engine ranks per word. The
|
|
1517
|
+
BEST one is returned whatever this is, so a higher value
|
|
1518
|
+
changes the search, not the output shape. ``predict`` prints
|
|
1519
|
+
one line per ranked pronunciation, best first, and yields one
|
|
1520
|
+
pair per line, so the wrapper keeps the FIRST pair it sees for
|
|
1521
|
+
a word and drops the rest.
|
|
1522
|
+
separator: joins the symbols of one word. Models are trained on
|
|
1523
|
+
symbol sequences, so the parts need a separator to stay
|
|
1524
|
+
readable; pass "" for a bare string.
|
|
1525
|
+
normalizer: see :class:`BasePhonemizer`.
|
|
1526
|
+
"""
|
|
1527
|
+
_check_alphabet(self, alphabet, self.SUPPORTED_ALPHABETS)
|
|
1528
|
+
super().__init__(alphabet, normalizer=normalizer)
|
|
1529
|
+
try:
|
|
1530
|
+
import phonetisaurus
|
|
1531
|
+
except ImportError as e:
|
|
1532
|
+
raise ImportError(
|
|
1533
|
+
"phonetisaurus is required for the Phonetisaurus phonemizer. "
|
|
1534
|
+
"Install it with 'pip install phonetisaurus' "
|
|
1535
|
+
"(or 'pip install scriptconv[phonetisaurus]')."
|
|
1536
|
+
) from e
|
|
1537
|
+
if not model or not os.path.isfile(model):
|
|
1538
|
+
raise ValueError(
|
|
1539
|
+
"Phonetisaurus phonemization needs a local trained FST: pass "
|
|
1540
|
+
"model=<path> (scriptconv never downloads — see "
|
|
1541
|
+
"MODEL_SOURCES for where published models live)")
|
|
1542
|
+
self.phonetisaurus = phonetisaurus
|
|
1543
|
+
self.model = model
|
|
1544
|
+
self.nbest = nbest
|
|
1545
|
+
self.separator = separator
|
|
1546
|
+
|
|
1547
|
+
def phonemize_string(self, text: str, lang: str) -> str:
|
|
1548
|
+
"""Phonemize ``text``. ``lang`` is accepted and not used: the model
|
|
1549
|
+
decides the language, so a language argument here would claim a
|
|
1550
|
+
routing this wrapper does not do."""
|
|
1551
|
+
words = text.split()
|
|
1552
|
+
if not words:
|
|
1553
|
+
return ""
|
|
1554
|
+
# predict() yields (word, symbols) and may reorder or drop a word it
|
|
1555
|
+
# cannot read, so the result is indexed by word rather than zipped.
|
|
1556
|
+
#
|
|
1557
|
+
# With nbest > 1 it yields one pair PER RANKED PRONUNCIATION, best
|
|
1558
|
+
# first, so a word appears more than once. dict() would keep the last
|
|
1559
|
+
# pair, which is the WORST-ranked reading. Keep the first instead.
|
|
1560
|
+
guesses: Dict[str, List[str]] = {}
|
|
1561
|
+
for word, symbols in self.phonetisaurus.predict(
|
|
1562
|
+
words, self.model, nbest=self.nbest):
|
|
1563
|
+
guesses.setdefault(word, symbols)
|
|
1564
|
+
return " ".join(self.separator.join(guesses[w])
|
|
1565
|
+
for w in words if w in guesses)
|
|
@@ -35,6 +35,7 @@ PHONEMIZER_REGISTRY: Dict[Phonemizer, Tuple[str, str, Optional[str]]] = {
|
|
|
35
35
|
_P.GORUUT: (f"{_BASE}.mul", "GoruutPhonemizer", "goruut"),
|
|
36
36
|
_P.EPITRAN: (f"{_BASE}.mul", "EpitranPhonemizer", "epitran"),
|
|
37
37
|
_P.TRANSPHONE: (f"{_BASE}.mul", "TransphonePhonemizer", "transphone"),
|
|
38
|
+
_P.PHONETISAURUS: (f"{_BASE}.mul", "PhonetisaurusPhonemizer", "phonetisaurus"),
|
|
38
39
|
_P.BYT5: (f"{_BASE}.mul", "ByT5Phonemizer", "byt5"),
|
|
39
40
|
_P.CHARSIU: (f"{_BASE}.mul", "CharsiuPhonemizer", "byt5"),
|
|
40
41
|
_P.MISAKI: (f"{_BASE}.mul", "MisakiPhonemizer", "misaki"),
|
|
@@ -58,6 +59,7 @@ PHONEMIZER_REGISTRY: Dict[Phonemizer, Tuple[str, str, Optional[str]]] = {
|
|
|
58
59
|
_P.ORTHOGRAPHY2IPA: (f"{_BASE}.o2ipa", "Orthography2IPAPhonemizer", "o2i"),
|
|
59
60
|
# vendored (not an optional extra) -- see _vendored/africa_g2p
|
|
60
61
|
_P.AFRICA_G2P: (f"{_BASE}.africa", "AfricaG2PPhonemizer", None),
|
|
62
|
+
_P.MATOUB_KAB: (f"{_BASE}.ber", "MatoubKabylePhonemizer", None),
|
|
61
63
|
_P.GHANA_G2P: (f"{_BASE}.ghana", "GhanaG2PPhonemizer", "ghana"),
|
|
62
64
|
# ported in the CJK/AR stage; registered here so no member is silently
|
|
63
65
|
# unmapped — resolution raises ImportError naming the pending extra
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scriptconv
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.4a32
|
|
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
|
|
@@ -42,6 +42,9 @@ Requires-Dist: epitran; extra == "epitran"
|
|
|
42
42
|
Provides-Extra: transphone
|
|
43
43
|
Requires-Dist: scriptconv[phonemizers]; extra == "transphone"
|
|
44
44
|
Requires-Dist: transphone; extra == "transphone"
|
|
45
|
+
Provides-Extra: phonetisaurus
|
|
46
|
+
Requires-Dist: scriptconv[phonemizers]; extra == "phonetisaurus"
|
|
47
|
+
Requires-Dist: phonetisaurus; extra == "phonetisaurus"
|
|
45
48
|
Provides-Extra: misaki
|
|
46
49
|
Requires-Dist: scriptconv[phonemizers]; extra == "misaki"
|
|
47
50
|
Requires-Dist: misaki; extra == "misaki"
|
|
@@ -25,6 +25,7 @@ scriptconv/phonemizers/__init__.py
|
|
|
25
25
|
scriptconv/phonemizers/africa.py
|
|
26
26
|
scriptconv/phonemizers/ar.py
|
|
27
27
|
scriptconv/phonemizers/base.py
|
|
28
|
+
scriptconv/phonemizers/ber.py
|
|
28
29
|
scriptconv/phonemizers/en.py
|
|
29
30
|
scriptconv/phonemizers/enums.py
|
|
30
31
|
scriptconv/phonemizers/eu.py
|
|
@@ -494,6 +495,7 @@ scriptconv/phonemizers/_vendored/mantoq/buck/__init__.py
|
|
|
494
495
|
scriptconv/phonemizers/_vendored/mantoq/buck/phonetise_buckwalter.py
|
|
495
496
|
scriptconv/phonemizers/_vendored/mantoq/buck/symbols.py
|
|
496
497
|
scriptconv/phonemizers/_vendored/mantoq/buck/tokenization.py
|
|
498
|
+
scriptconv/phonemizers/_vendored/matoub_kab/__init__.py
|
|
497
499
|
tests/test_arpa_stress.py
|
|
498
500
|
tests/test_cangjie.py
|
|
499
501
|
tests/test_cli.py
|
|
@@ -511,6 +513,8 @@ tests/test_phonemizers_cjk_ar.py
|
|
|
511
513
|
tests/test_phonemizers_friendly_import_errors.py
|
|
512
514
|
tests/test_phonemizers_ghana.py
|
|
513
515
|
tests/test_phonemizers_halabi_iqra.py
|
|
516
|
+
tests/test_phonemizers_matoub_kab.py
|
|
517
|
+
tests/test_phonemizers_phonetisaurus.py
|
|
514
518
|
tests/test_phonemizers_pt_tugaphone.py
|
|
515
519
|
tests/test_phonemizers_ru.py
|
|
516
520
|
tests/test_readings.py
|
|
@@ -26,7 +26,8 @@ class TestEnums(unittest.TestCase):
|
|
|
26
26
|
self.assertEqual(Alphabet.XSAMPA.value, "x-sampa")
|
|
27
27
|
self.assertEqual(Alphabet.VOSK.value, "vosk")
|
|
28
28
|
self.assertEqual(Phonemizer.GHANA_G2P.value, "ghana_g2p")
|
|
29
|
-
self.assertEqual(
|
|
29
|
+
self.assertEqual(Phonemizer.MATOUB_KAB.value, "matoub_kab")
|
|
30
|
+
self.assertEqual(len(list(Phonemizer)), 48) # +HALABI, +IQRA, +GHANA_G2P, +PHONETISAURUS, +MATOUB_KAB
|
|
30
31
|
self.assertEqual(len(list(Alphabet)), 23) # incl. HALABI, VOSK, AFRICA_G2P
|
|
31
32
|
|
|
32
33
|
|
{scriptconv-0.0.4a30 → scriptconv-0.0.4a32}/tests/test_phonemizers_friendly_import_errors.py
RENAMED
|
@@ -51,6 +51,7 @@ CASES = {
|
|
|
51
51
|
Phonemizer.GRUUT: ("gruut", _trigger_gruut),
|
|
52
52
|
Phonemizer.GORUUT: ("pygoruut", _trigger_construct),
|
|
53
53
|
Phonemizer.EPITRAN: ("epitran", _trigger_construct),
|
|
54
|
+
Phonemizer.PHONETISAURUS: ("phonetisaurus", _trigger_construct),
|
|
54
55
|
Phonemizer.TRANSPHONE: ("transphone", _trigger_construct),
|
|
55
56
|
Phonemizer.DEEPPHONEMIZER: ("dp", _trigger_construct),
|
|
56
57
|
Phonemizer.OPENPHONEMIZER: ("openphonemizer", _trigger_construct),
|
|
@@ -68,7 +69,7 @@ class TestLazyBackendImportsAreFriendly(unittest.TestCase):
|
|
|
68
69
|
def test_all_documented_backends_covered(self):
|
|
69
70
|
# keeps this test list honest if a new Phonemizer member is added
|
|
70
71
|
# backed by one of the wrapper modules touched by this convention
|
|
71
|
-
self.assertEqual(len(CASES),
|
|
72
|
+
self.assertEqual(len(CASES), 16)
|
|
72
73
|
|
|
73
74
|
def _assert_friendly(self, member):
|
|
74
75
|
module_name, trigger = CASES[member]
|
|
@@ -97,6 +98,9 @@ class TestLazyBackendImportsAreFriendly(unittest.TestCase):
|
|
|
97
98
|
def test_transphone(self):
|
|
98
99
|
self._assert_friendly(Phonemizer.TRANSPHONE)
|
|
99
100
|
|
|
101
|
+
def test_phonetisaurus(self):
|
|
102
|
+
self._assert_friendly(Phonemizer.PHONETISAURUS)
|
|
103
|
+
|
|
100
104
|
def test_deepphonemizer(self):
|
|
101
105
|
self._assert_friendly(Phonemizer.DEEPPHONEMIZER)
|
|
102
106
|
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"""The Matoub Kabyle route: it phonemizes, and it is not the africa-g2p route."""
|
|
2
|
+
import ast
|
|
3
|
+
import pathlib
|
|
4
|
+
import sys
|
|
5
|
+
import tempfile
|
|
6
|
+
import unittest
|
|
7
|
+
|
|
8
|
+
from scriptconv.phonemizers import ber as _ber_module
|
|
9
|
+
from scriptconv.phonemizers._vendored import matoub_kab as _vendored_module
|
|
10
|
+
from scriptconv.phonemizers.ber import MatoubKabylePhonemizer
|
|
11
|
+
from scriptconv.phonemizers.enums import Alphabet, Phonemizer
|
|
12
|
+
from scriptconv.phonemizers.registry import PHONEMIZER_REGISTRY, get_phonemizer
|
|
13
|
+
|
|
14
|
+
_VENDORED = pathlib.Path(_vendored_module.__file__)
|
|
15
|
+
_BER = pathlib.Path(_ber_module.__file__)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _import_roots(path):
|
|
19
|
+
"""Root module of every import statement in *path*.
|
|
20
|
+
|
|
21
|
+
Relative imports are skipped: they cannot reach outside the package.
|
|
22
|
+
"""
|
|
23
|
+
roots = set()
|
|
24
|
+
for node in ast.walk(ast.parse(path.read_text(encoding="utf-8"))):
|
|
25
|
+
if isinstance(node, ast.Import):
|
|
26
|
+
roots.update(alias.name.split(".")[0] for alias in node.names)
|
|
27
|
+
elif isinstance(node, ast.ImportFrom) and not node.level and node.module:
|
|
28
|
+
roots.add(node.module.split(".")[0])
|
|
29
|
+
return roots
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def _tmp_module(source):
|
|
33
|
+
handle = tempfile.NamedTemporaryFile("w", suffix=".py", delete=False,
|
|
34
|
+
encoding="utf-8")
|
|
35
|
+
with handle:
|
|
36
|
+
handle.write(source)
|
|
37
|
+
return pathlib.Path(handle.name)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# Measured against the reference rules in agbalu/Matoub-82M
|
|
41
|
+
# tokenization_matoub.py at revision 3d00056f, on 2026-09-25.
|
|
42
|
+
REFERENCE = {
|
|
43
|
+
"taddart": "θædːærθ",
|
|
44
|
+
"ameqqran": "æməqːræn",
|
|
45
|
+
"azul fell awen": "æzul fəlː æwən",
|
|
46
|
+
"tamurt n leqbayel": "θæmurθ n ləqβæjəl",
|
|
47
|
+
"aqcic yecca aɣrum": "ɑqʃiʃ jəʃːæ ɑʁrum",
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class TestMatoubKabyle(unittest.TestCase):
|
|
52
|
+
def setUp(self):
|
|
53
|
+
self.p = MatoubKabylePhonemizer()
|
|
54
|
+
|
|
55
|
+
def test_phonemizes_real_words(self):
|
|
56
|
+
for text, expected in REFERENCE.items():
|
|
57
|
+
with self.subTest(text=text):
|
|
58
|
+
self.assertEqual(self.p.phonemize_string(text, "kab"), expected)
|
|
59
|
+
|
|
60
|
+
def test_the_rules_that_make_this_route_its_own(self):
|
|
61
|
+
# Each assertion is one rule africa-g2p does not apply. If these ever
|
|
62
|
+
# start matching africa-g2p, the two routes have been conflated.
|
|
63
|
+
# spirantisation: t -> θ, b -> β, d -> ð
|
|
64
|
+
self.assertEqual(self.p.phonemize_string("tamurt", "kab"), "θæmurθ")
|
|
65
|
+
# gemination is length on the restored stop, not a doubled symbol
|
|
66
|
+
self.assertEqual(self.p.phonemize_string("taddart", "kab"), "θædːærθ")
|
|
67
|
+
self.assertNotIn("ðð", self.p.phonemize_string("taddart", "kab"))
|
|
68
|
+
# /a/ backs to ɑ beside a backing consonant, and stays æ otherwise
|
|
69
|
+
self.assertTrue(self.p.phonemize_string("aqcic", "kab").startswith("ɑ"))
|
|
70
|
+
self.assertTrue(self.p.phonemize_string("azul", "kab").startswith("æ"))
|
|
71
|
+
|
|
72
|
+
def test_registry_entry_resolves(self):
|
|
73
|
+
self.assertIn(Phonemizer.MATOUB_KAB, PHONEMIZER_REGISTRY)
|
|
74
|
+
module, name, extra = PHONEMIZER_REGISTRY[Phonemizer.MATOUB_KAB]
|
|
75
|
+
self.assertEqual(name, "MatoubKabylePhonemizer")
|
|
76
|
+
# no extra: the rules are vendored and need only the standard library
|
|
77
|
+
self.assertIsNone(extra)
|
|
78
|
+
self.assertIsInstance(get_phonemizer(Phonemizer.MATOUB_KAB),
|
|
79
|
+
MatoubKabylePhonemizer)
|
|
80
|
+
|
|
81
|
+
def test_emits_ipa_and_chunks(self):
|
|
82
|
+
self.assertEqual(self.p.alphabet, Alphabet.IPA)
|
|
83
|
+
self.assertEqual(self.p.phonemize("azul", "kab"), [["æ", "z", "u", "l"]])
|
|
84
|
+
|
|
85
|
+
def test_only_kabyle(self):
|
|
86
|
+
self.assertEqual(MatoubKabylePhonemizer.supported_langs(), ["kab"])
|
|
87
|
+
for other in ("eng", "fra", "ber"):
|
|
88
|
+
with self.subTest(lang=other):
|
|
89
|
+
with self.assertRaises(ValueError):
|
|
90
|
+
self.p.phonemize_string("azul", other)
|
|
91
|
+
|
|
92
|
+
def test_an_unknown_character_raises_and_is_never_dropped(self):
|
|
93
|
+
# The upstream file records that silent deletion cost three Kabyle
|
|
94
|
+
# consonants once. A symbol with no rule must be reported.
|
|
95
|
+
with self.assertRaises(ValueError):
|
|
96
|
+
self.p.phonemize_string("aβc", "kab")
|
|
97
|
+
|
|
98
|
+
def test_the_vendored_rules_need_no_third_party_import(self):
|
|
99
|
+
# Read the property off the source, not off sys.modules. An earlier
|
|
100
|
+
# form of this test asserted that "transformers" and "torch" were
|
|
101
|
+
# absent from sys.modules; neither is installed, so the assertion was
|
|
102
|
+
# true before the module was imported at all, and adding
|
|
103
|
+
# `import packaging` to the vendored file left it passing.
|
|
104
|
+
#
|
|
105
|
+
# The property is load-bearing: it is why the registry row carries
|
|
106
|
+
# extra=None, and why the rules are vendored instead of depended on. A
|
|
107
|
+
# convenience import added later would keep get_phonemizer working on
|
|
108
|
+
# the machine that added it and fail as an ImportError on a user
|
|
109
|
+
# install.
|
|
110
|
+
for path in (_VENDORED, _BER):
|
|
111
|
+
with self.subTest(path=path.name):
|
|
112
|
+
for root in _import_roots(path):
|
|
113
|
+
self.assertTrue(
|
|
114
|
+
root in sys.stdlib_module_names or root == "scriptconv",
|
|
115
|
+
f"{path.name} imports {root!r}, which is neither the "
|
|
116
|
+
f"standard library nor scriptconv itself; the registry "
|
|
117
|
+
f"row advertises this backend as needing no extra")
|
|
118
|
+
|
|
119
|
+
def test_that_import_check_fails_on_a_planted_third_party_import(self):
|
|
120
|
+
# The control. Without it the check above could be vacuous for a new
|
|
121
|
+
# reason: a parser that collects nothing also reports nothing.
|
|
122
|
+
planted = _tmp_module("import packaging\nimport re\n")
|
|
123
|
+
self.assertEqual(_import_roots(planted), {"packaging", "re"})
|
|
124
|
+
self.assertNotIn("packaging", sys.stdlib_module_names)
|
|
125
|
+
# and a clean module yields only allowed roots
|
|
126
|
+
clean = _tmp_module("import re\nfrom typing import Final\n")
|
|
127
|
+
self.assertEqual(_import_roots(clean), {"re", "typing"})
|
|
128
|
+
|
|
129
|
+
def test_the_import_reader_sees_the_real_files(self):
|
|
130
|
+
# A reader that silently found no imports would make the check above
|
|
131
|
+
# pass for the wrong reason, so pin what it actually collects.
|
|
132
|
+
self.assertIn("re", _import_roots(_VENDORED))
|
|
133
|
+
self.assertIn("scriptconv", _import_roots(_BER))
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
if __name__ == "__main__":
|
|
137
|
+
unittest.main()
|