ipakit 0.2.0__tar.gz → 0.3.0__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 (1088) hide show
  1. ipakit-0.3.0/.github/workflows/ci.yml +297 -0
  2. ipakit-0.3.0/.github/workflows/publish.yml +68 -0
  3. ipakit-0.3.0/.pre-commit-config.yaml +64 -0
  4. ipakit-0.3.0/CHANGELOG.md +394 -0
  5. ipakit-0.3.0/MANIFEST.in +52 -0
  6. ipakit-0.3.0/Makefile +185 -0
  7. ipakit-0.3.0/PKG-INFO +380 -0
  8. ipakit-0.3.0/README.md +329 -0
  9. ipakit-0.3.0/docs/README.md +123 -0
  10. ipakit-0.3.0/docs/articulatory-data.md +387 -0
  11. ipakit-0.3.0/docs/calculus.md +414 -0
  12. ipakit-0.3.0/docs/capabilities.md +234 -0
  13. ipakit-0.3.0/docs/cli-api-sync.md +75 -0
  14. ipakit-0.3.0/docs/clts-audit.md +212 -0
  15. ipakit-0.3.0/docs/clts-gaps.md +352 -0
  16. ipakit-0.3.0/docs/clts-mapping.md +85 -0
  17. ipakit-0.3.0/docs/corpus-scaling-report.json +41 -0
  18. ipakit-0.3.0/docs/corpus.md +244 -0
  19. ipakit-0.3.0/docs/data/english-syllable-curation-2026-08-11.json +3071 -0
  20. ipakit-0.3.0/docs/design/README.md +10 -0
  21. ipakit-0.3.0/docs/design/archive/README.md +7 -0
  22. ipakit-0.3.0/docs/design/archive/ip-p1-store-approach.md +37 -0
  23. ipakit-0.3.0/docs/design/archive/piece1-canonical-store.md +118 -0
  24. ipakit-0.3.0/docs/design/braces.md +512 -0
  25. ipakit-0.3.0/docs/design/conlang.md +644 -0
  26. ipakit-0.3.0/docs/design/ecosystem.md +595 -0
  27. ipakit-0.3.0/docs/design/frontal-view.md +105 -0
  28. ipakit-0.3.0/docs/design/historical-linguistics.md +116 -0
  29. ipakit-0.3.0/docs/design/interop.md +798 -0
  30. ipakit-0.3.0/docs/design/mass-budget.md +95 -0
  31. ipakit-0.3.0/docs/design/residency-allowlist.json +10 -0
  32. ipakit-0.3.0/docs/design/supplement-bridges.md +332 -0
  33. ipakit-0.3.0/docs/design/tiers.md +288 -0
  34. ipakit-0.3.0/docs/development-sources.md +122 -0
  35. ipakit-0.3.0/docs/distance.md +696 -0
  36. ipakit-0.3.0/docs/feature-transforms.md +169 -0
  37. ipakit-0.3.0/docs/figures/derived-from-boundaries.dot +876 -0
  38. ipakit-0.3.0/docs/figures/perhaps-i-am-a-bad-man.dot +442 -0
  39. ipakit-0.3.0/docs/figures/two-pane-timed.html +283 -0
  40. ipakit-0.3.0/docs/form.md +324 -0
  41. ipakit-0.3.0/docs/gestural-model.md +59 -0
  42. ipakit-0.3.0/docs/glossary.md +106 -0
  43. ipakit-0.3.0/docs/house-style.md +161 -0
  44. ipakit-0.3.0/docs/inventories.md +361 -0
  45. ipakit-0.3.0/docs/inventories.src.md +68 -0
  46. ipakit-0.3.0/docs/inventory-operations.md +302 -0
  47. ipakit-0.3.0/docs/kana.md +133 -0
  48. ipakit-0.3.0/docs/model-operations.md +142 -0
  49. ipakit-0.3.0/docs/phoible.md +65 -0
  50. ipakit-0.3.0/docs/pinyin.md +170 -0
  51. ipakit-0.3.0/docs/releasing.md +163 -0
  52. ipakit-0.3.0/docs/representation.md +240 -0
  53. ipakit-0.3.0/docs/reviewing.md +197 -0
  54. ipakit-0.3.0/docs/rules.md +1122 -0
  55. ipakit-0.3.0/docs/similarity.md +186 -0
  56. ipakit-0.3.0/docs/state-of-the-work.md +89 -0
  57. ipakit-0.3.0/docs/supplements.md +186 -0
  58. ipakit-0.3.0/docs/syllabification.md +178 -0
  59. ipakit-0.3.0/docs/systems.md +73 -0
  60. ipakit-0.3.0/docs/tiergraph-acceptance.md +30 -0
  61. ipakit-0.3.0/docs/ties.md +167 -0
  62. ipakit-0.3.0/docs/tone.md +142 -0
  63. ipakit-0.3.0/docs/tract-anatomy.md +253 -0
  64. ipakit-0.3.0/docs/tract-figures.md +162 -0
  65. ipakit-0.3.0/docs/tract-reference.md +82 -0
  66. ipakit-0.3.0/docs/tutorial-basics.md +117 -0
  67. ipakit-0.3.0/docs/tutorial-basics.src.md +114 -0
  68. ipakit-0.3.0/docs/tutorial.md +1042 -0
  69. ipakit-0.3.0/docs/tutorial.src.md +880 -0
  70. ipakit-0.3.0/ipakit/__init__.py +1946 -0
  71. ipakit-0.3.0/ipakit/_base.py +149 -0
  72. ipakit-0.3.0/ipakit/_clts_input.py +122 -0
  73. ipakit-0.3.0/ipakit/_clts_profile.py +471 -0
  74. ipakit-0.3.0/ipakit/_cmu_graph.py +186 -0
  75. ipakit-0.3.0/ipakit/_codecs.py +293 -0
  76. ipakit-0.3.0/ipakit/_containment_projection.py +1339 -0
  77. ipakit-0.3.0/ipakit/_corpus.py +740 -0
  78. ipakit-0.3.0/ipakit/_corpus_query.py +402 -0
  79. ipakit-0.3.0/ipakit/_fact_builder.py +564 -0
  80. ipakit-0.3.0/ipakit/_form_profile.py +1214 -0
  81. ipakit-0.3.0/ipakit/_gesture_backend.py +138 -0
  82. ipakit-0.3.0/ipakit/_gesture_graph.py +142 -0
  83. ipakit-0.3.0/ipakit/_graph_facts.py +315 -0
  84. ipakit-0.3.0/ipakit/_ipa_graph.py +244 -0
  85. ipakit-0.3.0/ipakit/_katakana_codec.py +18 -0
  86. ipakit-0.3.0/ipakit/_moraic.py +141 -0
  87. ipakit-0.3.0/ipakit/_pinyin_graph.py +185 -0
  88. ipakit-0.3.0/ipakit/_provenance.py +73 -0
  89. ipakit-0.3.0/ipakit/_rewrite_graph.py +398 -0
  90. ipakit-0.3.0/ipakit/_rule_model.py +384 -0
  91. ipakit-0.3.0/ipakit/_scalar_attribute.py +21 -0
  92. ipakit-0.3.0/ipakit/_token_corpus.py +21 -0
  93. ipakit-0.3.0/ipakit/align.py +275 -0
  94. ipakit-0.3.0/ipakit/analysis.py +1012 -0
  95. ipakit-0.3.0/ipakit/binary_cost.py +98 -0
  96. ipakit-0.3.0/ipakit/bridges/base.py +45 -0
  97. ipakit-0.3.0/ipakit/bridges/costmodel.py +835 -0
  98. ipakit-0.3.0/ipakit/bridges/kana.py +54 -0
  99. ipakit-0.3.0/ipakit/bridges/mfa.py +95 -0
  100. ipakit-0.3.0/ipakit/bridges/phoible.py +312 -0
  101. ipakit-0.3.0/ipakit/bridges/pinyin.py +175 -0
  102. ipakit-0.3.0/ipakit/bridges/vocabulary.py +604 -0
  103. ipakit-0.3.0/ipakit/cli/__init__.py +294 -0
  104. ipakit-0.3.0/ipakit/cli/analysis_cmds.py +338 -0
  105. ipakit-0.3.0/ipakit/cli/analyze.py +381 -0
  106. ipakit-0.3.0/ipakit/cli/convert.py +799 -0
  107. ipakit-0.3.0/ipakit/cli/distance.py +1298 -0
  108. ipakit-0.3.0/ipakit/cli/features.py +174 -0
  109. ipakit-0.3.0/ipakit/cli/graph_json.py +54 -0
  110. ipakit-0.3.0/ipakit/cli/inventory.py +184 -0
  111. ipakit-0.3.0/ipakit/cli/metrics.py +121 -0
  112. ipakit-0.3.0/ipakit/cli/model.py +214 -0
  113. ipakit-0.3.0/ipakit/cli/phoible.py +113 -0
  114. ipakit-0.3.0/ipakit/cli/policy.py +170 -0
  115. ipakit-0.3.0/ipakit/cli/query.py +581 -0
  116. ipakit-0.3.0/ipakit/cli/rules.py +1186 -0
  117. ipakit-0.3.0/ipakit/clts.py +739 -0
  118. ipakit-0.3.0/ipakit/clts_mapping.py +461 -0
  119. ipakit-0.3.0/ipakit/data/bridges/espeak/af.xml +181 -0
  120. ipakit-0.3.0/ipakit/data/bridges/espeak/am.xml +133 -0
  121. ipakit-0.3.0/ipakit/data/bridges/espeak/an.xml +164 -0
  122. ipakit-0.3.0/ipakit/data/bridges/espeak/ar.xml +139 -0
  123. ipakit-0.3.0/ipakit/data/bridges/espeak/as.xml +191 -0
  124. ipakit-0.3.0/ipakit/data/bridges/espeak/az.xml +164 -0
  125. ipakit-0.3.0/ipakit/data/bridges/espeak/ba.xml +147 -0
  126. ipakit-0.3.0/ipakit/data/bridges/espeak/be.xml +164 -0
  127. ipakit-0.3.0/ipakit/data/bridges/espeak/bg.xml +149 -0
  128. ipakit-0.3.0/ipakit/data/bridges/espeak/bn.xml +191 -0
  129. ipakit-0.3.0/ipakit/data/bridges/espeak/bpy.xml +191 -0
  130. ipakit-0.3.0/ipakit/data/bridges/espeak/ca-ba.xml +172 -0
  131. ipakit-0.3.0/ipakit/data/bridges/espeak/ca-nw.xml +172 -0
  132. ipakit-0.3.0/ipakit/data/bridges/espeak/ca-va.xml +172 -0
  133. ipakit-0.3.0/ipakit/data/bridges/espeak/ca.xml +172 -0
  134. ipakit-0.3.0/ipakit/data/bridges/espeak/chr.xml +192 -0
  135. ipakit-0.3.0/ipakit/data/bridges/espeak/cmn.xml +204 -0
  136. ipakit-0.3.0/ipakit/data/bridges/espeak/cs.xml +170 -0
  137. ipakit-0.3.0/ipakit/data/bridges/espeak/cv.xml +168 -0
  138. ipakit-0.3.0/ipakit/data/bridges/espeak/cy.xml +173 -0
  139. ipakit-0.3.0/ipakit/data/bridges/espeak/da.xml +181 -0
  140. ipakit-0.3.0/ipakit/data/bridges/espeak/de.xml +181 -0
  141. ipakit-0.3.0/ipakit/data/bridges/espeak/el.xml +157 -0
  142. ipakit-0.3.0/ipakit/data/bridges/espeak/en-n.xml +230 -0
  143. ipakit-0.3.0/ipakit/data/bridges/espeak/en-rp.xml +230 -0
  144. ipakit-0.3.0/ipakit/data/bridges/espeak/en-sc.xml +232 -0
  145. ipakit-0.3.0/ipakit/data/bridges/espeak/en-us-nyc.xml +229 -0
  146. ipakit-0.3.0/ipakit/data/bridges/espeak/en-us.xml +229 -0
  147. ipakit-0.3.0/ipakit/data/bridges/espeak/en-wi.xml +230 -0
  148. ipakit-0.3.0/ipakit/data/bridges/espeak/en-wm.xml +230 -0
  149. ipakit-0.3.0/ipakit/data/bridges/espeak/en.xml +70 -0
  150. ipakit-0.3.0/ipakit/data/bridges/espeak/eo.xml +140 -0
  151. ipakit-0.3.0/ipakit/data/bridges/espeak/es-la.xml +161 -0
  152. ipakit-0.3.0/ipakit/data/bridges/espeak/es.xml +161 -0
  153. ipakit-0.3.0/ipakit/data/bridges/espeak/et.xml +166 -0
  154. ipakit-0.3.0/ipakit/data/bridges/espeak/eu.xml +162 -0
  155. ipakit-0.3.0/ipakit/data/bridges/espeak/fa.xml +133 -0
  156. ipakit-0.3.0/ipakit/data/bridges/espeak/fi.xml +178 -0
  157. ipakit-0.3.0/ipakit/data/bridges/espeak/fo.xml +193 -0
  158. ipakit-0.3.0/ipakit/data/bridges/espeak/fr.xml +177 -0
  159. ipakit-0.3.0/ipakit/data/bridges/espeak/ga.xml +171 -0
  160. ipakit-0.3.0/ipakit/data/bridges/espeak/gd.xml +176 -0
  161. ipakit-0.3.0/ipakit/data/bridges/espeak/gn.xml +141 -0
  162. ipakit-0.3.0/ipakit/data/bridges/espeak/grc.xml +165 -0
  163. ipakit-0.3.0/ipakit/data/bridges/espeak/gu.xml +192 -0
  164. ipakit-0.3.0/ipakit/data/bridges/espeak/hak.xml +168 -0
  165. ipakit-0.3.0/ipakit/data/bridges/espeak/haw.xml +148 -0
  166. ipakit-0.3.0/ipakit/data/bridges/espeak/he.xml +127 -0
  167. ipakit-0.3.0/ipakit/data/bridges/espeak/hi.xml +188 -0
  168. ipakit-0.3.0/ipakit/data/bridges/espeak/hr.xml +179 -0
  169. ipakit-0.3.0/ipakit/data/bridges/espeak/ht.xml +177 -0
  170. ipakit-0.3.0/ipakit/data/bridges/espeak/hu.xml +146 -0
  171. ipakit-0.3.0/ipakit/data/bridges/espeak/hy.xml +144 -0
  172. ipakit-0.3.0/ipakit/data/bridges/espeak/ia.xml +140 -0
  173. ipakit-0.3.0/ipakit/data/bridges/espeak/id.xml +163 -0
  174. ipakit-0.3.0/ipakit/data/bridges/espeak/is.xml +171 -0
  175. ipakit-0.3.0/ipakit/data/bridges/espeak/it.xml +176 -0
  176. ipakit-0.3.0/ipakit/data/bridges/espeak/ja.xml +138 -0
  177. ipakit-0.3.0/ipakit/data/bridges/espeak/jbo.xml +140 -0
  178. ipakit-0.3.0/ipakit/data/bridges/espeak/ka.xml +134 -0
  179. ipakit-0.3.0/ipakit/data/bridges/espeak/kaa.xml +144 -0
  180. ipakit-0.3.0/ipakit/data/bridges/espeak/kk.xml +144 -0
  181. ipakit-0.3.0/ipakit/data/bridges/espeak/kl.xml +145 -0
  182. ipakit-0.3.0/ipakit/data/bridges/espeak/kn.xml +188 -0
  183. ipakit-0.3.0/ipakit/data/bridges/espeak/ko.xml +140 -0
  184. ipakit-0.3.0/ipakit/data/bridges/espeak/kok.xml +191 -0
  185. ipakit-0.3.0/ipakit/data/bridges/espeak/ku.xml +166 -0
  186. ipakit-0.3.0/ipakit/data/bridges/espeak/ky.xml +136 -0
  187. ipakit-0.3.0/ipakit/data/bridges/espeak/la.xml +154 -0
  188. ipakit-0.3.0/ipakit/data/bridges/espeak/lb.xml +171 -0
  189. ipakit-0.3.0/ipakit/data/bridges/espeak/lt.xml +179 -0
  190. ipakit-0.3.0/ipakit/data/bridges/espeak/lv.xml +164 -0
  191. ipakit-0.3.0/ipakit/data/bridges/espeak/mi.xml +163 -0
  192. ipakit-0.3.0/ipakit/data/bridges/espeak/mk.xml +180 -0
  193. ipakit-0.3.0/ipakit/data/bridges/espeak/ml.xml +193 -0
  194. ipakit-0.3.0/ipakit/data/bridges/espeak/mr.xml +192 -0
  195. ipakit-0.3.0/ipakit/data/bridges/espeak/ms.xml +163 -0
  196. ipakit-0.3.0/ipakit/data/bridges/espeak/mt.xml +167 -0
  197. ipakit-0.3.0/ipakit/data/bridges/espeak/mto.xml +170 -0
  198. ipakit-0.3.0/ipakit/data/bridges/espeak/my.xml +246 -0
  199. ipakit-0.3.0/ipakit/data/bridges/espeak/nci.xml +157 -0
  200. ipakit-0.3.0/ipakit/data/bridges/espeak/ne.xml +204 -0
  201. ipakit-0.3.0/ipakit/data/bridges/espeak/nl.xml +164 -0
  202. ipakit-0.3.0/ipakit/data/bridges/espeak/no.xml +168 -0
  203. ipakit-0.3.0/ipakit/data/bridges/espeak/nog.xml +144 -0
  204. ipakit-0.3.0/ipakit/data/bridges/espeak/nso.xml +133 -0
  205. ipakit-0.3.0/ipakit/data/bridges/espeak/om.xml +144 -0
  206. ipakit-0.3.0/ipakit/data/bridges/espeak/or.xml +191 -0
  207. ipakit-0.3.0/ipakit/data/bridges/espeak/pa.xml +191 -0
  208. ipakit-0.3.0/ipakit/data/bridges/espeak/piqd.xml +176 -0
  209. ipakit-0.3.0/ipakit/data/bridges/espeak/pl.xml +147 -0
  210. ipakit-0.3.0/ipakit/data/bridges/espeak/prs.xml +135 -0
  211. ipakit-0.3.0/ipakit/data/bridges/espeak/pt-pt.xml +185 -0
  212. ipakit-0.3.0/ipakit/data/bridges/espeak/pt.xml +185 -0
  213. ipakit-0.3.0/ipakit/data/bridges/espeak/py.xml +144 -0
  214. ipakit-0.3.0/ipakit/data/bridges/espeak/qdb.xml +230 -0
  215. ipakit-0.3.0/ipakit/data/bridges/espeak/qu.xml +132 -0
  216. ipakit-0.3.0/ipakit/data/bridges/espeak/quc.xml +127 -0
  217. ipakit-0.3.0/ipakit/data/bridges/espeak/qya.xml +159 -0
  218. ipakit-0.3.0/ipakit/data/bridges/espeak/ro.xml +191 -0
  219. ipakit-0.3.0/ipakit/data/bridges/espeak/ru-lv.xml +177 -0
  220. ipakit-0.3.0/ipakit/data/bridges/espeak/ru.xml +177 -0
  221. ipakit-0.3.0/ipakit/data/bridges/espeak/sd.xml +188 -0
  222. ipakit-0.3.0/ipakit/data/bridges/espeak/shn.xml +171 -0
  223. ipakit-0.3.0/ipakit/data/bridges/espeak/si.xml +194 -0
  224. ipakit-0.3.0/ipakit/data/bridges/espeak/sjn.xml +161 -0
  225. ipakit-0.3.0/ipakit/data/bridges/espeak/sk.xml +170 -0
  226. ipakit-0.3.0/ipakit/data/bridges/espeak/sl.xml +150 -0
  227. ipakit-0.3.0/ipakit/data/bridges/espeak/smj.xml +189 -0
  228. ipakit-0.3.0/ipakit/data/bridges/espeak/sq.xml +159 -0
  229. ipakit-0.3.0/ipakit/data/bridges/espeak/sr.xml +181 -0
  230. ipakit-0.3.0/ipakit/data/bridges/espeak/sv.xml +160 -0
  231. ipakit-0.3.0/ipakit/data/bridges/espeak/sw.xml +127 -0
  232. ipakit-0.3.0/ipakit/data/bridges/espeak/ta.xml +194 -0
  233. ipakit-0.3.0/ipakit/data/bridges/espeak/te.xml +188 -0
  234. ipakit-0.3.0/ipakit/data/bridges/espeak/th.xml +171 -0
  235. ipakit-0.3.0/ipakit/data/bridges/espeak/ti.xml +134 -0
  236. ipakit-0.3.0/ipakit/data/bridges/espeak/tk.xml +173 -0
  237. ipakit-0.3.0/ipakit/data/bridges/espeak/tn.xml +145 -0
  238. ipakit-0.3.0/ipakit/data/bridges/espeak/tr.xml +164 -0
  239. ipakit-0.3.0/ipakit/data/bridges/espeak/tt.xml +147 -0
  240. ipakit-0.3.0/ipakit/data/bridges/espeak/ug.xml +166 -0
  241. ipakit-0.3.0/ipakit/data/bridges/espeak/uk.xml +133 -0
  242. ipakit-0.3.0/ipakit/data/bridges/espeak/ur.xml +188 -0
  243. ipakit-0.3.0/ipakit/data/bridges/espeak/uz.xml +147 -0
  244. ipakit-0.3.0/ipakit/data/bridges/espeak/vi-hue.xml +193 -0
  245. ipakit-0.3.0/ipakit/data/bridges/espeak/vi-sgn.xml +191 -0
  246. ipakit-0.3.0/ipakit/data/bridges/espeak/vi.xml +200 -0
  247. ipakit-0.3.0/ipakit/data/bridges/espeak/yue.xml +180 -0
  248. ipakit-0.3.0/ipakit/data/bridges/kana/kana.xml +23 -0
  249. ipakit-0.3.0/ipakit/data/bridges/mfa/arabic.xml +81 -0
  250. ipakit-0.3.0/ipakit/data/bridges/mfa/bulgarian.xml +54 -0
  251. ipakit-0.3.0/ipakit/data/bridges/mfa/croatian.xml +73 -0
  252. ipakit-0.3.0/ipakit/data/bridges/mfa/czech.xml +56 -0
  253. ipakit-0.3.0/ipakit/data/bridges/mfa/english.xml +104 -0
  254. ipakit-0.3.0/ipakit/data/bridges/mfa/english_india.xml +73 -0
  255. ipakit-0.3.0/ipakit/data/bridges/mfa/english_nigeria.xml +75 -0
  256. ipakit-0.3.0/ipakit/data/bridges/mfa/english_nonnative.xml +100 -0
  257. ipakit-0.3.0/ipakit/data/bridges/mfa/english_uk.xml +85 -0
  258. ipakit-0.3.0/ipakit/data/bridges/mfa/english_us.xml +86 -0
  259. ipakit-0.3.0/ipakit/data/bridges/mfa/french.xml +51 -0
  260. ipakit-0.3.0/ipakit/data/bridges/mfa/german.xml +60 -0
  261. ipakit-0.3.0/ipakit/data/bridges/mfa/hausa.xml +84 -0
  262. ipakit-0.3.0/ipakit/data/bridges/mfa/japanese.xml +91 -0
  263. ipakit-0.3.0/ipakit/data/bridges/mfa/korean.xml +113 -0
  264. ipakit-0.3.0/ipakit/data/bridges/mfa/korean_jamo.xml +64 -0
  265. ipakit-0.3.0/ipakit/data/bridges/mfa/mandarin.xml +127 -0
  266. ipakit-0.3.0/ipakit/data/bridges/mfa/mandarin_china.xml +147 -0
  267. ipakit-0.3.0/ipakit/data/bridges/mfa/mandarin_erhua.xml +127 -0
  268. ipakit-0.3.0/ipakit/data/bridges/mfa/mandarin_taiwan.xml +138 -0
  269. ipakit-0.3.0/ipakit/data/bridges/mfa/mfa.xml +851 -0
  270. ipakit-0.3.0/ipakit/data/bridges/mfa/polish.xml +58 -0
  271. ipakit-0.3.0/ipakit/data/bridges/mfa/portuguese.xml +53 -0
  272. ipakit-0.3.0/ipakit/data/bridges/mfa/portuguese_brazil.xml +48 -0
  273. ipakit-0.3.0/ipakit/data/bridges/mfa/portuguese_portugal.xml +52 -0
  274. ipakit-0.3.0/ipakit/data/bridges/mfa/russian.xml +102 -0
  275. ipakit-0.3.0/ipakit/data/bridges/mfa/serbocroatian.xml +69 -0
  276. ipakit-0.3.0/ipakit/data/bridges/mfa/spanish.xml +43 -0
  277. ipakit-0.3.0/ipakit/data/bridges/mfa/spanish_latin_america.xml +51 -0
  278. ipakit-0.3.0/ipakit/data/bridges/mfa/spanish_spain.xml +52 -0
  279. ipakit-0.3.0/ipakit/data/bridges/mfa/swahili.xml +49 -0
  280. ipakit-0.3.0/ipakit/data/bridges/mfa/swedish.xml +111 -0
  281. ipakit-0.3.0/ipakit/data/bridges/mfa/tamil.xml +63 -0
  282. ipakit-0.3.0/ipakit/data/bridges/mfa/thai.xml +137 -0
  283. ipakit-0.3.0/ipakit/data/bridges/mfa/turkish.xml +77 -0
  284. ipakit-0.3.0/ipakit/data/bridges/mfa/ukrainian.xml +92 -0
  285. ipakit-0.3.0/ipakit/data/bridges/mfa/vietnamese.xml +190 -0
  286. ipakit-0.3.0/ipakit/data/bridges/mfa/vietnamese_hanoi.xml +169 -0
  287. ipakit-0.3.0/ipakit/data/bridges/mfa/vietnamese_ho_chi_minh_city.xml +132 -0
  288. ipakit-0.3.0/ipakit/data/bridges/mfa/vietnamese_hue.xml +144 -0
  289. ipakit-0.3.0/ipakit/data/bridges/pinyin/pinyin.xml +72 -0
  290. ipakit-0.3.0/ipakit/data/bridges/vocabulary.rng +98 -0
  291. ipakit-0.3.0/ipakit/data/clts/MAPPING-NOTICE.txt +30 -0
  292. ipakit-0.3.0/ipakit/data/clts/NOTICE.txt +29 -0
  293. ipakit-0.3.0/ipakit/data/clts/core.json +18215 -0
  294. ipakit-0.3.0/ipakit/data/clts/semantic-mapping.json +12301 -0
  295. ipakit-0.3.0/ipakit/data/clts/semantic-rules.json +41 -0
  296. ipakit-0.3.0/ipakit/data/clts/source.json +75 -0
  297. ipakit-0.3.0/ipakit/data/confusion.json +1 -0
  298. ipakit-0.3.0/ipakit/data/feature-models/NOTICE.md +32 -0
  299. ipakit-0.3.0/ipakit/data/feature-models/PANPHON-LICENSE.txt +8 -0
  300. ipakit-0.3.0/ipakit/data/feature-models/panphon.xml +6453 -0
  301. ipakit-0.3.0/ipakit/data/inventory-cards.rng +28 -0
  302. ipakit-0.3.0/ipakit/data/inventory-cards.xml +71 -0
  303. ipakit-0.3.0/ipakit/data/ipa.rng +388 -0
  304. ipakit-0.3.0/ipakit/data/ipa.xml +1027 -0
  305. ipakit-0.3.0/ipakit/data/mfa-curation.json +18 -0
  306. ipakit-0.3.0/ipakit/data/phoible/CC-BY-SA-3.0.txt +359 -0
  307. ipakit-0.3.0/ipakit/data/phoible/GPL-3.0.txt +674 -0
  308. ipakit-0.3.0/ipakit/data/phoible/MIT-upstream.txt +22 -0
  309. ipakit-0.3.0/ipakit/data/phoible/NOTICE.txt +39 -0
  310. ipakit-0.3.0/ipakit/data/phoible/data/phoible-references.bib.gz +0 -0
  311. ipakit-0.3.0/ipakit/data/phoible/data/phoible.csv.gz +0 -0
  312. ipakit-0.3.0/ipakit/data/phoible/manifest.json +27 -0
  313. ipakit-0.3.0/ipakit/data/phoible/mappings/InventoryID-Bibtex.csv.gz +0 -0
  314. ipakit-0.3.0/ipakit/data/phoible/mappings/InventoryID-LanguageCodes.csv.gz +0 -0
  315. ipakit-0.3.0/ipakit/data/phoible-policy.json +12 -0
  316. ipakit-0.3.0/ipakit/data/phonemaps/cmu.xml +99 -0
  317. ipakit-0.3.0/ipakit/data/phonemaps/phonemap.rng +97 -0
  318. ipakit-0.3.0/ipakit/data/phonemaps/timit.xml +96 -0
  319. ipakit-0.3.0/ipakit/data/rules/american-english.rules +423 -0
  320. ipakit-0.3.0/ipakit/data/rules/japanese-moraic.rules +341 -0
  321. ipakit-0.3.0/ipakit/data/syllables/japanese.xml +17 -0
  322. ipakit-0.3.0/ipakit/data/syllables/mandarin.xml +4 -0
  323. ipakit-0.3.0/ipakit/disagreement.py +344 -0
  324. ipakit-0.3.0/ipakit/distance.py +1742 -0
  325. ipakit-0.3.0/ipakit/distance_model.py +912 -0
  326. ipakit-0.3.0/ipakit/distance_registry.py +419 -0
  327. ipakit-0.3.0/ipakit/extraction/__init__.py +82 -0
  328. ipakit-0.3.0/ipakit/extraction/mfa.py +464 -0
  329. ipakit-0.3.0/ipakit/extraction/phoible.py +89 -0
  330. ipakit-0.3.0/ipakit/feature_experiment.py +146 -0
  331. ipakit-0.3.0/ipakit/feature_models.py +32 -0
  332. ipakit-0.3.0/ipakit/feature_sets.py +81 -0
  333. ipakit-0.3.0/ipakit/feature_transform.py +339 -0
  334. ipakit-0.3.0/ipakit/features.py +4559 -0
  335. ipakit-0.3.0/ipakit/finite_declaration.py +230 -0
  336. ipakit-0.3.0/ipakit/finite_model.py +230 -0
  337. ipakit-0.3.0/ipakit/form.py +2501 -0
  338. ipakit-0.3.0/ipakit/graph_json.py +17 -0
  339. ipakit-0.3.0/ipakit/hierarchy.py +139 -0
  340. ipakit-0.3.0/ipakit/inventories.py +706 -0
  341. ipakit-0.3.0/ipakit/inventory_operations.py +224 -0
  342. ipakit-0.3.0/ipakit/metric.py +1077 -0
  343. ipakit-0.3.0/ipakit/model_graph.py +475 -0
  344. ipakit-0.3.0/ipakit/models.py +535 -0
  345. ipakit-0.3.0/ipakit/notebooks/ipakit-tutorial.ipynb +1660 -0
  346. ipakit-0.3.0/ipakit/phoible_source.py +83 -0
  347. ipakit-0.3.0/ipakit/phoneset_map.py +601 -0
  348. ipakit-0.3.0/ipakit/rules.py +4585 -0
  349. ipakit-0.3.0/ipakit/segment.py +1241 -0
  350. ipakit-0.3.0/ipakit/syllable.py +693 -0
  351. ipakit-0.3.0/ipakit/tiergraph_dot.py +215 -0
  352. ipakit-0.3.0/ipakit/tract.py +2661 -0
  353. ipakit-0.3.0/ipakit/tract_svg.py +2424 -0
  354. ipakit-0.3.0/ipakit.egg-info/PKG-INFO +380 -0
  355. ipakit-0.3.0/ipakit.egg-info/SOURCES.txt +716 -0
  356. ipakit-0.3.0/ipakit.egg-info/requires.txt +32 -0
  357. ipakit-0.3.0/pyproject.toml +205 -0
  358. ipakit-0.3.0/scripts/_comparison_order.py +28 -0
  359. ipakit-0.3.0/scripts/areafunctions.py +2233 -0
  360. ipakit-0.3.0/scripts/compare_inventories.py +419 -0
  361. ipakit-0.3.0/scripts/consolidation_parity.py +110 -0
  362. ipakit-0.3.0/scripts/consolidation_parity.sha256 +1 -0
  363. ipakit-0.3.0/scripts/containment_oracle.py +709 -0
  364. ipakit-0.3.0/scripts/costmodel_compare.py +288 -0
  365. ipakit-0.3.0/scripts/dev_sources.py +315 -0
  366. ipakit-0.3.0/scripts/docexamples.py +314 -0
  367. ipakit-0.3.0/scripts/espeak_vocabularies.py +689 -0
  368. ipakit-0.3.0/scripts/geometry.py +173 -0
  369. ipakit-0.3.0/scripts/interop.py +1741 -0
  370. ipakit-0.3.0/scripts/invariants.py +1286 -0
  371. ipakit-0.3.0/scripts/inventory_cards.py +416 -0
  372. ipakit-0.3.0/scripts/mfa_vocabularies.py +80 -0
  373. ipakit-0.3.0/scripts/panphon_geometry.py +260 -0
  374. ipakit-0.3.0/scripts/perceptual_validation.py +183 -0
  375. ipakit-0.3.0/scripts/piece1_oracle.py +369 -0
  376. ipakit-0.3.0/scripts/state_of_work.py +172 -0
  377. ipakit-0.3.0/scripts/sweep.py +420 -0
  378. ipakit-0.3.0/scripts/tiergraph_capture.py +653 -0
  379. ipakit-0.3.0/tests/ANIMATION_LIMITS.md +23 -0
  380. ipakit-0.3.0/tests/fixtures/alignment/README.md +17 -0
  381. ipakit-0.3.0/tests/fixtures/alignment/hello-world.json +35 -0
  382. ipakit-0.3.0/tests/fixtures/alignment/hello-world.wav +0 -0
  383. ipakit-0.3.0/tests/fixtures/animation_sha256.json +4 -0
  384. ipakit-0.3.0/tests/fixtures/cmudict_excerpt.dict +106 -0
  385. ipakit-0.3.0/tests/fixtures/epiglottal_constriction.json +6 -0
  386. ipakit-0.3.0/tests/fixtures/espeak_cmn_1_52_0.txt +6 -0
  387. ipakit-0.3.0/tests/fixtures/espeak_en_1_52_0.txt +7 -0
  388. ipakit-0.3.0/tests/fixtures/ipa_dict_en_US.txt +7 -0
  389. ipakit-0.3.0/tests/fixtures/mfa_english_us_v3_1_0.dict +28 -0
  390. ipakit-0.3.0/tests/fixtures/phoible/README.md +7 -0
  391. ipakit-0.3.0/tests/fixtures/phoible/data/phoible.csv +4 -0
  392. ipakit-0.3.0/tests/fixtures/phoible/mappings/InventoryID-Bibtex.csv +3 -0
  393. ipakit-0.3.0/tests/fixtures/phoible/mappings/InventoryID-LanguageCodes.csv +3 -0
  394. ipakit-0.3.0/tests/fixtures/posture_golden.json +142 -0
  395. ipakit-0.3.0/tests/fixtures/reference_landmark_distances.json +20 -0
  396. ipakit-0.3.0/tests/fixtures/textgrid/cmudict.TextGrid +36 -0
  397. ipakit-0.3.0/tests/fixtures/textgrid/cmudict_stress.TextGrid +36 -0
  398. ipakit-0.3.0/tests/fixtures/textgrid/mfa_two_words.TextGrid +60 -0
  399. ipakit-0.3.0/tests/fixtures/textgrid/mfa_untied.TextGrid +36 -0
  400. ipakit-0.3.0/tests/fixtures/textgrid/prosody_hello.TextGrid +95 -0
  401. ipakit-0.3.0/tests/fixtures/velic_contrast.json +5 -0
  402. ipakit-0.3.0/tests/fixtures/xrmb_anchor_prompts.json +18 -0
  403. ipakit-0.3.0/tests/panphon/panphon.rng +96 -0
  404. ipakit-0.3.0/tests/panphon/shared-corpus.txt +14 -0
  405. ipakit-0.3.0/tests/test_agreement.py +560 -0
  406. ipakit-0.3.0/tests/test_analysis.py +485 -0
  407. ipakit-0.3.0/tests/test_api.py +162 -0
  408. ipakit-0.3.0/tests/test_api_contracts.py +175 -0
  409. ipakit-0.3.0/tests/test_boundary_distance.py +201 -0
  410. ipakit-0.3.0/tests/test_bridges.py +368 -0
  411. ipakit-0.3.0/tests/test_ci_contract.py +371 -0
  412. ipakit-0.3.0/tests/test_cli.py +2217 -0
  413. ipakit-0.3.0/tests/test_cli_distance_registry.py +80 -0
  414. ipakit-0.3.0/tests/test_cli_hygiene.py +630 -0
  415. ipakit-0.3.0/tests/test_cli_model.py +284 -0
  416. ipakit-0.3.0/tests/test_cli_model_query.py +72 -0
  417. ipakit-0.3.0/tests/test_cli_model_rules.py +487 -0
  418. ipakit-0.3.0/tests/test_clts_audit.py +300 -0
  419. ipakit-0.3.0/tests/test_clts_input.py +114 -0
  420. ipakit-0.3.0/tests/test_clts_mapping.py +232 -0
  421. ipakit-0.3.0/tests/test_clts_packaging.py +111 -0
  422. ipakit-0.3.0/tests/test_clts_snapshot.py +383 -0
  423. ipakit-0.3.0/tests/test_coherent_composition.py +635 -0
  424. ipakit-0.3.0/tests/test_comparison_example.py +73 -0
  425. ipakit-0.3.0/tests/test_confusion.py +75 -0
  426. ipakit-0.3.0/tests/test_constriction_location.py +815 -0
  427. ipakit-0.3.0/tests/test_corpus_kernel.py +317 -0
  428. ipakit-0.3.0/tests/test_corpus_query.py +153 -0
  429. ipakit-0.3.0/tests/test_costmodel.py +464 -0
  430. ipakit-0.3.0/tests/test_costmodel_accumulation.py +86 -0
  431. ipakit-0.3.0/tests/test_costmodel_admission.py +69 -0
  432. ipakit-0.3.0/tests/test_costmodel_normalization.py +77 -0
  433. ipakit-0.3.0/tests/test_declared_not_hardcoded.py +1215 -0
  434. ipakit-0.3.0/tests/test_denominator.py +129 -0
  435. ipakit-0.3.0/tests/test_descriptions.py +77 -0
  436. ipakit-0.3.0/tests/test_dev_sources.py +424 -0
  437. ipakit-0.3.0/tests/test_distance.py +586 -0
  438. ipakit-0.3.0/tests/test_distance_model.py +828 -0
  439. ipakit-0.3.0/tests/test_distance_registry.py +300 -0
  440. ipakit-0.3.0/tests/test_distinctive_difference.py +102 -0
  441. ipakit-0.3.0/tests/test_espeak_generator.py +120 -0
  442. ipakit-0.3.0/tests/test_extraction.py +43 -0
  443. ipakit-0.3.0/tests/test_feature_experiment.py +349 -0
  444. ipakit-0.3.0/tests/test_feature_models.py +54 -0
  445. ipakit-0.3.0/tests/test_feature_reads.py +143 -0
  446. ipakit-0.3.0/tests/test_feature_realization.py +297 -0
  447. ipakit-0.3.0/tests/test_feature_transform.py +321 -0
  448. ipakit-0.3.0/tests/test_features.py +207 -0
  449. ipakit-0.3.0/tests/test_features_narrowing.py +738 -0
  450. ipakit-0.3.0/tests/test_finite_model.py +335 -0
  451. ipakit-0.3.0/tests/test_form.py +1027 -0
  452. ipakit-0.3.0/tests/test_form_native_profile.py +656 -0
  453. ipakit-0.3.0/tests/test_geometry_doc.py +50 -0
  454. ipakit-0.3.0/tests/test_indel_costs.py +679 -0
  455. ipakit-0.3.0/tests/test_inventories.py +820 -0
  456. ipakit-0.3.0/tests/test_inventory_cards.py +62 -0
  457. ipakit-0.3.0/tests/test_inventory_operations.py +210 -0
  458. ipakit-0.3.0/tests/test_japanese_mora_regressions.py +150 -0
  459. ipakit-0.3.0/tests/test_kana_provenance.py +45 -0
  460. ipakit-0.3.0/tests/test_license.py +88 -0
  461. ipakit-0.3.0/tests/test_ligature_aliases.py +481 -0
  462. ipakit-0.3.0/tests/test_linking_and_agreement.py +84 -0
  463. ipakit-0.3.0/tests/test_metric.py +1200 -0
  464. ipakit-0.3.0/tests/test_mfa_vocabularies.py +135 -0
  465. ipakit-0.3.0/tests/test_model_graph.py +333 -0
  466. ipakit-0.3.0/tests/test_model_rules.py +463 -0
  467. ipakit-0.3.0/tests/test_models.py +175 -0
  468. ipakit-0.3.0/tests/test_nearest_pronunciation.py +113 -0
  469. ipakit-0.3.0/tests/test_nonfinal_modifiers.py +273 -0
  470. ipakit-0.3.0/tests/test_one_composition.py +470 -0
  471. ipakit-0.3.0/tests/test_packaging.py +680 -0
  472. ipakit-0.3.0/tests/test_panphon_geometry.py +113 -0
  473. ipakit-0.3.0/tests/test_panphon_live_geometry.py +98 -0
  474. ipakit-0.3.0/tests/test_phoible.py +133 -0
  475. ipakit-0.3.0/tests/test_phoible_packaging.py +88 -0
  476. ipakit-0.3.0/tests/test_phoible_source.py +168 -0
  477. ipakit-0.3.0/tests/test_phoneset_comparison.py +206 -0
  478. ipakit-0.3.0/tests/test_posture_no_side_channel.py +199 -0
  479. ipakit-0.3.0/tests/test_projection_coherence.py +277 -0
  480. ipakit-0.3.0/tests/test_prosodic_riders.py +132 -0
  481. ipakit-0.3.0/tests/test_query.py +1105 -0
  482. ipakit-0.3.0/tests/test_redundant_marks.py +80 -0
  483. ipakit-0.3.0/tests/test_rule_sets.py +2302 -0
  484. ipakit-0.3.0/tests/test_rules.py +2942 -0
  485. ipakit-0.3.0/tests/test_scalar_reads.py +117 -0
  486. ipakit-0.3.0/tests/test_search.py +277 -0
  487. ipakit-0.3.0/tests/test_sequence_scoring.py +188 -0
  488. ipakit-0.3.0/tests/test_supplements.py +714 -0
  489. ipakit-0.3.0/tests/test_syllable_docs.py +42 -0
  490. ipakit-0.3.0/tests/test_syllable_japanese.py +82 -0
  491. ipakit-0.3.0/tests/test_tap_duration.py +325 -0
  492. ipakit-0.3.0/tests/test_textgrid.py +485 -0
  493. ipakit-0.3.0/tests/test_tie_sense.py +384 -0
  494. ipakit-0.3.0/tests/test_tiergraph_acceptance_docs.py +53 -0
  495. ipakit-0.3.0/tests/test_tiers.py +210 -0
  496. ipakit-0.3.0/tests/test_tokenization.py +571 -0
  497. ipakit-0.3.0/tests/test_tone_contours.py +399 -0
  498. ipakit-0.3.0/tests/test_tract_figures.py +2319 -0
  499. ipakit-0.3.0/tests/test_transcription_distance.py +117 -0
  500. ipakit-0.3.0/tests/test_unicode_recomposition.py +101 -0
  501. ipakit-0.3.0/tests/test_unplaced_marks.py +344 -0
  502. ipakit-0.3.0/tests/test_variable_width.py +228 -0
  503. ipakit-0.3.0/tests/test_vowel_tract_limit.py +407 -0
  504. ipakit-0.3.0/tests/test_zero.py +818 -0
  505. ipakit-0.3.0/tests/tiergraph/baselines/MANIFEST.sha256 +13 -0
  506. ipakit-0.3.0/tests/tiergraph/baselines/README.md +15 -0
  507. ipakit-0.3.0/tests/tiergraph/baselines/capture-metadata.json +12 -0
  508. ipakit-0.3.0/tests/tiergraph/baselines/containment-navigation.json +12416 -0
  509. ipakit-0.3.0/tests/tiergraph/baselines/coordinates.json +1043 -0
  510. ipakit-0.3.0/tests/tiergraph/baselines/derived-artifacts.json +104 -0
  511. ipakit-0.3.0/tests/tiergraph/baselines/distance-alignments.json +820 -0
  512. ipakit-0.3.0/tests/tiergraph/baselines/perturbation-proof.json +23 -0
  513. ipakit-0.3.0/tests/tiergraph/baselines/piece1-canonical-store.json +248 -0
  514. ipakit-0.3.0/tests/tiergraph/choice_selection_v1.json +421 -0
  515. ipakit-0.3.0/tests/tiergraph/cmudict/pocketsphinx.tsv +4 -0
  516. ipakit-0.3.0/tests/tiergraph/cmudict/upstream.json +7 -0
  517. ipakit-0.3.0/tests/tiergraph/fixtures/choices_and_containment.json +14 -0
  518. ipakit-0.3.0/tests/tiergraph/fixtures/clock_and_ordering.json +10 -0
  519. ipakit-0.3.0/tests/tiergraph/fixtures/duration_and_relation_endpoints.json +17 -0
  520. ipakit-0.3.0/tests/tiergraph/fixtures/endpoints.json +13 -0
  521. ipakit-0.3.0/tests/tiergraph/fixtures/hot_bridge_projection.json +2931 -0
  522. ipakit-0.3.0/tests/tiergraph/fixtures/index.json +1 -0
  523. ipakit-0.3.0/tests/tiergraph/fixtures/prosodic_deliveries.json +11 -0
  524. ipakit-0.3.0/tests/tiergraph/fixtures/signature_edits.json +9 -0
  525. ipakit-0.3.0/tests/tiergraph/fixtures/unit_coordinates.json +10 -0
  526. ipakit-0.3.0/tests/tiergraph/structured_segment_v3.json +39 -0
  527. ipakit-0.3.0/tests/tiergraph/test_clts_profile.py +456 -0
  528. ipakit-0.3.0/tests/tiergraph/test_codecs.py +184 -0
  529. ipakit-0.3.0/tests/tiergraph/test_declared_values.py +529 -0
  530. ipakit-0.3.0/tests/tiergraph/test_dot.py +262 -0
  531. ipakit-0.3.0/tests/tiergraph/test_fixture_wellformedness.py +157 -0
  532. ipakit-0.3.0/tests/tiergraph/test_form_store.py +425 -0
  533. ipakit-0.3.0/tests/tiergraph/test_gesture_integration.py +167 -0
  534. ipakit-0.3.0/tests/tiergraph/test_ipa_graph.py +164 -0
  535. ipakit-0.3.0/tests/tiergraph/test_lane_m_stabilization.py +153 -0
  536. ipakit-0.3.0/tests/tiergraph/test_piece1_oracle.py +40 -0
  537. ipakit-0.3.0/tests/tiergraph/test_pinyin_correctness.py +244 -0
  538. ipakit-0.3.0/tests/tiergraph/test_rewrite_bridge.py +412 -0
  539. ipakit-0.3.0/tests/tiergraph/test_scalar_attribute.py +19 -0
  540. ipakit-0.2.0/CHANGELOG.md +0 -328
  541. ipakit-0.2.0/MANIFEST.in +0 -42
  542. ipakit-0.2.0/Makefile +0 -169
  543. ipakit-0.2.0/PKG-INFO +0 -367
  544. ipakit-0.2.0/README.md +0 -323
  545. ipakit-0.2.0/docs/README.md +0 -107
  546. ipakit-0.2.0/docs/articulatory-data.md +0 -342
  547. ipakit-0.2.0/docs/calculus.md +0 -411
  548. ipakit-0.2.0/docs/cli-api-sync.md +0 -44
  549. ipakit-0.2.0/docs/corpus.md +0 -228
  550. ipakit-0.2.0/docs/design/braces.md +0 -512
  551. ipakit-0.2.0/docs/design/conlang.md +0 -644
  552. ipakit-0.2.0/docs/design/ecosystem.md +0 -613
  553. ipakit-0.2.0/docs/design/frontal-view.md +0 -100
  554. ipakit-0.2.0/docs/design/historical-linguistics.md +0 -109
  555. ipakit-0.2.0/docs/design/interop.md +0 -783
  556. ipakit-0.2.0/docs/design/ip-p1-store-approach.md +0 -37
  557. ipakit-0.2.0/docs/design/mass-budget.md +0 -85
  558. ipakit-0.2.0/docs/design/piece1-canonical-store.md +0 -118
  559. ipakit-0.2.0/docs/design/supplement-bridges.md +0 -309
  560. ipakit-0.2.0/docs/design/tiers.md +0 -273
  561. ipakit-0.2.0/docs/distance.md +0 -567
  562. ipakit-0.2.0/docs/form.md +0 -312
  563. ipakit-0.2.0/docs/gestural-model.md +0 -59
  564. ipakit-0.2.0/docs/glossary.md +0 -86
  565. ipakit-0.2.0/docs/house-style.md +0 -111
  566. ipakit-0.2.0/docs/inventories.md +0 -37
  567. ipakit-0.2.0/docs/releasing.md +0 -126
  568. ipakit-0.2.0/docs/representation.md +0 -113
  569. ipakit-0.2.0/docs/reviewing.md +0 -159
  570. ipakit-0.2.0/docs/rules.md +0 -919
  571. ipakit-0.2.0/docs/similarity.md +0 -147
  572. ipakit-0.2.0/docs/state-of-the-work.md +0 -89
  573. ipakit-0.2.0/docs/supplements.md +0 -186
  574. ipakit-0.2.0/docs/syllabification.md +0 -130
  575. ipakit-0.2.0/docs/tiergraph-acceptance.md +0 -30
  576. ipakit-0.2.0/docs/ties.md +0 -156
  577. ipakit-0.2.0/docs/tone.md +0 -142
  578. ipakit-0.2.0/docs/tract-anatomy.md +0 -235
  579. ipakit-0.2.0/docs/tract-figures.md +0 -152
  580. ipakit-0.2.0/docs/tract-reference.md +0 -68
  581. ipakit-0.2.0/docs/tutorial-basics.md +0 -117
  582. ipakit-0.2.0/docs/tutorial-basics.src.md +0 -114
  583. ipakit-0.2.0/docs/tutorial.md +0 -1011
  584. ipakit-0.2.0/docs/tutorial.src.md +0 -849
  585. ipakit-0.2.0/ipakit/__init__.py +0 -1901
  586. ipakit-0.2.0/ipakit/_base.py +0 -145
  587. ipakit-0.2.0/ipakit/_cmu_graph.py +0 -184
  588. ipakit-0.2.0/ipakit/_codecs.py +0 -289
  589. ipakit-0.2.0/ipakit/_containment_projection.py +0 -1134
  590. ipakit-0.2.0/ipakit/_corpus.py +0 -740
  591. ipakit-0.2.0/ipakit/_corpus_query.py +0 -420
  592. ipakit-0.2.0/ipakit/_fact_builder.py +0 -564
  593. ipakit-0.2.0/ipakit/_gesture_backend.py +0 -136
  594. ipakit-0.2.0/ipakit/_gesture_graph.py +0 -142
  595. ipakit-0.2.0/ipakit/_graph_facts.py +0 -274
  596. ipakit-0.2.0/ipakit/_ipa_graph.py +0 -244
  597. ipakit-0.2.0/ipakit/_katakana_codec.py +0 -17
  598. ipakit-0.2.0/ipakit/_pinyin_graph.py +0 -185
  599. ipakit-0.2.0/ipakit/_rewrite_graph.py +0 -382
  600. ipakit-0.2.0/ipakit/align.py +0 -275
  601. ipakit-0.2.0/ipakit/analysis.py +0 -934
  602. ipakit-0.2.0/ipakit/bridges/base.py +0 -42
  603. ipakit-0.2.0/ipakit/bridges/costmodel.py +0 -743
  604. ipakit-0.2.0/ipakit/bridges/kana.py +0 -53
  605. ipakit-0.2.0/ipakit/bridges/mfa.py +0 -84
  606. ipakit-0.2.0/ipakit/bridges/phoible.py +0 -299
  607. ipakit-0.2.0/ipakit/bridges/pinyin.py +0 -113
  608. ipakit-0.2.0/ipakit/bridges/vocabulary.py +0 -610
  609. ipakit-0.2.0/ipakit/cli/__init__.py +0 -242
  610. ipakit-0.2.0/ipakit/cli/analysis_cmds.py +0 -334
  611. ipakit-0.2.0/ipakit/cli/analyze.py +0 -381
  612. ipakit-0.2.0/ipakit/cli/convert.py +0 -754
  613. ipakit-0.2.0/ipakit/cli/distance.py +0 -1199
  614. ipakit-0.2.0/ipakit/cli/features.py +0 -174
  615. ipakit-0.2.0/ipakit/cli/inventory.py +0 -156
  616. ipakit-0.2.0/ipakit/cli/phoible.py +0 -113
  617. ipakit-0.2.0/ipakit/cli/policy.py +0 -128
  618. ipakit-0.2.0/ipakit/cli/query.py +0 -581
  619. ipakit-0.2.0/ipakit/cli/rules.py +0 -1038
  620. ipakit-0.2.0/ipakit/data/bridges/espeak/af.xml +0 -181
  621. ipakit-0.2.0/ipakit/data/bridges/espeak/am.xml +0 -133
  622. ipakit-0.2.0/ipakit/data/bridges/espeak/an.xml +0 -164
  623. ipakit-0.2.0/ipakit/data/bridges/espeak/ar.xml +0 -136
  624. ipakit-0.2.0/ipakit/data/bridges/espeak/as.xml +0 -191
  625. ipakit-0.2.0/ipakit/data/bridges/espeak/az.xml +0 -164
  626. ipakit-0.2.0/ipakit/data/bridges/espeak/ba.xml +0 -147
  627. ipakit-0.2.0/ipakit/data/bridges/espeak/be.xml +0 -164
  628. ipakit-0.2.0/ipakit/data/bridges/espeak/bg.xml +0 -149
  629. ipakit-0.2.0/ipakit/data/bridges/espeak/bn.xml +0 -191
  630. ipakit-0.2.0/ipakit/data/bridges/espeak/bpy.xml +0 -191
  631. ipakit-0.2.0/ipakit/data/bridges/espeak/ca-ba.xml +0 -172
  632. ipakit-0.2.0/ipakit/data/bridges/espeak/ca-nw.xml +0 -172
  633. ipakit-0.2.0/ipakit/data/bridges/espeak/ca-va.xml +0 -172
  634. ipakit-0.2.0/ipakit/data/bridges/espeak/ca.xml +0 -172
  635. ipakit-0.2.0/ipakit/data/bridges/espeak/chr.xml +0 -192
  636. ipakit-0.2.0/ipakit/data/bridges/espeak/cmn.xml +0 -203
  637. ipakit-0.2.0/ipakit/data/bridges/espeak/cs.xml +0 -170
  638. ipakit-0.2.0/ipakit/data/bridges/espeak/cv.xml +0 -168
  639. ipakit-0.2.0/ipakit/data/bridges/espeak/cy.xml +0 -173
  640. ipakit-0.2.0/ipakit/data/bridges/espeak/da.xml +0 -181
  641. ipakit-0.2.0/ipakit/data/bridges/espeak/de.xml +0 -181
  642. ipakit-0.2.0/ipakit/data/bridges/espeak/el.xml +0 -157
  643. ipakit-0.2.0/ipakit/data/bridges/espeak/en-n.xml +0 -230
  644. ipakit-0.2.0/ipakit/data/bridges/espeak/en-rp.xml +0 -230
  645. ipakit-0.2.0/ipakit/data/bridges/espeak/en-sc.xml +0 -232
  646. ipakit-0.2.0/ipakit/data/bridges/espeak/en-us-nyc.xml +0 -229
  647. ipakit-0.2.0/ipakit/data/bridges/espeak/en-us.xml +0 -229
  648. ipakit-0.2.0/ipakit/data/bridges/espeak/en-wi.xml +0 -230
  649. ipakit-0.2.0/ipakit/data/bridges/espeak/en-wm.xml +0 -230
  650. ipakit-0.2.0/ipakit/data/bridges/espeak/en.xml +0 -70
  651. ipakit-0.2.0/ipakit/data/bridges/espeak/eo.xml +0 -140
  652. ipakit-0.2.0/ipakit/data/bridges/espeak/es-la.xml +0 -161
  653. ipakit-0.2.0/ipakit/data/bridges/espeak/es.xml +0 -161
  654. ipakit-0.2.0/ipakit/data/bridges/espeak/et.xml +0 -166
  655. ipakit-0.2.0/ipakit/data/bridges/espeak/eu.xml +0 -162
  656. ipakit-0.2.0/ipakit/data/bridges/espeak/fa.xml +0 -133
  657. ipakit-0.2.0/ipakit/data/bridges/espeak/fi.xml +0 -178
  658. ipakit-0.2.0/ipakit/data/bridges/espeak/fo.xml +0 -193
  659. ipakit-0.2.0/ipakit/data/bridges/espeak/fr.xml +0 -177
  660. ipakit-0.2.0/ipakit/data/bridges/espeak/ga.xml +0 -171
  661. ipakit-0.2.0/ipakit/data/bridges/espeak/gd.xml +0 -176
  662. ipakit-0.2.0/ipakit/data/bridges/espeak/gn.xml +0 -141
  663. ipakit-0.2.0/ipakit/data/bridges/espeak/grc.xml +0 -165
  664. ipakit-0.2.0/ipakit/data/bridges/espeak/gu.xml +0 -192
  665. ipakit-0.2.0/ipakit/data/bridges/espeak/hak.xml +0 -167
  666. ipakit-0.2.0/ipakit/data/bridges/espeak/haw.xml +0 -148
  667. ipakit-0.2.0/ipakit/data/bridges/espeak/he.xml +0 -127
  668. ipakit-0.2.0/ipakit/data/bridges/espeak/hi.xml +0 -188
  669. ipakit-0.2.0/ipakit/data/bridges/espeak/hr.xml +0 -179
  670. ipakit-0.2.0/ipakit/data/bridges/espeak/ht.xml +0 -177
  671. ipakit-0.2.0/ipakit/data/bridges/espeak/hu.xml +0 -146
  672. ipakit-0.2.0/ipakit/data/bridges/espeak/hy.xml +0 -144
  673. ipakit-0.2.0/ipakit/data/bridges/espeak/ia.xml +0 -140
  674. ipakit-0.2.0/ipakit/data/bridges/espeak/id.xml +0 -163
  675. ipakit-0.2.0/ipakit/data/bridges/espeak/is.xml +0 -171
  676. ipakit-0.2.0/ipakit/data/bridges/espeak/it.xml +0 -176
  677. ipakit-0.2.0/ipakit/data/bridges/espeak/ja.xml +0 -138
  678. ipakit-0.2.0/ipakit/data/bridges/espeak/jbo.xml +0 -140
  679. ipakit-0.2.0/ipakit/data/bridges/espeak/ka.xml +0 -134
  680. ipakit-0.2.0/ipakit/data/bridges/espeak/kaa.xml +0 -144
  681. ipakit-0.2.0/ipakit/data/bridges/espeak/kk.xml +0 -144
  682. ipakit-0.2.0/ipakit/data/bridges/espeak/kl.xml +0 -145
  683. ipakit-0.2.0/ipakit/data/bridges/espeak/kn.xml +0 -188
  684. ipakit-0.2.0/ipakit/data/bridges/espeak/ko.xml +0 -140
  685. ipakit-0.2.0/ipakit/data/bridges/espeak/kok.xml +0 -191
  686. ipakit-0.2.0/ipakit/data/bridges/espeak/ku.xml +0 -166
  687. ipakit-0.2.0/ipakit/data/bridges/espeak/ky.xml +0 -136
  688. ipakit-0.2.0/ipakit/data/bridges/espeak/la.xml +0 -154
  689. ipakit-0.2.0/ipakit/data/bridges/espeak/lb.xml +0 -171
  690. ipakit-0.2.0/ipakit/data/bridges/espeak/lt.xml +0 -179
  691. ipakit-0.2.0/ipakit/data/bridges/espeak/lv.xml +0 -164
  692. ipakit-0.2.0/ipakit/data/bridges/espeak/mi.xml +0 -163
  693. ipakit-0.2.0/ipakit/data/bridges/espeak/mk.xml +0 -180
  694. ipakit-0.2.0/ipakit/data/bridges/espeak/ml.xml +0 -193
  695. ipakit-0.2.0/ipakit/data/bridges/espeak/mr.xml +0 -192
  696. ipakit-0.2.0/ipakit/data/bridges/espeak/ms.xml +0 -163
  697. ipakit-0.2.0/ipakit/data/bridges/espeak/mt.xml +0 -167
  698. ipakit-0.2.0/ipakit/data/bridges/espeak/mto.xml +0 -170
  699. ipakit-0.2.0/ipakit/data/bridges/espeak/my.xml +0 -246
  700. ipakit-0.2.0/ipakit/data/bridges/espeak/nci.xml +0 -157
  701. ipakit-0.2.0/ipakit/data/bridges/espeak/ne.xml +0 -204
  702. ipakit-0.2.0/ipakit/data/bridges/espeak/nl.xml +0 -164
  703. ipakit-0.2.0/ipakit/data/bridges/espeak/no.xml +0 -168
  704. ipakit-0.2.0/ipakit/data/bridges/espeak/nog.xml +0 -144
  705. ipakit-0.2.0/ipakit/data/bridges/espeak/nso.xml +0 -133
  706. ipakit-0.2.0/ipakit/data/bridges/espeak/om.xml +0 -144
  707. ipakit-0.2.0/ipakit/data/bridges/espeak/or.xml +0 -191
  708. ipakit-0.2.0/ipakit/data/bridges/espeak/pa.xml +0 -191
  709. ipakit-0.2.0/ipakit/data/bridges/espeak/piqd.xml +0 -176
  710. ipakit-0.2.0/ipakit/data/bridges/espeak/pl.xml +0 -147
  711. ipakit-0.2.0/ipakit/data/bridges/espeak/prs.xml +0 -135
  712. ipakit-0.2.0/ipakit/data/bridges/espeak/pt-pt.xml +0 -185
  713. ipakit-0.2.0/ipakit/data/bridges/espeak/pt.xml +0 -185
  714. ipakit-0.2.0/ipakit/data/bridges/espeak/py.xml +0 -144
  715. ipakit-0.2.0/ipakit/data/bridges/espeak/qdb.xml +0 -230
  716. ipakit-0.2.0/ipakit/data/bridges/espeak/qu.xml +0 -132
  717. ipakit-0.2.0/ipakit/data/bridges/espeak/quc.xml +0 -127
  718. ipakit-0.2.0/ipakit/data/bridges/espeak/qya.xml +0 -159
  719. ipakit-0.2.0/ipakit/data/bridges/espeak/ro.xml +0 -191
  720. ipakit-0.2.0/ipakit/data/bridges/espeak/ru-lv.xml +0 -177
  721. ipakit-0.2.0/ipakit/data/bridges/espeak/ru.xml +0 -177
  722. ipakit-0.2.0/ipakit/data/bridges/espeak/sd.xml +0 -188
  723. ipakit-0.2.0/ipakit/data/bridges/espeak/shn.xml +0 -171
  724. ipakit-0.2.0/ipakit/data/bridges/espeak/si.xml +0 -194
  725. ipakit-0.2.0/ipakit/data/bridges/espeak/sjn.xml +0 -161
  726. ipakit-0.2.0/ipakit/data/bridges/espeak/sk.xml +0 -170
  727. ipakit-0.2.0/ipakit/data/bridges/espeak/sl.xml +0 -150
  728. ipakit-0.2.0/ipakit/data/bridges/espeak/smj.xml +0 -189
  729. ipakit-0.2.0/ipakit/data/bridges/espeak/sq.xml +0 -159
  730. ipakit-0.2.0/ipakit/data/bridges/espeak/sr.xml +0 -181
  731. ipakit-0.2.0/ipakit/data/bridges/espeak/sv.xml +0 -160
  732. ipakit-0.2.0/ipakit/data/bridges/espeak/sw.xml +0 -127
  733. ipakit-0.2.0/ipakit/data/bridges/espeak/ta.xml +0 -194
  734. ipakit-0.2.0/ipakit/data/bridges/espeak/te.xml +0 -188
  735. ipakit-0.2.0/ipakit/data/bridges/espeak/th.xml +0 -171
  736. ipakit-0.2.0/ipakit/data/bridges/espeak/ti.xml +0 -134
  737. ipakit-0.2.0/ipakit/data/bridges/espeak/tk.xml +0 -173
  738. ipakit-0.2.0/ipakit/data/bridges/espeak/tn.xml +0 -145
  739. ipakit-0.2.0/ipakit/data/bridges/espeak/tr.xml +0 -164
  740. ipakit-0.2.0/ipakit/data/bridges/espeak/tt.xml +0 -147
  741. ipakit-0.2.0/ipakit/data/bridges/espeak/ug.xml +0 -166
  742. ipakit-0.2.0/ipakit/data/bridges/espeak/uk.xml +0 -133
  743. ipakit-0.2.0/ipakit/data/bridges/espeak/ur.xml +0 -188
  744. ipakit-0.2.0/ipakit/data/bridges/espeak/uz.xml +0 -147
  745. ipakit-0.2.0/ipakit/data/bridges/espeak/vi-hue.xml +0 -193
  746. ipakit-0.2.0/ipakit/data/bridges/espeak/vi-sgn.xml +0 -191
  747. ipakit-0.2.0/ipakit/data/bridges/espeak/vi.xml +0 -200
  748. ipakit-0.2.0/ipakit/data/bridges/espeak/yue.xml +0 -180
  749. ipakit-0.2.0/ipakit/data/bridges/kana/kana.xml +0 -15
  750. ipakit-0.2.0/ipakit/data/bridges/mfa/arabic.xml +0 -81
  751. ipakit-0.2.0/ipakit/data/bridges/mfa/bulgarian.xml +0 -54
  752. ipakit-0.2.0/ipakit/data/bridges/mfa/croatian.xml +0 -73
  753. ipakit-0.2.0/ipakit/data/bridges/mfa/czech.xml +0 -56
  754. ipakit-0.2.0/ipakit/data/bridges/mfa/english.xml +0 -104
  755. ipakit-0.2.0/ipakit/data/bridges/mfa/english_india.xml +0 -73
  756. ipakit-0.2.0/ipakit/data/bridges/mfa/english_nigeria.xml +0 -75
  757. ipakit-0.2.0/ipakit/data/bridges/mfa/english_nonnative.xml +0 -100
  758. ipakit-0.2.0/ipakit/data/bridges/mfa/english_uk.xml +0 -85
  759. ipakit-0.2.0/ipakit/data/bridges/mfa/english_us.xml +0 -86
  760. ipakit-0.2.0/ipakit/data/bridges/mfa/french.xml +0 -51
  761. ipakit-0.2.0/ipakit/data/bridges/mfa/german.xml +0 -60
  762. ipakit-0.2.0/ipakit/data/bridges/mfa/hausa.xml +0 -84
  763. ipakit-0.2.0/ipakit/data/bridges/mfa/japanese.xml +0 -91
  764. ipakit-0.2.0/ipakit/data/bridges/mfa/korean.xml +0 -113
  765. ipakit-0.2.0/ipakit/data/bridges/mfa/korean_jamo.xml +0 -64
  766. ipakit-0.2.0/ipakit/data/bridges/mfa/mandarin.xml +0 -127
  767. ipakit-0.2.0/ipakit/data/bridges/mfa/mandarin_china.xml +0 -147
  768. ipakit-0.2.0/ipakit/data/bridges/mfa/mandarin_erhua.xml +0 -127
  769. ipakit-0.2.0/ipakit/data/bridges/mfa/mandarin_taiwan.xml +0 -138
  770. ipakit-0.2.0/ipakit/data/bridges/mfa/mfa.xml +0 -851
  771. ipakit-0.2.0/ipakit/data/bridges/mfa/polish.xml +0 -58
  772. ipakit-0.2.0/ipakit/data/bridges/mfa/portuguese.xml +0 -53
  773. ipakit-0.2.0/ipakit/data/bridges/mfa/portuguese_brazil.xml +0 -48
  774. ipakit-0.2.0/ipakit/data/bridges/mfa/portuguese_portugal.xml +0 -52
  775. ipakit-0.2.0/ipakit/data/bridges/mfa/russian.xml +0 -102
  776. ipakit-0.2.0/ipakit/data/bridges/mfa/serbocroatian.xml +0 -69
  777. ipakit-0.2.0/ipakit/data/bridges/mfa/spanish.xml +0 -43
  778. ipakit-0.2.0/ipakit/data/bridges/mfa/spanish_latin_america.xml +0 -51
  779. ipakit-0.2.0/ipakit/data/bridges/mfa/spanish_spain.xml +0 -52
  780. ipakit-0.2.0/ipakit/data/bridges/mfa/swahili.xml +0 -49
  781. ipakit-0.2.0/ipakit/data/bridges/mfa/swedish.xml +0 -111
  782. ipakit-0.2.0/ipakit/data/bridges/mfa/tamil.xml +0 -63
  783. ipakit-0.2.0/ipakit/data/bridges/mfa/thai.xml +0 -137
  784. ipakit-0.2.0/ipakit/data/bridges/mfa/turkish.xml +0 -77
  785. ipakit-0.2.0/ipakit/data/bridges/mfa/ukrainian.xml +0 -92
  786. ipakit-0.2.0/ipakit/data/bridges/mfa/vietnamese.xml +0 -190
  787. ipakit-0.2.0/ipakit/data/bridges/mfa/vietnamese_hanoi.xml +0 -169
  788. ipakit-0.2.0/ipakit/data/bridges/mfa/vietnamese_ho_chi_minh_city.xml +0 -132
  789. ipakit-0.2.0/ipakit/data/bridges/mfa/vietnamese_hue.xml +0 -144
  790. ipakit-0.2.0/ipakit/data/bridges/pinyin/pinyin.xml +0 -49
  791. ipakit-0.2.0/ipakit/data/bridges/vocabulary.rng +0 -94
  792. ipakit-0.2.0/ipakit/data/confusion.json +0 -1
  793. ipakit-0.2.0/ipakit/data/ipa.rng +0 -379
  794. ipakit-0.2.0/ipakit/data/ipa.xml +0 -1011
  795. ipakit-0.2.0/ipakit/data/phonemaps/cmu.xml +0 -99
  796. ipakit-0.2.0/ipakit/data/phonemaps/phonemap.rng +0 -85
  797. ipakit-0.2.0/ipakit/data/phonemaps/timit.xml +0 -96
  798. ipakit-0.2.0/ipakit/data/rules/american-english.rules +0 -427
  799. ipakit-0.2.0/ipakit/data/rules/japanese-moraic.rules +0 -340
  800. ipakit-0.2.0/ipakit/data/syllables/japanese.xml +0 -11
  801. ipakit-0.2.0/ipakit/data/syllables/mandarin.xml +0 -4
  802. ipakit-0.2.0/ipakit/disagreement.py +0 -344
  803. ipakit-0.2.0/ipakit/distance.py +0 -1420
  804. ipakit-0.2.0/ipakit/distance_model.py +0 -815
  805. ipakit-0.2.0/ipakit/features.py +0 -4297
  806. ipakit-0.2.0/ipakit/form.py +0 -2553
  807. ipakit-0.2.0/ipakit/hierarchy.py +0 -139
  808. ipakit-0.2.0/ipakit/inventories.py +0 -602
  809. ipakit-0.2.0/ipakit/metric.py +0 -1081
  810. ipakit-0.2.0/ipakit/models.py +0 -478
  811. ipakit-0.2.0/ipakit/notebooks/ipakit-tutorial.ipynb +0 -1609
  812. ipakit-0.2.0/ipakit/phoneset_map.py +0 -538
  813. ipakit-0.2.0/ipakit/rules.py +0 -4304
  814. ipakit-0.2.0/ipakit/segment.py +0 -1170
  815. ipakit-0.2.0/ipakit/syllable.py +0 -616
  816. ipakit-0.2.0/ipakit/tiergraph_dot.py +0 -206
  817. ipakit-0.2.0/ipakit/tract.py +0 -2661
  818. ipakit-0.2.0/ipakit/tract_svg.py +0 -2424
  819. ipakit-0.2.0/ipakit.egg-info/PKG-INFO +0 -367
  820. ipakit-0.2.0/ipakit.egg-info/SOURCES.txt +0 -547
  821. ipakit-0.2.0/ipakit.egg-info/requires.txt +0 -24
  822. ipakit-0.2.0/pyproject.toml +0 -231
  823. ipakit-0.2.0/scripts/areafunctions.py +0 -2233
  824. ipakit-0.2.0/scripts/consolidation_parity.py +0 -110
  825. ipakit-0.2.0/scripts/containment_oracle.py +0 -687
  826. ipakit-0.2.0/scripts/costmodel_compare.py +0 -164
  827. ipakit-0.2.0/scripts/docexamples.py +0 -268
  828. ipakit-0.2.0/scripts/espeak_vocabularies.py +0 -631
  829. ipakit-0.2.0/scripts/interop.py +0 -1574
  830. ipakit-0.2.0/scripts/invariants.py +0 -1219
  831. ipakit-0.2.0/scripts/mfa_vocabularies.py +0 -503
  832. ipakit-0.2.0/scripts/panphon_geometry.py +0 -249
  833. ipakit-0.2.0/scripts/perceptual_validation.py +0 -183
  834. ipakit-0.2.0/scripts/piece1_oracle.py +0 -371
  835. ipakit-0.2.0/scripts/state_of_work.py +0 -159
  836. ipakit-0.2.0/scripts/sweep.py +0 -420
  837. ipakit-0.2.0/scripts/tiergraph_capture.py +0 -635
  838. ipakit-0.2.0/tests/test_agreement.py +0 -560
  839. ipakit-0.2.0/tests/test_analysis.py +0 -437
  840. ipakit-0.2.0/tests/test_api.py +0 -162
  841. ipakit-0.2.0/tests/test_api_contracts.py +0 -169
  842. ipakit-0.2.0/tests/test_bridges.py +0 -358
  843. ipakit-0.2.0/tests/test_ci_contract.py +0 -277
  844. ipakit-0.2.0/tests/test_cli.py +0 -2114
  845. ipakit-0.2.0/tests/test_cli_hygiene.py +0 -627
  846. ipakit-0.2.0/tests/test_coherent_composition.py +0 -635
  847. ipakit-0.2.0/tests/test_confusion.py +0 -75
  848. ipakit-0.2.0/tests/test_constriction_location.py +0 -813
  849. ipakit-0.2.0/tests/test_corpus_kernel.py +0 -302
  850. ipakit-0.2.0/tests/test_corpus_query.py +0 -146
  851. ipakit-0.2.0/tests/test_costmodel.py +0 -439
  852. ipakit-0.2.0/tests/test_declared_not_hardcoded.py +0 -1215
  853. ipakit-0.2.0/tests/test_denominator.py +0 -116
  854. ipakit-0.2.0/tests/test_descriptions.py +0 -147
  855. ipakit-0.2.0/tests/test_distance.py +0 -582
  856. ipakit-0.2.0/tests/test_distance_model.py +0 -649
  857. ipakit-0.2.0/tests/test_distinctive_difference.py +0 -135
  858. ipakit-0.2.0/tests/test_espeak_generator.py +0 -67
  859. ipakit-0.2.0/tests/test_feature_reads.py +0 -141
  860. ipakit-0.2.0/tests/test_feature_realization.py +0 -296
  861. ipakit-0.2.0/tests/test_features.py +0 -205
  862. ipakit-0.2.0/tests/test_form.py +0 -1016
  863. ipakit-0.2.0/tests/test_indel_costs.py +0 -666
  864. ipakit-0.2.0/tests/test_inventories.py +0 -575
  865. ipakit-0.2.0/tests/test_license.py +0 -88
  866. ipakit-0.2.0/tests/test_ligature_aliases.py +0 -478
  867. ipakit-0.2.0/tests/test_linking_and_agreement.py +0 -82
  868. ipakit-0.2.0/tests/test_metric.py +0 -1157
  869. ipakit-0.2.0/tests/test_mfa_vocabularies.py +0 -116
  870. ipakit-0.2.0/tests/test_models.py +0 -127
  871. ipakit-0.2.0/tests/test_nearest_pronunciation.py +0 -100
  872. ipakit-0.2.0/tests/test_nonfinal_modifiers.py +0 -273
  873. ipakit-0.2.0/tests/test_one_composition.py +0 -467
  874. ipakit-0.2.0/tests/test_packaging.py +0 -436
  875. ipakit-0.2.0/tests/test_panphon_geometry.py +0 -109
  876. ipakit-0.2.0/tests/test_panphon_live_geometry.py +0 -97
  877. ipakit-0.2.0/tests/test_phoible.py +0 -114
  878. ipakit-0.2.0/tests/test_phoneset_comparison.py +0 -148
  879. ipakit-0.2.0/tests/test_posture_no_side_channel.py +0 -177
  880. ipakit-0.2.0/tests/test_projection_coherence.py +0 -277
  881. ipakit-0.2.0/tests/test_prosodic_riders.py +0 -101
  882. ipakit-0.2.0/tests/test_query.py +0 -1102
  883. ipakit-0.2.0/tests/test_rule_sets.py +0 -2302
  884. ipakit-0.2.0/tests/test_rules.py +0 -2938
  885. ipakit-0.2.0/tests/test_search.py +0 -274
  886. ipakit-0.2.0/tests/test_sequence_scoring.py +0 -121
  887. ipakit-0.2.0/tests/test_supplements.py +0 -673
  888. ipakit-0.2.0/tests/test_syllable_docs.py +0 -42
  889. ipakit-0.2.0/tests/test_syllable_japanese.py +0 -81
  890. ipakit-0.2.0/tests/test_textgrid.py +0 -485
  891. ipakit-0.2.0/tests/test_tie_sense.py +0 -384
  892. ipakit-0.2.0/tests/test_tiers.py +0 -210
  893. ipakit-0.2.0/tests/test_tokenization.py +0 -570
  894. ipakit-0.2.0/tests/test_tone_contours.py +0 -424
  895. ipakit-0.2.0/tests/test_tract_figures.py +0 -2319
  896. ipakit-0.2.0/tests/test_unicode_recomposition.py +0 -101
  897. ipakit-0.2.0/tests/test_unplaced_marks.py +0 -335
  898. ipakit-0.2.0/tests/test_variable_width.py +0 -228
  899. ipakit-0.2.0/tests/test_vowel_tract_limit.py +0 -407
  900. ipakit-0.2.0/tests/test_zero.py +0 -817
  901. ipakit-0.2.0/tests/tiergraph/test_codecs.py +0 -167
  902. ipakit-0.2.0/tests/tiergraph/test_dot.py +0 -278
  903. ipakit-0.2.0/tests/tiergraph/test_fixture_wellformedness.py +0 -157
  904. ipakit-0.2.0/tests/tiergraph/test_form_store.py +0 -431
  905. ipakit-0.2.0/tests/tiergraph/test_gesture_integration.py +0 -167
  906. ipakit-0.2.0/tests/tiergraph/test_ipa_graph.py +0 -157
  907. ipakit-0.2.0/tests/tiergraph/test_lane_m_stabilization.py +0 -105
  908. ipakit-0.2.0/tests/tiergraph/test_piece1_oracle.py +0 -40
  909. ipakit-0.2.0/tests/tiergraph/test_rewrite_bridge.py +0 -266
  910. {ipakit-0.2.0 → ipakit-0.3.0}/LICENSE +0 -0
  911. {ipakit-0.2.0 → ipakit-0.3.0}/conftest.py +0 -0
  912. {ipakit-0.2.0 → ipakit-0.3.0}/docs/anchor-study.md +0 -0
  913. {ipakit-0.2.0 → ipakit-0.3.0}/docs/design/captures.md +0 -0
  914. {ipakit-0.2.0 → ipakit-0.3.0}/docs/design/morph-boundary.md +0 -0
  915. {ipakit-0.2.0 → ipakit-0.3.0}/docs/design/samprosa.md +0 -0
  916. {ipakit-0.2.0 → ipakit-0.3.0}/docs/design/tract-validation.md +0 -0
  917. {ipakit-0.2.0 → ipakit-0.3.0}/docs/design/vowel-chart-geometry.md +0 -0
  918. {ipakit-0.2.0 → ipakit-0.3.0}/docs/design/vowel-constriction.md +0 -0
  919. {ipakit-0.2.0 → ipakit-0.3.0}/docs/espeak-vocabularies.md +0 -0
  920. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/frontal-a.svg +0 -0
  921. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/frontal-i.svg +0 -0
  922. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/frontal-m.svg +0 -0
  923. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/frontal-reference.svg +0 -0
  924. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/frontal-rest.svg +0 -0
  925. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/frontal-t.svg +0 -0
  926. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/frontal-u.svg +0 -0
  927. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/tract-a.svg +0 -0
  928. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/tract-eng.svg +0 -0
  929. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/tract-esh.svg +0 -0
  930. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/tract-i.svg +0 -0
  931. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/tract-k.svg +0 -0
  932. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/tract-m.svg +0 -0
  933. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/tract-n.svg +0 -0
  934. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/tract-reference.svg +0 -0
  935. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/tract-s.svg +0 -0
  936. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/tract-silence.svg +0 -0
  937. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/tract-t.svg +0 -0
  938. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/tract-theta.svg +0 -0
  939. {ipakit-0.2.0 → ipakit-0.3.0}/docs/figures/tract-u.svg +0 -0
  940. {ipakit-0.2.0 → ipakit-0.3.0}/docs/house-style-exhibits.md +0 -0
  941. {ipakit-0.2.0 → ipakit-0.3.0}/docs/mfa-vocabularies.md +0 -0
  942. {ipakit-0.2.0 → ipakit-0.3.0}/docs/perceptual-validation-exhibits.md +0 -0
  943. {ipakit-0.2.0 → ipakit-0.3.0}/docs/reading.md +0 -0
  944. {ipakit-0.2.0 → ipakit-0.3.0}/docs/textgrid.md +0 -0
  945. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/__main__.py +0 -0
  946. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/_convert.py +0 -0
  947. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/_corpus_cmudict.py +0 -0
  948. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/_identity.py +0 -0
  949. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/_mora_graph.py +0 -0
  950. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/_notebook.py +0 -0
  951. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/_panphon_graph.py +0 -0
  952. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/_textgrid_graph.py +0 -0
  953. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/anatomy.py +0 -0
  954. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/bridges/__init__.py +0 -0
  955. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/bridges/espeak.py +0 -0
  956. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/bridges/generator.py +0 -0
  957. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/bridges/ipa_dict.py +0 -0
  958. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/bridges/notation.py +0 -0
  959. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/bridges/provider.py +0 -0
  960. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/cli/__main__.py +0 -0
  961. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/cli/base.py +0 -0
  962. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/cli/corpus.py +0 -0
  963. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/cli/hierarchy.py +0 -0
  964. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/cli/info.py +0 -0
  965. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/cli/notebook.py +0 -0
  966. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/cli/syllabify.py +0 -0
  967. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/cli/textgrid.py +0 -0
  968. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/cli/tiergraph.py +0 -0
  969. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/cli/tract.py +0 -0
  970. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/closure.py +0 -0
  971. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/constants.py +0 -0
  972. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/corpus.py +0 -0
  973. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/attested/miller_nicely_1955.json +0 -0
  974. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/heads.rng +0 -0
  975. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/heads.xml +0 -0
  976. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/phonemaps/kirshenbaum.xml +0 -0
  977. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/phonemaps/lookalikes.xml +0 -0
  978. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/phonemaps/xsampa.xml +0 -0
  979. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/rules/french-liaison.rules +0 -0
  980. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/rules/german-final-devoicing.rules +0 -0
  981. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/rules/spanish-accented-english.rules +0 -0
  982. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/supplements/aspirated-stops.xml +0 -0
  983. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/supplements/supplement.rng +0 -0
  984. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/syllables/english.xml +0 -0
  985. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/syllables/spanish.xml +0 -0
  986. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/syllables/syllables.rng +0 -0
  987. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/textgrid/mfa.json +0 -0
  988. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/textgrid/prosody.json +0 -0
  989. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/textgrid/segments.json +0 -0
  990. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/data/textgrid/words.json +0 -0
  991. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/experiment.py +0 -0
  992. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/mapper.py +0 -0
  993. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/phonemaps.py +0 -0
  994. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/py.typed +0 -0
  995. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/textgrid.py +0 -0
  996. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/validation.py +0 -0
  997. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit/xsampa.py +0 -0
  998. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit.egg-info/dependency_links.txt +0 -0
  999. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit.egg-info/entry_points.txt +0 -0
  1000. {ipakit-0.2.0 → ipakit-0.3.0}/ipakit.egg-info/top_level.txt +0 -0
  1001. {ipakit-0.2.0 → ipakit-0.3.0}/scripts/anchor_study.py +0 -0
  1002. {ipakit-0.2.0 → ipakit-0.3.0}/scripts/articulatory.py +0 -0
  1003. {ipakit-0.2.0 → ipakit-0.3.0}/scripts/check_hrefs.py +0 -0
  1004. {ipakit-0.2.0 → ipakit-0.3.0}/scripts/confusion.py +0 -0
  1005. {ipakit-0.2.0 → ipakit-0.3.0}/scripts/corpus_scaling.py +0 -0
  1006. {ipakit-0.2.0 → ipakit-0.3.0}/scripts/disagreement_demo.py +0 -0
  1007. {ipakit-0.2.0 → ipakit-0.3.0}/scripts/docquotes.py +0 -0
  1008. {ipakit-0.2.0 → ipakit-0.3.0}/scripts/frontal_figures.py +0 -0
  1009. {ipakit-0.2.0 → ipakit-0.3.0}/scripts/gate_subject.py +0 -0
  1010. {ipakit-0.2.0 → ipakit-0.3.0}/scripts/house_style.py +0 -0
  1011. {ipakit-0.2.0 → ipakit-0.3.0}/scripts/projection_cache_characterization.py +0 -0
  1012. {ipakit-0.2.0 → ipakit-0.3.0}/scripts/syllable_curation.py +0 -0
  1013. {ipakit-0.2.0 → ipakit-0.3.0}/scripts/tiergraph_example.py +0 -0
  1014. {ipakit-0.2.0 → ipakit-0.3.0}/scripts/tract_svg.py +0 -0
  1015. {ipakit-0.2.0 → ipakit-0.3.0}/scripts/tutorial.py +0 -0
  1016. {ipakit-0.2.0 → ipakit-0.3.0}/scripts/xsampa_table.py +0 -0
  1017. {ipakit-0.2.0 → ipakit-0.3.0}/setup.cfg +0 -0
  1018. {ipakit-0.2.0 → ipakit-0.3.0}/tests/__init__.py +0 -0
  1019. {ipakit-0.2.0 → ipakit-0.3.0}/tests/_renderers.py +0 -0
  1020. {ipakit-0.2.0 → ipakit-0.3.0}/tests/conftest.py +0 -0
  1021. {ipakit-0.2.0 → ipakit-0.3.0}/tests/corpus.py +0 -0
  1022. {ipakit-0.2.0 → ipakit-0.3.0}/tests/fixtures/_capture_animation_sha256.py +0 -0
  1023. {ipakit-0.2.0 → ipakit-0.3.0}/tests/fixtures/_capture_epiglottal_constriction.py +0 -0
  1024. {ipakit-0.2.0 → ipakit-0.3.0}/tests/fixtures/_capture_posture_golden.py +0 -0
  1025. {ipakit-0.2.0 → ipakit-0.3.0}/tests/fixtures/_capture_velic_contrast.py +0 -0
  1026. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_align.py +0 -0
  1027. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_anchor_study.py +0 -0
  1028. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_animation_rest.py +0 -0
  1029. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_calculus.py +0 -0
  1030. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_capture_scripts.py +0 -0
  1031. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_cli_query.py +0 -0
  1032. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_closure.py +0 -0
  1033. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_cmu.py +0 -0
  1034. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_corpus_cmudict.py +0 -0
  1035. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_degenerate_boundaries.py +0 -0
  1036. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_determinism.py +0 -0
  1037. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_disagreement.py +0 -0
  1038. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_doc_citations.py +0 -0
  1039. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_docquotes.py +0 -0
  1040. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_espeak_binary.py +0 -0
  1041. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_experiment.py +0 -0
  1042. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_fortis.py +0 -0
  1043. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_frontal.py +0 -0
  1044. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_head_arcs.py +0 -0
  1045. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_hierarchy.py +0 -0
  1046. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_intervals.py +0 -0
  1047. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_invertibility.py +0 -0
  1048. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_ipa_dict.py +0 -0
  1049. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_jaw_hinge.py +0 -0
  1050. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_modifier_modes.py +0 -0
  1051. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_multi_constriction.py +0 -0
  1052. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_notation.py +0 -0
  1053. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_notebook.py +0 -0
  1054. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_one_classification.py +0 -0
  1055. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_panphon_facts.py +0 -0
  1056. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_perceptual_validation.py +0 -0
  1057. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_phonemaps.py +0 -0
  1058. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_phoneset_map.py +0 -0
  1059. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_posture_animation.py +0 -0
  1060. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_projection_cache.py +0 -0
  1061. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_query_dsl.py +0 -0
  1062. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_rank_agreement.py +0 -0
  1063. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_schema.py +0 -0
  1064. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_scoring_parameters.py +0 -0
  1065. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_segment.py +0 -0
  1066. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_sentinels.py +0 -0
  1067. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_stress.py +0 -0
  1068. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_strict.py +0 -0
  1069. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_surface_wave2.py +0 -0
  1070. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_syllable_english.py +0 -0
  1071. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_syllable_mandarin.py +0 -0
  1072. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_syllable_mechanism.py +0 -0
  1073. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_syllable_spanish.py +0 -0
  1074. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_tie_convergence.py +0 -0
  1075. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_tier_context.py +0 -0
  1076. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_tier_rebase.py +0 -0
  1077. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_tract_blend.py +0 -0
  1078. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_trajectory_track.py +0 -0
  1079. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_two_marks.py +0 -0
  1080. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_unicode_normalization.py +0 -0
  1081. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_validation.py +0 -0
  1082. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_wiki.py +0 -0
  1083. {ipakit-0.2.0 → ipakit-0.3.0}/tests/test_xsampa.py +0 -0
  1084. {ipakit-0.2.0 → ipakit-0.3.0}/tests/tiergraph/test_choice_selection_golden.py +0 -0
  1085. {ipakit-0.2.0 → ipakit-0.3.0}/tests/tiergraph/test_consolidation_parity.py +0 -0
  1086. {ipakit-0.2.0 → ipakit-0.3.0}/tests/tiergraph/test_j_panphon.py +0 -0
  1087. {ipakit-0.2.0 → ipakit-0.3.0}/tests/tiergraph/test_j_profiles.py +0 -0
  1088. {ipakit-0.2.0 → ipakit-0.3.0}/tests/tiergraph/test_prominence.py +0 -0
@@ -0,0 +1,297 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ schedule:
8
+ # Nightly full suite: runs the slow-marked sweep tests that per-PR CI skips.
9
+ - cron: "0 7 * * *"
10
+ workflow_dispatch:
11
+
12
+ concurrency:
13
+ group: ci-${{ github.ref }}
14
+ cancel-in-progress: true
15
+
16
+ permissions:
17
+ contents: read
18
+
19
+ jobs:
20
+ # Decide whether this push/PR touches anything but documentation. A doc-only
21
+ # change cannot move the metric, the derived artifacts or the Python surface,
22
+ # so the three build jobs below skip it and only `docs` runs. Every gate that
23
+ # reads the documents must therefore live in `docs` and not only in the
24
+ # pytest job, or a doc-only change skips its own check. The default is
25
+ # to run everything: anything we cannot cleanly diff sets code=true, so the
26
+ # optimization can only ever skip work it is sure is safe to skip.
27
+ changes:
28
+ name: detect doc-only changes
29
+ runs-on: ubuntu-latest
30
+ outputs:
31
+ code: ${{ steps.filter.outputs.code }}
32
+ steps:
33
+ - uses: actions/checkout@v7
34
+ with:
35
+ fetch-depth: 0
36
+ - id: filter
37
+ env:
38
+ BASE: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
39
+ HEAD: ${{ github.sha }}
40
+ run: |
41
+ set -eu
42
+ # Fail safe: no usable base (first push, force-push, missing SHA) runs
43
+ # the full build rather than guessing what changed.
44
+ if [ -z "${BASE:-}" ] || ! git cat-file -e "${BASE}^{commit}" 2>/dev/null; then
45
+ echo "no usable base ('${BASE:-}'); running full CI"
46
+ echo "code=true" >> "$GITHUB_OUTPUT"
47
+ exit 0
48
+ fi
49
+ changed="$(git diff --name-only "$BASE" "$HEAD")"
50
+ echo "changed files:"
51
+ printf ' %s\n' $changed
52
+ code=false
53
+ while IFS= read -r f; do
54
+ [ -z "$f" ] && continue
55
+ case "$f" in
56
+ # The doc set: docs/, any markdown, the generated tutorial
57
+ # notebook, and the license. Everything else is code.
58
+ docs/*|*.md|ipakit/notebooks/*|LICENSE*) ;;
59
+ *) code=true ;;
60
+ esac
61
+ done <<INNER
62
+ $changed
63
+ INNER
64
+ echo "run build jobs? code=$code"
65
+ echo "code=$code" >> "$GITHUB_OUTPUT"
66
+
67
+ lint:
68
+ name: lint (ruff / black / mypy)
69
+ needs: changes
70
+ if: ${{ needs.changes.outputs.code == 'true' }}
71
+ runs-on: ubuntu-latest
72
+ steps:
73
+ - uses: actions/checkout@v7
74
+ - uses: actions/setup-python@v7
75
+ with:
76
+ python-version: "3.12"
77
+ cache: pip
78
+ cache-dependency-path: pyproject.toml
79
+ - run: python -m pip install --upgrade pip
80
+ - run: pip install -e ".[lint]"
81
+ # `.`, matching the Makefile, because naming three directories left the
82
+ # tracked root `conftest.py` linted by neither -- and it configures the
83
+ # whole suite. An unused import added there passes this job and fails
84
+ # `make lint`, which is the wrong way round: the gate anyone reads was
85
+ # the looser one. ruff and black both honor .gitignore, so `.` is the
86
+ # same file set the release gate walks, not a wider one.
87
+ - run: ruff check .
88
+ - run: black --check .
89
+ - run: mypy --config-file=pyproject.toml
90
+
91
+ test:
92
+ name: test (py${{ matrix.python-version }})
93
+ needs: changes
94
+ if: ${{ needs.changes.outputs.code == 'true' }}
95
+ runs-on: ubuntu-latest
96
+ strategy:
97
+ fail-fast: false
98
+ matrix:
99
+ python-version: ["3.12", "3.13"]
100
+ steps:
101
+ - uses: actions/checkout@v7
102
+ - uses: actions/setup-python@v7
103
+ with:
104
+ python-version: ${{ matrix.python-version }}
105
+ cache: pip
106
+ cache-dependency-path: pyproject.toml
107
+ - run: python -m pip install --upgrade pip
108
+ # The test extra carries lxml, which is what validates the shipped XML
109
+ # against the grammars beside it; without a validator test_schema.py
110
+ # errors rather than skipping, so this job is where that is guaranteed
111
+ # to run. The ICU-backed X-SAMPA cross-check self-skips (importorskip);
112
+ # the confusion-matrix guard is stdlib and runs.
113
+ - run: pip install -e ".[test]"
114
+ # What is under test, asserted before anything tests it. The suite is
115
+ # only evidence about this branch if `import ipakit` resolves inside the
116
+ # checkout, and nothing here checked that: an install resolving to a
117
+ # published ipakit instead would run the whole suite green against code
118
+ # the branch does not contain. `make check` has run this since it
119
+ # existed; CI, which is the run anyone actually reads, did not.
120
+ # It also puts the tiergraph path and version in the log, which is the
121
+ # provenance a red run gets diagnosed against.
122
+ - name: The subject under test is this checkout
123
+ run: python -m scripts.gate_subject
124
+ # Across the runner's cores, as the Makefile does. A matrix job is three
125
+ # runs of the same suite, so the saving is paid three times per push.
126
+ # The default -m 'not slow' (pyproject addopts) keeps the O(n^2) sweep
127
+ # tests out of the per-PR run; the full-suite job below runs them.
128
+ - run: pytest -n auto
129
+
130
+ full-suite:
131
+ name: full suite (incl. slow)
132
+ needs: changes
133
+ # The per-PR test job skips slow-marked sweep tests to keep feedback fast.
134
+ # This job runs every test, slow included, where the wait is acceptable:
135
+ # merges to main, the nightly schedule, and manual dispatch — never on a
136
+ # pull_request.
137
+ if: ${{ github.event_name != 'pull_request' && needs.changes.outputs.code == 'true' }}
138
+ runs-on: ubuntu-latest
139
+ steps:
140
+ - uses: actions/checkout@v7
141
+ - uses: actions/setup-python@v7
142
+ with:
143
+ python-version: "3.12"
144
+ cache: pip
145
+ cache-dependency-path: pyproject.toml
146
+ - run: python -m pip install --upgrade pip
147
+ - run: pip install -e ".[test]"
148
+ # Override the addopts default (-m 'not slow') so every test runs.
149
+ - run: pytest -m "slow or not slow" -n auto
150
+
151
+ guards:
152
+ name: derived-artifact guards (ICU)
153
+ needs: changes
154
+ if: ${{ needs.changes.outputs.code == 'true' }}
155
+ runs-on: ubuntu-latest
156
+ steps:
157
+ - uses: actions/checkout@v7
158
+ - uses: actions/setup-python@v7
159
+ with:
160
+ python-version: "3.12"
161
+ cache: pip
162
+ cache-dependency-path: pyproject.toml
163
+ - run: python -m pip install --upgrade pip
164
+ # dev pulls icukit-pyicu (bundled ICU + PyICU) so the X-SAMPA table can be derived.
165
+ - run: pip install -e ".[dev]"
166
+ - name: X-SAMPA table matches ICU + overrides
167
+ run: python scripts/xsampa_table.py validate
168
+ - name: Confusion matrix matches the metric
169
+ run: python scripts/confusion.py validate
170
+ - name: Geometry figures in docs/distance.md match the metric (numpy; skipped in the matrix job)
171
+ env:
172
+ PYTHONHASHSEED: "0"
173
+ run: pytest tests/test_geometry_doc.py
174
+ - name: Committed tiergraph baselines match their manifest
175
+ run: PYTHONHASHSEED=0 python scripts/tiergraph_capture.py verify-baselines
176
+ # The full invariant sweep, including "derived artifacts current", which
177
+ # is what caught the stale figure record this commit repairs. `make
178
+ # check` has always run it and CI never did, so the only thing standing
179
+ # between a regenerated artifact and a stale record of it was whether
180
+ # somebody happened to run the release gate by hand. About 40 seconds.
181
+ - name: Invariants hold and derived artifacts are current
182
+ run: PYTHONHASHSEED=0 python scripts/invariants.py
183
+ # The last two release-gate steps CI did not reach. Both re-derive a
184
+ # committed golden and compare; the manifest above only proves those
185
+ # goldens have not been hand-edited, which is a different question from
186
+ # whether the code still produces them. Nothing else reads either file:
187
+ # containment-navigation.json is read only by containment_oracle.py, and
188
+ # consolidation_parity.sha256 only by consolidation_parity.py -- the
189
+ # parity test asserts a round-trip over the corpus, never that the
190
+ # committed digest still matches it. About four seconds together.
191
+ - name: Containment navigation matches its golden
192
+ run: PYTHONHASHSEED=0 python scripts/containment_oracle.py
193
+ - name: Consolidation parity digest matches the derived corpus
194
+ run: PYTHONHASHSEED=0 python scripts/consolidation_parity.py check
195
+ - name: ICU cross-check tests (skipped in the matrix job)
196
+ run: pytest tests/test_xsampa.py
197
+ - name: Panphon characterization tests (skipped in the matrix job)
198
+ run: pytest tests/test_panphon_facts.py tests/test_panphon_live_geometry.py tests/tiergraph/test_j_panphon.py
199
+ - name: Read accepted CLTS source identity
200
+ id: clts-source
201
+ run: |
202
+ python -c 'from ipakit.clts import source_policy; s = source_policy()["source"]; print("repository=" + s["upstream-url"].removeprefix("https://github.com/")); print("revision=" + s["version"])' >> "$GITHUB_OUTPUT"
203
+ - uses: actions/checkout@v7
204
+ with:
205
+ repository: ${{ steps.clts-source.outputs.repository }}
206
+ ref: ${{ steps.clts-source.outputs.revision }}
207
+ path: .clts-source
208
+ persist-credentials: false
209
+ - name: CLTS snapshot regeneration and exhaustive scorer parity
210
+ env:
211
+ IPAKIT_CLTS_DIR: ${{ github.workspace }}/.clts-source
212
+ run: pytest tests/test_clts_snapshot.py
213
+ - name: Comparison extras tests (partition check skips in the matrix job)
214
+ run: pytest tests/test_comparison_example.py
215
+
216
+ render:
217
+ name: render (figure tests need real renderers)
218
+ needs: changes
219
+ if: ${{ needs.changes.outputs.code == 'true' }}
220
+ runs-on: ubuntu-latest
221
+ steps:
222
+ - uses: actions/checkout@v7
223
+ - uses: actions/setup-python@v7
224
+ with:
225
+ python-version: "3.12"
226
+ cache: pip
227
+ cache-dependency-path: pyproject.toml
228
+ - run: python -m pip install --upgrade pip
229
+ # The figure tests measure a rendered raster or layout, so they need a
230
+ # real renderer -- rsvg-convert (librsvg2-bin) for the SVG figures, dot
231
+ # (graphviz) for the tiergraph layout. No other job installs one, so
232
+ # everywhere else those figure tests skip. This job installs both and is
233
+ # the one place they run.
234
+ - run: sudo apt-get update && sudo apt-get install -y graphviz librsvg2-bin
235
+ - run: pip install -e ".[test]"
236
+ # REQUIRE_RENDERERS turns a missing renderer from a silent skip into a
237
+ # hard failure here (see tests/_renderers.py), so this job cannot go green
238
+ # having rendered nothing. `-m 'slow or not slow'` overrides the addopts
239
+ # default (`-m 'not slow'`) so the slow-marked figure tests run too.
240
+ - name: Figure tests run against installed renderers
241
+ env:
242
+ REQUIRE_RENDERERS: "1"
243
+ run: pytest tests/test_tract_figures.py tests/test_animation_rest.py tests/test_frontal.py tests/tiergraph/test_dot.py -m "slow or not slow" -q
244
+
245
+ docs:
246
+ name: docs (README + tutorial values current)
247
+ runs-on: ubuntu-latest
248
+ steps:
249
+ - uses: actions/checkout@v7
250
+ - uses: actions/setup-python@v7
251
+ with:
252
+ python-version: "3.12"
253
+ cache: pip
254
+ cache-dependency-path: pyproject.toml
255
+ - run: python -m pip install --upgrade pip
256
+ # The doc examples run against the installed package and its dependencies;
257
+ # scripts/docexamples.py, scripts/docquotes.py and scripts/tutorial.py
258
+ # are stdlib-only. scripts/inventory_cards.py is not: it validates every
259
+ # declared SPDX identifier through packaging, which is declared in the
260
+ # test extra because only a gate reads it. Installing the extra keeps that
261
+ # version constraint in pyproject.toml rather than spelling it here too.
262
+ - run: pip install -e ".[test]"
263
+ - name: README and docs Python examples produce their stated values
264
+ run: PYTHONHASHSEED=0 python scripts/docexamples.py
265
+ # Runs here, not only in the pytest job, because a doc-only change skips
266
+ # that job and a doc-only change is exactly what breaks a quotation.
267
+ - name: Quotations are in the documents they cite
268
+ run: python scripts/docquotes.py .
269
+ - name: Tutorial page and notebook are current
270
+ run: PYTHONHASHSEED=0 python scripts/tutorial.py check all
271
+ # Three more generated documents with a `check` mode each. `make check`
272
+ # has run all three for as long as they have existed; CI never has, so
273
+ # the regenerate-never-hand-edit rule held only for whoever ran the
274
+ # release gate by hand, and a drifting exhibit reached main green.
275
+ # They belong in this job rather than a code-triggered one because two
276
+ # of the three derive from code while the artifact lives under docs/:
277
+ # an exhibit goes stale when the metric moves, and it also goes stale
278
+ # when someone edits the document, and this is the only job that runs
279
+ # for both. Together they add about a second.
280
+ - name: House-style exhibits match ipa.xml
281
+ run: python scripts/house_style.py check
282
+ - name: Perceptual-validation exhibits match the data and the metric
283
+ run: PYTHONHASHSEED=0 python scripts/perceptual_validation.py check
284
+ - name: State of the work matches docs/design
285
+ run: python scripts/state_of_work.py check
286
+ # The declarations under ipakit/data and the summary page under docs/ are
287
+ # one generated artifact, so the check has to run for a change to either.
288
+ # `guards` skips a doc-only change, which would let a hand edit to the
289
+ # summary skip the gate that guards it; this job runs for every change.
290
+ # The clone is a sparse, blobless fetch of the dictionary metadata alone,
291
+ # about a megabyte.
292
+ - name: eSpeak declarations match the pinned eSpeak NG revision
293
+ run: python scripts/espeak_vocabularies.py check --fetch --source "${{ runner.temp }}/espeak-ng"
294
+ - name: MFA declarations match the pinned mfa-models revision
295
+ run: python scripts/mfa_vocabularies.py check --fetch --source "${{ runner.temp }}/mfa-models"
296
+ - name: Inventory cards match declarations and computed counts
297
+ run: python scripts/inventory_cards.py check --mfa-models "${{ runner.temp }}/mfa-models"
@@ -0,0 +1,68 @@
1
+ name: Publish
2
+
3
+ # Build once, then publish via PyPI Trusted Publishing (OIDC) -- no API tokens.
4
+ # Cut a GitHub Release (tag vX.Y.Z) to publish to PyPI.
5
+ #
6
+ # One-time setup (see docs/releasing.md):
7
+ # - PyPI: add a Trusted Publisher (project ipakit, this repo, workflow
8
+ # publish.yml, environment "pypi").
9
+ # - GitHub: create environment "pypi" (Settings > Environments).
10
+
11
+ on:
12
+ release:
13
+ types: [published]
14
+
15
+ permissions:
16
+ contents: read
17
+
18
+ jobs:
19
+ build:
20
+ name: build sdist + wheel
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - uses: actions/checkout@v7
24
+ - uses: actions/setup-python@v7
25
+ with:
26
+ python-version: "3.12"
27
+ - run: python -m pip install --upgrade pip build twine
28
+ - run: python -m build
29
+ - name: Check distribution metadata
30
+ run: python -m twine check dist/*
31
+ - name: Verify version matches release tag
32
+ # Read the version from the built wheel's metadata, which is what
33
+ # uploads, rather than importing ipakit: this job installs only the
34
+ # build tools, and importing the package needs its dependencies.
35
+ env:
36
+ TAG: ${{ github.event.release.tag_name }}
37
+ run: |
38
+ VERSION=$(python - <<'EOF'
39
+ import glob, zipfile
40
+ from email.parser import BytesParser
41
+ (wheel,) = glob.glob("dist/*.whl")
42
+ with zipfile.ZipFile(wheel) as archive:
43
+ (name,) = [n for n in archive.namelist() if n.endswith(".dist-info/METADATA")]
44
+ print(BytesParser().parsebytes(archive.read(name))["Version"])
45
+ EOF
46
+ )
47
+ echo "wheel metadata version=$VERSION release tag=$TAG"
48
+ test "$VERSION" = "${TAG#v}"
49
+ - uses: actions/upload-artifact@v7
50
+ with:
51
+ name: dist
52
+ path: dist/
53
+
54
+ publish-pypi:
55
+ name: publish to PyPI
56
+ needs: build
57
+ runs-on: ubuntu-latest
58
+ environment:
59
+ name: pypi
60
+ url: https://pypi.org/p/ipakit
61
+ permissions:
62
+ id-token: write
63
+ steps:
64
+ - uses: actions/download-artifact@v8
65
+ with:
66
+ name: dist
67
+ path: dist/
68
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,64 @@
1
+ # Pre-commit hooks for ipakit.
2
+ # Mirrors the HSG repo's hook set, adapted for ipakit's flat layout (package at
3
+ # ./ipakit, tests at ./tests). Tool settings live in pyproject.toml.
4
+ # Install once with: pip install -e ".[dev]" && pre-commit install
5
+ minimum_pre_commit_version: "3.0.0"
6
+
7
+ repos:
8
+ - repo: https://github.com/pre-commit/pre-commit-hooks
9
+ rev: v6.0.0
10
+ hooks:
11
+ - id: trailing-whitespace
12
+ files: ^(ipakit|tests)/
13
+ # Praat's long TextGrid format writes a trailing space after every value.
14
+ exclude: ^tests/fixtures/textgrid/
15
+ - id: end-of-file-fixer
16
+ files: ^(ipakit|tests)/
17
+ # Verbatim upstream notice hashes are part of the PHOIBLE source pin.
18
+ exclude: ^ipakit/data/phoible/(MIT-upstream|GPL-3\.0)\.txt$
19
+ - id: check-yaml
20
+ - id: check-toml
21
+ - id: check-added-large-files
22
+ # The shipped Panphon XML is a 1.5 MB declaration of another
23
+ # project's feature table, generated by scripts/panphon_geometry.py
24
+ # and checked against the installed library. It is deliberately
25
+ # committed and distributed with attribution and its MIT notice.
26
+ # The guard stays at its default for everything else.
27
+ # PHOIBLE's full original catalog compresses to 877 KB; its exact
28
+ # source/transport hashes and wheel/sdist contents are tested.
29
+ exclude: ^(ipakit/data/feature-models/panphon\.xml|ipakit/data/phoible/data/phoible\.csv\.gz)$
30
+ - id: check-merge-conflict
31
+
32
+ - repo: https://github.com/psf/black-pre-commit-mirror
33
+ rev: 26.5.1
34
+ hooks:
35
+ - id: black
36
+ # Match the lint job's scope exactly. CI runs `black --check ipakit
37
+ # tests scripts`; leaving scripts out here made every local commit
38
+ # touching one report "Passed" for a file the hook never opened, and
39
+ # the divergence only surfaced in CI.
40
+ files: ^(ipakit|tests|scripts)/
41
+
42
+ - repo: https://github.com/astral-sh/ruff-pre-commit
43
+ rev: v0.16.5
44
+ hooks:
45
+ - id: ruff-check
46
+ args: ["--fix"]
47
+ # As above: CI runs `ruff check ipakit tests scripts`.
48
+ files: ^(ipakit|tests|scripts)/
49
+
50
+ - repo: https://github.com/pre-commit/mirrors-mypy
51
+ rev: v2.3.1
52
+ hooks:
53
+ - id: mypy
54
+ # Native GraphProfile subclasses need the same runtime types CI installs.
55
+ # tests/test_ci_contract.py keeps this requirement equal to pyproject.
56
+ additional_dependencies: ["tiergraph>=0.3.0,<0.4.0"]
57
+ # NOT widened to match the others. `pyproject.toml` sets
58
+ # `files = ["ipakit"]` deliberately, because the lint job installs
59
+ # `.[lint]`, which has no pytest -- a scope reaching a test file
60
+ # fails there while passing locally under `.[dev]`. This hook agrees
61
+ # with that scope; widening it would disagree with CI rather than
62
+ # match it.
63
+ files: ^ipakit/
64
+ args: ["--config-file=pyproject.toml"]