chython 3.2__tar.gz → 3.3__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 (472) hide show
  1. {chython-3.2/chython.egg-info → chython-3.3}/PKG-INFO +1 -1
  2. {chython-3.2 → chython-3.3}/chython/chemistry/__init__.py +7 -6
  3. {chython-3.2 → chython-3.3}/chython/chemistry/_canonicalize.py +6 -3
  4. {chython-3.2 → chython-3.3}/chython/chemistry/_organometallics.py +4 -4
  5. chython-3.3/chython/chemistry/_salts.py +679 -0
  6. {chython-3.2 → chython-3.3}/chython/chemistry/_standardize.py +15 -7
  7. {chython-3.2 → chython-3.3}/chython/chemistry/_tables.py +71 -36
  8. chython-3.3/chython/chemistry/tables/salts.tsv +185 -0
  9. chython-3.3/chython/chemistry/test/test_salts.py +1095 -0
  10. {chython-3.2 → chython-3.3}/chython/core/_facade.py +6 -4
  11. {chython-3.2 → chython-3.3}/chython/core/_molecule_container.pxi +686 -38
  12. {chython-3.2 → chython-3.3}/chython/core/_molecule_views.pxi +19 -0
  13. {chython-3.2 → chython-3.3}/chython/core/_pach.pxi +142 -66
  14. {chython-3.2 → chython-3.3}/chython/core/_pach3.pxi +141 -60
  15. {chython-3.2 → chython-3.3}/chython/core/_query_boxes.pxi +18 -0
  16. {chython-3.2 → chython-3.3}/chython/core/_smiles_write.pxi +51 -11
  17. {chython-3.2 → chython-3.3}/chython/core/reaction.py +61 -21
  18. {chython-3.2 → chython-3.3}/chython/core/test/test_clean_stereo.py +83 -0
  19. chython-3.3/chython/core/test/test_enrich.py +432 -0
  20. {chython-3.2 → chython-3.3}/chython/core/test/test_facade.py +5 -2
  21. {chython-3.2 → chython-3.3}/chython/core/test/test_geometry.py +101 -0
  22. {chython-3.2 → chython-3.3}/chython/core/test/test_isomorphism.py +51 -1
  23. {chython-3.2 → chython-3.3}/chython/core/test/test_pach.py +58 -10
  24. {chython-3.2 → chython-3.3}/chython/core/test/test_pach3.py +101 -21
  25. {chython-3.2 → chython-3.3}/chython/core/test/test_reaction_pach.py +22 -8
  26. {chython-3.2 → chython-3.3}/chython/core/test/test_smiles_write.py +53 -2
  27. {chython-3.2 → chython-3.3}/chython/core/test/test_smiles_write_stereo.py +26 -0
  28. {chython-3.2 → chython-3.3}/chython/core/test/test_view_surface.py +86 -0
  29. {chython-3.2 → chython-3.3}/chython/depict/layout/molecule.py +33 -5
  30. {chython-3.2 → chython-3.3}/chython/depict/test/test_clean2d.py +13 -4
  31. {chython-3.2 → chython-3.3}/chython/formats/__init__.py +5 -2
  32. {chython-3.2 → chython-3.3}/chython/formats/ctfile/__init__.py +3 -1
  33. {chython-3.2 → chython-3.3}/chython/formats/ctfile/_ctab.py +7 -1
  34. {chython-3.2 → chython-3.3}/chython/formats/ctfile/_sgroup.py +161 -5
  35. {chython-3.2 → chython-3.3}/chython/formats/ctfile/_stream.py +2 -4
  36. {chython-3.2 → chython-3.3}/chython/formats/ctfile/_v2000.py +2 -3
  37. {chython-3.2 → chython-3.3}/chython/formats/ctfile/_v3000.py +5 -5
  38. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/test_rdf.py +11 -6
  39. chython-3.3/chython/formats/ctfile/test/test_stereo_label.py +326 -0
  40. chython-3.3/chython/reactions/_reconstruct.py +880 -0
  41. {chython-3.2 → chython-3.3}/chython/reactions/_stickers.py +4 -4
  42. {chython-3.2 → chython-3.3}/chython/reactions/test/test_reconstruct.py +227 -0
  43. {chython-3.2 → chython-3.3}/chython/test/test_container_methods.py +8 -3
  44. chython-3.3/chython/test/test_writer_posture.py +265 -0
  45. {chython-3.2 → chython-3.3/chython.egg-info}/PKG-INFO +1 -1
  46. {chython-3.2 → chython-3.3}/chython.egg-info/SOURCES.txt +4 -1
  47. {chython-3.2 → chython-3.3}/pyproject.toml +1 -1
  48. chython-3.2/chython/chemistry/_salts.py +0 -308
  49. chython-3.2/chython/chemistry/tables/salts.tsv +0 -163
  50. chython-3.2/chython/chemistry/test/test_salts.py +0 -565
  51. chython-3.2/chython/reactions/_reconstruct.py +0 -415
  52. {chython-3.2 → chython-3.3}/LICENSE +0 -0
  53. {chython-3.2 → chython-3.3}/MANIFEST.in +0 -0
  54. {chython-3.2 → chython-3.3}/README.md +0 -0
  55. {chython-3.2 → chython-3.3}/build_inchi.py +0 -0
  56. {chython-3.2 → chython-3.3}/chython/__init__.py +0 -0
  57. {chython-3.2 → chython-3.3}/chython/_functions.py +0 -0
  58. {chython-3.2 → chython-3.3}/chython/chemistry/_abbreviations.py +0 -0
  59. {chython-3.2 → chython-3.3}/chython/chemistry/_counts.py +0 -0
  60. {chython-3.2 → chython-3.3}/chython/chemistry/_crippen.py +0 -0
  61. {chython-3.2 → chython-3.3}/chython/chemistry/_hydrogens.py +0 -0
  62. {chython-3.2 → chython-3.3}/chython/chemistry/_implicit.py +0 -0
  63. {chython-3.2 → chython-3.3}/chython/chemistry/_isomers.py +0 -0
  64. {chython-3.2 → chython-3.3}/chython/chemistry/_kekule_form.py +0 -0
  65. {chython-3.2 → chython-3.3}/chython/chemistry/_maccs.py +0 -0
  66. {chython-3.2 → chython-3.3}/chython/chemistry/_perceive.py +0 -0
  67. {chython-3.2 → chython-3.3}/chython/chemistry/_pharmacophore.py +0 -0
  68. {chython-3.2 → chython-3.3}/chython/chemistry/_protomers.py +0 -0
  69. {chython-3.2 → chython-3.3}/chython/chemistry/_qed.py +0 -0
  70. {chython-3.2 → chython-3.3}/chython/chemistry/_residues.py +0 -0
  71. {chython-3.2 → chython-3.3}/chython/chemistry/_resonance.py +0 -0
  72. {chython-3.2 → chython-3.3}/chython/chemistry/_saturate.py +0 -0
  73. {chython-3.2 → chython-3.3}/chython/chemistry/_smarts.py +0 -0
  74. {chython-3.2 → chython-3.3}/chython/chemistry/_tpsa.py +0 -0
  75. {chython-3.2 → chython-3.3}/chython/chemistry/tables/abbreviations.tsv +0 -0
  76. {chython-3.2 → chython-3.3}/chython/chemistry/tables/acids.tsv +0 -0
  77. {chython-3.2 → chython-3.3}/chython/chemistry/tables/covalent_radii.tsv +0 -0
  78. {chython-3.2 → chython-3.3}/chython/chemistry/tables/crippen.tsv +0 -0
  79. {chython-3.2 → chython-3.3}/chython/chemistry/tables/hbond.tsv +0 -0
  80. {chython-3.2 → chython-3.3}/chython/chemistry/tables/maccs.tsv +0 -0
  81. {chython-3.2 → chython-3.3}/chython/chemistry/tables/maccs_corpus.tsv +0 -0
  82. {chython-3.2 → chython-3.3}/chython/chemistry/tables/pharmacophore.tsv +0 -0
  83. {chython-3.2 → chython-3.3}/chython/chemistry/tables/qed_alerts.tsv +0 -0
  84. {chython-3.2 → chython-3.3}/chython/chemistry/tables/residues.tsv +0 -0
  85. {chython-3.2 → chython-3.3}/chython/chemistry/tables/resonance.tsv +0 -0
  86. {chython-3.2 → chython-3.3}/chython/chemistry/tables/rotatable.tsv +0 -0
  87. {chython-3.2 → chython-3.3}/chython/chemistry/tables/standardize_groups.tsv +0 -0
  88. {chython-3.2 → chython-3.3}/chython/chemistry/tables/standardize_metals.tsv +0 -0
  89. {chython-3.2 → chython-3.3}/chython/chemistry/tables/sybyl_types.tsv +0 -0
  90. {chython-3.2 → chython-3.3}/chython/chemistry/tables/tpsa.tsv +0 -0
  91. {chython-3.2 → chython-3.3}/chython/chemistry/test/__init__.py +0 -0
  92. {chython-3.2 → chython-3.3}/chython/chemistry/test/_corpus.py +0 -0
  93. {chython-3.2 → chython-3.3}/chython/chemistry/test/_oracle.py +0 -0
  94. {chython-3.2 → chython-3.3}/chython/chemistry/test/gen_standardize_rules.py +0 -0
  95. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_abbreviations.py +0 -0
  96. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_acids_tsv.py +0 -0
  97. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_canonicalize.py +0 -0
  98. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_counts.py +0 -0
  99. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_covalent_radii_tsv.py +0 -0
  100. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_crippen.py +0 -0
  101. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_crippen_tsv.py +0 -0
  102. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_dependency_direction.py +0 -0
  103. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_featurizer_injection.py +0 -0
  104. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_featurizer_tables_lazy.py +0 -0
  105. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_isomers.py +0 -0
  106. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_kekule_form.py +0 -0
  107. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_maccs.py +0 -0
  108. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_maccs_corpus.py +0 -0
  109. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_maccs_tsv.py +0 -0
  110. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_organometallics.py +0 -0
  111. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_perceive.py +0 -0
  112. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_pharmacophore.py +0 -0
  113. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_protomers.py +0 -0
  114. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_qed.py +0 -0
  115. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_qed_alerts_tsv.py +0 -0
  116. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_reaction_hydrogen_repair.py +0 -0
  117. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_reaction_passes.py +0 -0
  118. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_residues.py +0 -0
  119. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_resonance.py +0 -0
  120. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_resonance_tsv.py +0 -0
  121. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_saturate.py +0 -0
  122. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_smarts.py +0 -0
  123. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_standardize_differential.py +0 -0
  124. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_standardize_groups_port.py +0 -0
  125. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_standardize_overvalent_nitrogen.py +0 -0
  126. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_standardize_rules_examples.py +0 -0
  127. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_standardize_rules_merges.py +0 -0
  128. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_standardize_rules_tsv.py +0 -0
  129. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_thiele_is_single_purpose.py +0 -0
  130. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_tpsa.py +0 -0
  131. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_tpsa_tsv.py +0 -0
  132. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_valence_report.py +0 -0
  133. {chython-3.2 → chython-3.3}/chython/chemistry/test/test_z_translation.py +0 -0
  134. {chython-3.2 → chython-3.3}/chython/core/RULES.md +0 -0
  135. {chython-3.2 → chython-3.3}/chython/core/__init__.py +0 -0
  136. {chython-3.2 → chython-3.3}/chython/core/_canonical.pxi +0 -0
  137. {chython-3.2 → chython-3.3}/chython/core/_cip.pxi +0 -0
  138. {chython-3.2 → chython-3.3}/chython/core/_core.pyx +0 -0
  139. {chython-3.2 → chython-3.3}/chython/core/_descriptors.pxi +0 -0
  140. {chython-3.2 → chython-3.3}/chython/core/_elements.pxi +0 -0
  141. {chython-3.2 → chython-3.3}/chython/core/_features.pxi +0 -0
  142. {chython-3.2 → chython-3.3}/chython/core/_fingerprints.pxi +0 -0
  143. {chython-3.2 → chython-3.3}/chython/core/_hydrogens.pxi +0 -0
  144. {chython-3.2 → chython-3.3}/chython/core/_inchi.pxi +0 -0
  145. {chython-3.2 → chython-3.3}/chython/core/_isomorphism.pxi +0 -0
  146. {chython-3.2 → chython-3.3}/chython/core/_kekule.pxi +0 -0
  147. {chython-3.2 → chython-3.3}/chython/core/_log.py +0 -0
  148. {chython-3.2 → chython-3.3}/chython/core/_ml.pxi +0 -0
  149. {chython-3.2 → chython-3.3}/chython/core/_molecule_arena.pxi +0 -0
  150. {chython-3.2 → chython-3.3}/chython/core/_molecule_topology.pxi +0 -0
  151. {chython-3.2 → chython-3.3}/chython/core/_morgan.pxi +0 -0
  152. {chython-3.2 → chython-3.3}/chython/core/_query_arena.pxi +0 -0
  153. {chython-3.2 → chython-3.3}/chython/core/_query_container.pxi +0 -0
  154. {chython-3.2 → chython-3.3}/chython/core/_query_seal.pxi +0 -0
  155. {chython-3.2 → chython-3.3}/chython/core/_reaction_passes.py +0 -0
  156. {chython-3.2 → chython-3.3}/chython/core/_rings.pxi +0 -0
  157. {chython-3.2 → chython-3.3}/chython/core/_smarts_read.pxi +0 -0
  158. {chython-3.2 → chython-3.3}/chython/core/_smiles_read.pxi +0 -0
  159. {chython-3.2 → chython-3.3}/chython/core/_smirks_patch.pxi +0 -0
  160. {chython-3.2 → chython-3.3}/chython/core/_smirks_read.pxi +0 -0
  161. {chython-3.2 → chython-3.3}/chython/core/_sssr.pxi +0 -0
  162. {chython-3.2 → chython-3.3}/chython/core/_stereo.pxi +0 -0
  163. {chython-3.2 → chython-3.3}/chython/core/_thiele.pxi +0 -0
  164. {chython-3.2 → chython-3.3}/chython/core/_valence.pxi +0 -0
  165. {chython-3.2 → chython-3.3}/chython/core/elements.tsv +0 -0
  166. {chython-3.2 → chython-3.3}/chython/core/isotopes.tsv +0 -0
  167. {chython-3.2 → chython-3.3}/chython/core/test/__init__.py +0 -0
  168. {chython-3.2 → chython-3.3}/chython/core/test/arena_v4_corpus.bin.gz +0 -0
  169. {chython-3.2 → chython-3.3}/chython/core/test/bench_ml.py +0 -0
  170. {chython-3.2 → chython-3.3}/chython/core/test/chytorch_oracle.py +0 -0
  171. {chython-3.2 → chython-3.3}/chython/core/test/gen_element_tables.py +0 -0
  172. {chython-3.2 → chython-3.3}/chython/core/test/gen_modeling_view_corpus.py +0 -0
  173. {chython-3.2 → chython-3.3}/chython/core/test/gen_pach3_corpus.py +0 -0
  174. {chython-3.2 → chython-3.3}/chython/core/test/gen_reaction_pach_corpus.py +0 -0
  175. {chython-3.2 → chython-3.3}/chython/core/test/gen_v3_fixtures.py +0 -0
  176. {chython-3.2 → chython-3.3}/chython/core/test/gen_v4_fixtures.py +0 -0
  177. {chython-3.2 → chython-3.3}/chython/core/test/gen_valence_rules.py +0 -0
  178. {chython-3.2 → chython-3.3}/chython/core/test/modeling_view_corpus.json.gz +0 -0
  179. {chython-3.2 → chython-3.3}/chython/core/test/modeling_view_corpus.py +0 -0
  180. {chython-3.2 → chython-3.3}/chython/core/test/oracle.py +0 -0
  181. {chython-3.2 → chython-3.3}/chython/core/test/pach3_corpus.py +0 -0
  182. {chython-3.2 → chython-3.3}/chython/core/test/pach_bond_group_corpus.bin.gz +0 -0
  183. {chython-3.2 → chython-3.3}/chython/core/test/pach_corpus.py +0 -0
  184. {chython-3.2 → chython-3.3}/chython/core/test/pach_v0_corpus.bin.gz +0 -0
  185. {chython-3.2 → chython-3.3}/chython/core/test/pach_v0_native_corpus.bin.gz +0 -0
  186. {chython-3.2 → chython-3.3}/chython/core/test/pach_v2_corpus.bin.gz +0 -0
  187. {chython-3.2 → chython-3.3}/chython/core/test/pach_v3_corpus.bin.gz +0 -0
  188. {chython-3.2 → chython-3.3}/chython/core/test/pach_v4_corpus.bin.gz +0 -0
  189. {chython-3.2 → chython-3.3}/chython/core/test/reaction_pach_corpus.py +0 -0
  190. {chython-3.2 → chython-3.3}/chython/core/test/reaction_pach_v2_corpus.bin.gz +0 -0
  191. {chython-3.2 → chython-3.3}/chython/core/test/test_aggregates.py +0 -0
  192. {chython-3.2 → chython-3.3}/chython/core/test/test_alternative_spellings.py +0 -0
  193. {chython-3.2 → chython-3.3}/chython/core/test/test_apply_scratch_probe.py +0 -0
  194. {chython-3.2 → chython-3.3}/chython/core/test/test_arena_f60.py +0 -0
  195. {chython-3.2 → chython-3.3}/chython/core/test/test_arena_identity.py +0 -0
  196. {chython-3.2 → chython-3.3}/chython/core/test/test_arena_v3_compat.py +0 -0
  197. {chython-3.2 → chython-3.3}/chython/core/test/test_arena_v4_compat.py +0 -0
  198. {chython-3.2 → chython-3.3}/chython/core/test/test_aromatic_storage.py +0 -0
  199. {chython-3.2 → chython-3.3}/chython/core/test/test_canonical.py +0 -0
  200. {chython-3.2 → chython-3.3}/chython/core/test/test_canonical_mirror.py +0 -0
  201. {chython-3.2 → chython-3.3}/chython/core/test/test_cip_assign.py +0 -0
  202. {chython-3.2 → chython-3.3}/chython/core/test/test_cip_cases.py +0 -0
  203. {chython-3.2 → chython-3.3}/chython/core/test/test_cip_digraph.py +0 -0
  204. {chython-3.2 → chython-3.3}/chython/core/test/test_cip_ranking.py +0 -0
  205. {chython-3.2 → chython-3.3}/chython/core/test/test_cip_storage.py +0 -0
  206. {chython-3.2 → chython-3.3}/chython/core/test/test_clean_isotopes_and_coordinate_bonds.py +0 -0
  207. {chython-3.2 → chython-3.3}/chython/core/test/test_conformers.py +0 -0
  208. {chython-3.2 → chython-3.3}/chython/core/test/test_container_log.py +0 -0
  209. {chython-3.2 → chython-3.3}/chython/core/test/test_copy_caches.py +0 -0
  210. {chython-3.2 → chython-3.3}/chython/core/test/test_derive.py +0 -0
  211. {chython-3.2 → chython-3.3}/chython/core/test/test_descriptors.py +0 -0
  212. {chython-3.2 → chython-3.3}/chython/core/test/test_element_tables.py +0 -0
  213. {chython-3.2 → chython-3.3}/chython/core/test/test_features.py +0 -0
  214. {chython-3.2 → chython-3.3}/chython/core/test/test_featurizer_injection.py +0 -0
  215. {chython-3.2 → chython-3.3}/chython/core/test/test_fingerprints.py +0 -0
  216. {chython-3.2 → chython-3.3}/chython/core/test/test_h_unknown.py +0 -0
  217. {chython-3.2 → chython-3.3}/chython/core/test/test_hydrogens.py +0 -0
  218. {chython-3.2 → chython-3.3}/chython/core/test/test_inchi.py +0 -0
  219. {chython-3.2 → chython-3.3}/chython/core/test/test_interop_injection.py +0 -0
  220. {chython-3.2 → chython-3.3}/chython/core/test/test_kekule.py +0 -0
  221. {chython-3.2 → chython-3.3}/chython/core/test/test_log.py +0 -0
  222. {chython-3.2 → chython-3.3}/chython/core/test/test_magic.py +0 -0
  223. {chython-3.2 → chython-3.3}/chython/core/test/test_meta.py +0 -0
  224. {chython-3.2 → chython-3.3}/chython/core/test/test_ml_encoding.py +0 -0
  225. {chython-3.2 → chython-3.3}/chython/core/test/test_ml_reaction_transition.py +0 -0
  226. {chython-3.2 → chython-3.3}/chython/core/test/test_ml_state_view.py +0 -0
  227. {chython-3.2 → chython-3.3}/chython/core/test/test_ml_transition_view.py +0 -0
  228. {chython-3.2 → chython-3.3}/chython/core/test/test_ml_unpack_differential.py +0 -0
  229. {chython-3.2 → chython-3.3}/chython/core/test/test_modeling_view_frozen.py +0 -0
  230. {chython-3.2 → chython-3.3}/chython/core/test/test_molecule.py +0 -0
  231. {chython-3.2 → chython-3.3}/chython/core/test/test_morgan.py +0 -0
  232. {chython-3.2 → chython-3.3}/chython/core/test/test_no_chython_two_imports.py +0 -0
  233. {chython-3.2 → chython-3.3}/chython/core/test/test_oracle.py +0 -0
  234. {chython-3.2 → chython-3.3}/chython/core/test/test_pack.py +0 -0
  235. {chython-3.2 → chython-3.3}/chython/core/test/test_query.py +0 -0
  236. {chython-3.2 → chython-3.3}/chython/core/test/test_r_edit.py +0 -0
  237. {chython-3.2 → chython-3.3}/chython/core/test/test_r_query.py +0 -0
  238. {chython-3.2 → chython-3.3}/chython/core/test/test_r_semantics.py +0 -0
  239. {chython-3.2 → chython-3.3}/chython/core/test/test_r_serialisation.py +0 -0
  240. {chython-3.2 → chython-3.3}/chython/core/test/test_r_smirks.py +0 -0
  241. {chython-3.2 → chython-3.3}/chython/core/test/test_r_storage.py +0 -0
  242. {chython-3.2 → chython-3.3}/chython/core/test/test_reaction_container.py +0 -0
  243. {chython-3.2 → chython-3.3}/chython/core/test/test_reaction_identity.py +0 -0
  244. {chython-3.2 → chython-3.3}/chython/core/test/test_reaction_passes.py +0 -0
  245. {chython-3.2 → chython-3.3}/chython/core/test/test_reaction_patch_stereo.py +0 -0
  246. {chython-3.2 → chython-3.3}/chython/core/test/test_reaction_smiles.py +0 -0
  247. {chython-3.2 → chython-3.3}/chython/core/test/test_rings.py +0 -0
  248. {chython-3.2 → chython-3.3}/chython/core/test/test_rings_c60.py +0 -0
  249. {chython-3.2 → chython-3.3}/chython/core/test/test_set_element.py +0 -0
  250. {chython-3.2 → chython-3.3}/chython/core/test/test_sgroups.py +0 -0
  251. {chython-3.2 → chython-3.3}/chython/core/test/test_smarts_read.py +0 -0
  252. {chython-3.2 → chython-3.3}/chython/core/test/test_smiles_r.py +0 -0
  253. {chython-3.2 → chython-3.3}/chython/core/test/test_smiles_read.py +0 -0
  254. {chython-3.2 → chython-3.3}/chython/core/test/test_smiles_roundtrip.py +0 -0
  255. {chython-3.2 → chython-3.3}/chython/core/test/test_smiles_write_aromatic.py +0 -0
  256. {chython-3.2 → chython-3.3}/chython/core/test/test_smiles_write_cis_trans.py +0 -0
  257. {chython-3.2 → chython-3.3}/chython/core/test/test_smiles_write_detached.py +0 -0
  258. {chython-3.2 → chython-3.3}/chython/core/test/test_smiles_write_differential.py +0 -0
  259. {chython-3.2 → chython-3.3}/chython/core/test/test_smiles_write_h_unknown.py +0 -0
  260. {chython-3.2 → chython-3.3}/chython/core/test/test_smiles_write_sticky.py +0 -0
  261. {chython-3.2 → chython-3.3}/chython/core/test/test_smirks_filter.py +0 -0
  262. {chython-3.2 → chython-3.3}/chython/core/test/test_smirks_patch.py +0 -0
  263. {chython-3.2 → chython-3.3}/chython/core/test/test_smirks_read.py +0 -0
  264. {chython-3.2 → chython-3.3}/chython/core/test/test_smirks_report.py +0 -0
  265. {chython-3.2 → chython-3.3}/chython/core/test/test_smirks_stereo.py +0 -0
  266. {chython-3.2 → chython-3.3}/chython/core/test/test_stereo_acceptance.py +0 -0
  267. {chython-3.2 → chython-3.3}/chython/core/test/test_stereo_anchor_identity.py +0 -0
  268. {chython-3.2 → chython-3.3}/chython/core/test/test_stereo_group_storage.py +0 -0
  269. {chython-3.2 → chython-3.3}/chython/core/test/test_stereo_owners.py +0 -0
  270. {chython-3.2 → chython-3.3}/chython/core/test/test_stereo_parity.py +0 -0
  271. {chython-3.2 → chython-3.3}/chython/core/test/test_stereo_perception.py +0 -0
  272. {chython-3.2 → chython-3.3}/chython/core/test/test_stereo_query.py +0 -0
  273. {chython-3.2 → chython-3.3}/chython/core/test/test_stereo_units.py +0 -0
  274. {chython-3.2 → chython-3.3}/chython/core/test/test_stereo_v2_differential.py +0 -0
  275. {chython-3.2 → chython-3.3}/chython/core/test/test_structure.py +0 -0
  276. {chython-3.2 → chython-3.3}/chython/core/test/test_thiele.py +0 -0
  277. {chython-3.2 → chython-3.3}/chython/core/test/test_title.py +0 -0
  278. {chython-3.2 → chython-3.3}/chython/core/test/test_topology.py +0 -0
  279. {chython-3.2 → chython-3.3}/chython/core/test/test_union_stereo.py +0 -0
  280. {chython-3.2 → chython-3.3}/chython/core/test/test_valence.py +0 -0
  281. {chython-3.2 → chython-3.3}/chython/core/test/v3_fixtures.py +0 -0
  282. {chython-3.2 → chython-3.3}/chython/core/test/v4_fixtures.py +0 -0
  283. {chython-3.2 → chython-3.3}/chython/core/valence_rules.tsv +0 -0
  284. {chython-3.2 → chython-3.3}/chython/core/wedge.py +0 -0
  285. {chython-3.2 → chython-3.3}/chython/depict/__init__.py +0 -0
  286. {chython-3.2 → chython-3.3}/chython/depict/_config.py +0 -0
  287. {chython-3.2 → chython-3.3}/chython/depict/_hooks.py +0 -0
  288. {chython-3.2 → chython-3.3}/chython/depict/bonds.py +0 -0
  289. {chython-3.2 → chython-3.3}/chython/depict/colorbar.py +0 -0
  290. {chython-3.2 → chython-3.3}/chython/depict/colormap.py +0 -0
  291. {chython-3.2 → chython-3.3}/chython/depict/field.py +0 -0
  292. {chython-3.2 → chython-3.3}/chython/depict/figure.py +0 -0
  293. {chython-3.2 → chython-3.3}/chython/depict/label.py +0 -0
  294. {chython-3.2 → chython-3.3}/chython/depict/layout/__init__.py +0 -0
  295. {chython-3.2 → chython-3.3}/chython/depict/layout/clean2d.js +0 -0
  296. {chython-3.2 → chython-3.3}/chython/depict/layout/reaction.py +0 -0
  297. {chython-3.2 → chython-3.3}/chython/depict/metrics/__init__.py +0 -0
  298. {chython-3.2 → chython-3.3}/chython/depict/metrics/helvetica.tsv +0 -0
  299. {chython-3.2 → chython-3.3}/chython/depict/metrics/times.tsv +0 -0
  300. {chython-3.2 → chython-3.3}/chython/depict/overlay.py +0 -0
  301. {chython-3.2 → chython-3.3}/chython/depict/render/__init__.py +0 -0
  302. {chython-3.2 → chython-3.3}/chython/depict/render/svg.py +0 -0
  303. {chython-3.2 → chython-3.3}/chython/depict/scene.py +0 -0
  304. {chython-3.2 → chython-3.3}/chython/depict/style.py +0 -0
  305. {chython-3.2 → chython-3.3}/chython/depict/test/__init__.py +0 -0
  306. {chython-3.2 → chython-3.3}/chython/depict/test/test_bonds.py +0 -0
  307. {chython-3.2 → chython-3.3}/chython/depict/test/test_colorbar.py +0 -0
  308. {chython-3.2 → chython-3.3}/chython/depict/test/test_colormap.py +0 -0
  309. {chython-3.2 → chython-3.3}/chython/depict/test/test_field.py +0 -0
  310. {chython-3.2 → chython-3.3}/chython/depict/test/test_figure.py +0 -0
  311. {chython-3.2 → chython-3.3}/chython/depict/test/test_label.py +0 -0
  312. {chython-3.2 → chython-3.3}/chython/depict/test/test_metrics.py +0 -0
  313. {chython-3.2 → chython-3.3}/chython/depict/test/test_overlay.py +0 -0
  314. {chython-3.2 → chython-3.3}/chython/depict/test/test_package.py +0 -0
  315. {chython-3.2 → chython-3.3}/chython/depict/test/test_r_atom.py +0 -0
  316. {chython-3.2 → chython-3.3}/chython/depict/test/test_scene.py +0 -0
  317. {chython-3.2 → chython-3.3}/chython/depict/test/test_style.py +0 -0
  318. {chython-3.2 → chython-3.3}/chython/depict/test/test_svg.py +0 -0
  319. {chython-3.2 → chython-3.3}/chython/depict/test/test_wedge_draw.py +0 -0
  320. {chython-3.2 → chython-3.3}/chython/depict/test/test_x3dom.py +0 -0
  321. {chython-3.2 → chython-3.3}/chython/depict/wedge.py +0 -0
  322. {chython-3.2 → chython-3.3}/chython/depict/x3dom.py +0 -0
  323. {chython-3.2 → chython-3.3}/chython/exceptions.py +0 -0
  324. {chython-3.2 → chython-3.3}/chython/formats/_text.py +0 -0
  325. {chython-3.2 → chython-3.3}/chython/formats/ctfile/CTFILE.md +0 -0
  326. {chython-3.2 → chython-3.3}/chython/formats/ctfile/_errors.py +0 -0
  327. {chython-3.2 → chython-3.3}/chython/formats/ctfile/_facade.py +0 -0
  328. {chython-3.2 → chython-3.3}/chython/formats/ctfile/_hydrogens.py +0 -0
  329. {chython-3.2 → chython-3.3}/chython/formats/ctfile/_rdf.py +0 -0
  330. {chython-3.2 → chython-3.3}/chython/formats/ctfile/_rxn.py +0 -0
  331. {chython-3.2 → chython-3.3}/chython/formats/ctfile/_sdf.py +0 -0
  332. {chython-3.2 → chython-3.3}/chython/formats/ctfile/_tokens.py +0 -0
  333. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/__init__.py +0 -0
  334. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/conftest.py +0 -0
  335. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/test_aromatic.py +0 -0
  336. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/test_container_log.py +0 -0
  337. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/test_data_labels.py +0 -0
  338. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/test_facade.py +0 -0
  339. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/test_fidelity.py +0 -0
  340. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/test_hydrogens.py +0 -0
  341. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/test_r_atom.py +0 -0
  342. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/test_rxn.py +0 -0
  343. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/test_sdf.py +0 -0
  344. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/test_sgroup.py +0 -0
  345. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/test_stream.py +0 -0
  346. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/test_tokens.py +0 -0
  347. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/test_v2000.py +0 -0
  348. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/test_v3000.py +0 -0
  349. {chython-3.2 → chython-3.3}/chython/formats/ctfile/test/test_wedge.py +0 -0
  350. {chython-3.2 → chython-3.3}/chython/formats/mol2.py +0 -0
  351. {chython-3.2 → chython-3.3}/chython/formats/pdb/__init__.py +0 -0
  352. {chython-3.2 → chython-3.3}/chython/formats/pdb/_builder.py +0 -0
  353. {chython-3.2 → chython-3.3}/chython/formats/pdb/_legacy.py +0 -0
  354. {chython-3.2 → chython-3.3}/chython/formats/pdb/_mmcif.py +0 -0
  355. {chython-3.2 → chython-3.3}/chython/formats/pdb/_records.py +0 -0
  356. {chython-3.2 → chython-3.3}/chython/formats/pdb/_star.py +0 -0
  357. {chython-3.2 → chython-3.3}/chython/formats/test/__init__.py +0 -0
  358. {chython-3.2 → chython-3.3}/chython/formats/test/conftest.py +0 -0
  359. {chython-3.2 → chython-3.3}/chython/formats/test/oracles.py +0 -0
  360. {chython-3.2 → chython-3.3}/chython/formats/test/test_conformance.py +0 -0
  361. {chython-3.2 → chython-3.3}/chython/formats/test/test_done_when.py +0 -0
  362. {chython-3.2 → chython-3.3}/chython/formats/test/test_isolation.py +0 -0
  363. {chython-3.2 → chython-3.3}/chython/formats/test/test_log_prefix.py +0 -0
  364. {chython-3.2 → chython-3.3}/chython/formats/test/test_mmcif.py +0 -0
  365. {chython-3.2 → chython-3.3}/chython/formats/test/test_mol2.py +0 -0
  366. {chython-3.2 → chython-3.3}/chython/formats/test/test_no_review_bookkeeping.py +0 -0
  367. {chython-3.2 → chython-3.3}/chython/formats/test/test_oracles.py +0 -0
  368. {chython-3.2 → chython-3.3}/chython/formats/test/test_pdb.py +0 -0
  369. {chython-3.2 → chython-3.3}/chython/formats/test/test_pdb_builder.py +0 -0
  370. {chython-3.2 → chython-3.3}/chython/formats/test/test_perceive_agreement.py +0 -0
  371. {chython-3.2 → chython-3.3}/chython/formats/test/test_read_only_facades.py +0 -0
  372. {chython-3.2 → chython-3.3}/chython/formats/test/test_xyz.py +0 -0
  373. {chython-3.2 → chython-3.3}/chython/formats/test/test_xyz_builder.py +0 -0
  374. {chython-3.2 → chython-3.3}/chython/formats/xml/__init__.py +0 -0
  375. {chython-3.2 → chython-3.3}/chython/formats/xml/_cml.py +0 -0
  376. {chython-3.2 → chython-3.3}/chython/formats/xml/_dialect.py +0 -0
  377. {chython-3.2 → chython-3.3}/chython/formats/xml/_errors.py +0 -0
  378. {chython-3.2 → chython-3.3}/chython/formats/xml/_facade.py +0 -0
  379. {chython-3.2 → chython-3.3}/chython/formats/xml/_mrv.py +0 -0
  380. {chython-3.2 → chython-3.3}/chython/formats/xml/_tree.py +0 -0
  381. {chython-3.2 → chython-3.3}/chython/formats/xml/test/__init__.py +0 -0
  382. {chython-3.2 → chython-3.3}/chython/formats/xml/test/conftest.py +0 -0
  383. {chython-3.2 → chython-3.3}/chython/formats/xml/test/test_cml.py +0 -0
  384. {chython-3.2 → chython-3.3}/chython/formats/xml/test/test_container_log.py +0 -0
  385. {chython-3.2 → chython-3.3}/chython/formats/xml/test/test_dialect.py +0 -0
  386. {chython-3.2 → chython-3.3}/chython/formats/xml/test/test_equivalence.py +0 -0
  387. {chython-3.2 → chython-3.3}/chython/formats/xml/test/test_facade.py +0 -0
  388. {chython-3.2 → chython-3.3}/chython/formats/xml/test/test_mrv.py +0 -0
  389. {chython-3.2 → chython-3.3}/chython/formats/xml/test/test_mrv_census.py +0 -0
  390. {chython-3.2 → chython-3.3}/chython/formats/xml/test/test_tree.py +0 -0
  391. {chython-3.2 → chython-3.3}/chython/formats/xyz.py +0 -0
  392. {chython-3.2 → chython-3.3}/chython/interop/__init__.py +0 -0
  393. {chython-3.2 → chython-3.3}/chython/interop/_cdk.py +0 -0
  394. {chython-3.2 → chython-3.3}/chython/interop/_cdpkit.py +0 -0
  395. {chython-3.2 → chython-3.3}/chython/interop/_indigo.py +0 -0
  396. {chython-3.2 → chython-3.3}/chython/interop/_iupac.py +0 -0
  397. {chython-3.2 → chython-3.3}/chython/interop/_java.py +0 -0
  398. {chython-3.2 → chython-3.3}/chython/interop/_openbabel.py +0 -0
  399. {chython-3.2 → chython-3.3}/chython/interop/_pandas.py +0 -0
  400. {chython-3.2 → chython-3.3}/chython/interop/_rdkit.py +0 -0
  401. {chython-3.2 → chython-3.3}/chython/interop/_records.py +0 -0
  402. {chython-3.2 → chython-3.3}/chython/interop/_stereo.py +0 -0
  403. {chython-3.2 → chython-3.3}/chython/interop/config.py +0 -0
  404. {chython-3.2 → chython-3.3}/chython/interop/conformers.py +0 -0
  405. {chython-3.2 → chython-3.3}/chython/interop/test/__init__.py +0 -0
  406. {chython-3.2 → chython-3.3}/chython/interop/test/conftest.py +0 -0
  407. {chython-3.2 → chython-3.3}/chython/interop/test/test_cdk.py +0 -0
  408. {chython-3.2 → chython-3.3}/chython/interop/test/test_cdpkit.py +0 -0
  409. {chython-3.2 → chython-3.3}/chython/interop/test/test_config.py +0 -0
  410. {chython-3.2 → chython-3.3}/chython/interop/test/test_conformers.py +0 -0
  411. {chython-3.2 → chython-3.3}/chython/interop/test/test_coordinate_honesty.py +0 -0
  412. {chython-3.2 → chython-3.3}/chython/interop/test/test_dispatch.py +0 -0
  413. {chython-3.2 → chython-3.3}/chython/interop/test/test_indigo.py +0 -0
  414. {chython-3.2 → chython-3.3}/chython/interop/test/test_iupac.py +0 -0
  415. {chython-3.2 → chython-3.3}/chython/interop/test/test_log_delivery.py +0 -0
  416. {chython-3.2 → chython-3.3}/chython/interop/test/test_openbabel.py +0 -0
  417. {chython-3.2 → chython-3.3}/chython/interop/test/test_pandas.py +0 -0
  418. {chython-3.2 → chython-3.3}/chython/interop/test/test_rdkit.py +0 -0
  419. {chython-3.2 → chython-3.3}/chython/interop/test/test_stereo.py +0 -0
  420. {chython-3.2 → chython-3.3}/chython/interop/test/test_v2_oracle.py +0 -0
  421. {chython-3.2 → chython-3.3}/chython/reactions/__init__.py +0 -0
  422. {chython-3.2 → chython-3.3}/chython/reactions/_enumerate.py +0 -0
  423. {chython-3.2 → chython-3.3}/chython/reactions/_numbering.py +0 -0
  424. {chython-3.2 → chython-3.3}/chython/reactions/_tables.py +0 -0
  425. {chython-3.2 → chython-3.3}/chython/reactions/attention/__init__.py +0 -0
  426. {chython-3.2 → chython-3.3}/chython/reactions/attention/_assign.py +0 -0
  427. {chython-3.2 → chython-3.3}/chython/reactions/attention/_encode.py +0 -0
  428. {chython-3.2 → chython-3.3}/chython/reactions/attention/_session.py +0 -0
  429. {chython-3.2 → chython-3.3}/chython/reactions/tables/functional.tsv +0 -0
  430. {chython-3.2 → chython-3.3}/chython/reactions/tables/protective.tsv +0 -0
  431. {chython-3.2 → chython-3.3}/chython/reactions/tables/reactions.tsv +0 -0
  432. {chython-3.2 → chython-3.3}/chython/reactions/tables/roles.tsv +0 -0
  433. {chython-3.2 → chython-3.3}/chython/reactions/test/__init__.py +0 -0
  434. {chython-3.2 → chython-3.3}/chython/reactions/test/_frozen_ids.py +0 -0
  435. {chython-3.2 → chython-3.3}/chython/reactions/test/gen_corpus_glossary.py +0 -0
  436. {chython-3.2 → chython-3.3}/chython/reactions/test/golden_subset.smi +0 -0
  437. {chython-3.2 → chython-3.3}/chython/reactions/test/test_attention.py +0 -0
  438. {chython-3.2 → chython-3.3}/chython/reactions/test/test_attention_assign.py +0 -0
  439. {chython-3.2 → chython-3.3}/chython/reactions/test/test_attention_encode.py +0 -0
  440. {chython-3.2 → chython-3.3}/chython/reactions/test/test_attention_isolation.py +0 -0
  441. {chython-3.2 → chython-3.3}/chython/reactions/test/test_corpus_glossary.py +0 -0
  442. {chython-3.2 → chython-3.3}/chython/reactions/test/test_dependency_direction.py +0 -0
  443. {chython-3.2 → chython-3.3}/chython/reactions/test/test_enumerate.py +0 -0
  444. {chython-3.2 → chython-3.3}/chython/reactions/test/test_functional.py +0 -0
  445. {chython-3.2 → chython-3.3}/chython/reactions/test/test_id_stability.py +0 -0
  446. {chython-3.2 → chython-3.3}/chython/reactions/test/test_numbering.py +0 -0
  447. {chython-3.2 → chython-3.3}/chython/reactions/test/test_probes.py +0 -0
  448. {chython-3.2 → chython-3.3}/chython/reactions/test/test_protective.py +0 -0
  449. {chython-3.2 → chython-3.3}/chython/reactions/test/test_roles.py +0 -0
  450. {chython-3.2 → chython-3.3}/chython/reactions/test/test_stickers.py +0 -0
  451. {chython-3.2 → chython-3.3}/chython/reactions/test/test_tables.py +0 -0
  452. {chython-3.2 → chython-3.3}/chython/test/__init__.py +0 -0
  453. {chython-3.2 → chython-3.3}/chython/test/test_code_hygiene.py +0 -0
  454. {chython-3.2 → chython-3.3}/chython/test/test_doc_figures.py +0 -0
  455. {chython-3.2 → chython-3.3}/chython/test/test_doc_references.py +0 -0
  456. {chython-3.2 → chython-3.3}/chython/test/test_doc_samples.py +0 -0
  457. {chython-3.2 → chython-3.3}/chython/test/test_facade_names.py +0 -0
  458. {chython-3.2 → chython-3.3}/chython/test/test_hydrogen_parity.py +0 -0
  459. {chython-3.2 → chython-3.3}/chython/test/test_libinchi_staging.py +0 -0
  460. {chython-3.2 → chython-3.3}/chython/test/test_log_records.py +0 -0
  461. {chython-3.2 → chython-3.3}/chython/test/test_optional_numpy.py +0 -0
  462. {chython-3.2 → chython-3.3}/chython/test/test_packaging.py +0 -0
  463. {chython-3.2 → chython-3.3}/chython/test/test_performance.py +0 -0
  464. {chython-3.2 → chython-3.3}/chython/test/test_r_atom_integration.py +0 -0
  465. {chython-3.2 → chython-3.3}/chython/test/test_release_build.py +0 -0
  466. {chython-3.2 → chython-3.3}/chython/test/test_stereo_bluebook.py +0 -0
  467. {chython-3.2 → chython-3.3}/chython/test/test_v2_boundary.py +0 -0
  468. {chython-3.2 → chython-3.3}/chython.egg-info/dependency_links.txt +0 -0
  469. {chython-3.2 → chython-3.3}/chython.egg-info/requires.txt +0 -0
  470. {chython-3.2 → chython-3.3}/chython.egg-info/top_level.txt +0 -0
  471. {chython-3.2 → chython-3.3}/setup.cfg +0 -0
  472. {chython-3.2 → chython-3.3}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chython
3
- Version: 3.2
3
+ Version: 3.3
4
4
  Summary: Library for processing molecules and reactions in python way
5
5
  Author-email: Ramil Nugmanov <nougmanoff@protonmail.com>
6
6
  License-Expression: LGPL-3.0-or-later
@@ -45,15 +45,15 @@ from ._qed import alert_count, qed, qed_properties
45
45
  from ._residues import (RESIDUE_KINDS, ResidueTemplate, normalize_atom_name, residue_template,
46
46
  residue_templates)
47
47
  from ._resonance import fix_resonance
48
- from ._salts import SaltComposition, decompose_salts, split_salts
48
+ from ._salts import ComponentRow, DEFAULT_STABILIZER_CLASSES, SaltComposition, decompose_salts, split_salts
49
49
  from ._saturate import saturate
50
50
  from ._smarts import SmartsSyntaxError, compile_smarts
51
51
  from ._standardize import LogRecord, standardize
52
- from ._tables import (ACID_ROLES, AbbreviationRow, AcidRow, Endpoint, RESONANCE_ROLES, Rule, SALT_ROLES,
53
- SaltRow, abbreviation_row, abbreviations_rows, acids_rules, acids_rules_by_role,
54
- acids_table_text, groups_rules,
52
+ from ._tables import (ACID_ROLES, AbbreviationRow, AcidRow, Endpoint, RESONANCE_ROLES, Rule,
53
+ SALT_CLASSES, SALT_MATCHES, SaltRow, abbreviation_row, abbreviations_rows,
54
+ acids_rules, acids_rules_by_role, acids_table_text, groups_rules,
55
55
  metals_rules, read_table, resonance_rules, resonance_rules_by_role,
56
- resonance_table_text, salts_rows, salts_rows_by_role, salts_species_keys,
56
+ resonance_table_text, salts_rows, salts_rows_by_klass, salts_species_keys,
57
57
  salts_table_text, standardize_rules)
58
58
  from ._tpsa import tpsa
59
59
  from ..core._core import (_set_canonicalize_fn, _set_featurizer_fns, _set_hydrogens_fns,
@@ -62,7 +62,8 @@ from ..core._core import (_set_canonicalize_fn, _set_featurizer_fns, _set_hydrog
62
62
  _set_valence_fn)
63
63
 
64
64
 
65
- __all__ = ['ACID_ROLES', 'AbbreviationRow', 'LogRecord', 'SALT_ROLES', 'SaltComposition',
65
+ __all__ = ['ACID_ROLES', 'AbbreviationRow', 'ComponentRow', 'DEFAULT_STABILIZER_CLASSES',
66
+ 'LogRecord', 'SALT_CLASSES', 'SALT_MATCHES', 'SaltComposition',
66
67
  'abbreviation_row', 'abbreviations_rows', 'alert_count',
67
68
  'calc_implicit', 'canonicalize', 'check_valence', 'crippen_logp', 'crippen_mr',
68
69
  'decompose_salts', 'expand_abbreviations', 'explicify_hydrogens', 'fix_resonance',
@@ -68,9 +68,12 @@ def canonicalize(molecule: MoleculeContainer, *, fix_tautomers: bool = True,
68
68
  sodium acetate stays sodium acetate -- there is no proton in it to move -- while ammonium acetate
69
69
  becomes acetic acid and ammonia, both drawings of one salt.
70
70
 
71
- One stage does move the net charge, `standardize()`'s organometallic completion: a zinc or magnesium
72
- holding one carbon and no halide is charged rather than left as a neutral one-coordinate metal. It
73
- is the only place in the pipeline where the total changes, and it says so in the log.
71
+ `standardize()` moves the net charge wherever a drawing omitted one: the organometallic completion
72
+ charges a metal nobody drew a halide for; `fix_salt_charges()` pairs each free metal with the acid
73
+ that belongs to it, deprotonating the acid and charging the metal only when it arrives neutral -- a
74
+ metal already drawn charged takes the proton and the total falls. Both say so in the log, and
75
+ `neutralize()` two steps later leaves the repair alone: `acids.tsv`'s rows are charged sites only,
76
+ so a sodium cation is no donor to any of them.
74
77
  """
75
78
  # A refusal at the answer boundary, which is the only place one belongs. `smiles()` returns
76
79
  # whichever container its string describes, so a `>>` in a structure column arrives here as a
@@ -38,10 +38,10 @@ Ties are left tied. Two candidates of equal rank are automorphic, so which one
38
38
  observable in the result, and the sort being stable makes the arbitrary half of the choice cheap.
39
39
  Charging needs no order at all, being one atom's charge and nothing else's.
40
40
 
41
- NET CHARGE MOVES HERE, which no other `standardize()` stage does, and every spelling that moves it is
42
- accepted: a lone `[Zn+]` beside a neutral halogen sits at `+1`, a neutral metal beside `[Cl-]` at `-1`,
43
- and a charged metal with no halide leaves `0` for `+1`. A dropped sign is the premise of the stage, so
44
- the record states which way the total went rather than the pass declining to move it.
41
+ NET CHARGE MOVES HERE, and every spelling that moves it is accepted: a lone `[Zn+]` beside a neutral
42
+ halogen sits at `+1`, a neutral metal beside `[Cl-]` at `-1`, and a charged metal with no halide
43
+ leaves `0` for `+1`. A dropped sign is the premise of the stage, so the record states which way the
44
+ total went rather than the pass declining to move it.
45
45
  """
46
46
  from collections.abc import MutableSequence
47
47
  from ..core import LogRecord, MoleculeContainer