pyobo 0.12.11__tar.gz → 0.12.13__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 (210) hide show
  1. {pyobo-0.12.11 → pyobo-0.12.13}/PKG-INFO +39 -24
  2. {pyobo-0.12.11 → pyobo-0.12.13}/README.md +37 -22
  3. {pyobo-0.12.11 → pyobo-0.12.13}/pyproject.toml +6 -6
  4. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/api/xrefs.py +2 -7
  5. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/cli/cli.py +9 -3
  6. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/cli/database.py +63 -22
  7. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/cli/lookup.py +39 -24
  8. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/cli/utils.py +6 -2
  9. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/constants.py +28 -5
  10. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/ner/api.py +3 -0
  11. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/ner/scispacy_utils.py +2 -0
  12. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/plugins.py +3 -1
  13. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/chebi.py +1 -4
  14. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/obo/reader.py +3 -3
  15. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/struct_utils.py +2 -0
  16. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/typedef.py +22 -0
  17. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/vocabulary.py +2 -0
  18. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/version.py +1 -1
  19. {pyobo-0.12.11 → pyobo-0.12.13}/LICENSE +0 -0
  20. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/.DS_Store +0 -0
  21. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/__init__.py +0 -0
  22. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/__main__.py +0 -0
  23. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/api/__init__.py +0 -0
  24. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/api/alts.py +0 -0
  25. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/api/combine.py +0 -0
  26. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/api/edges.py +0 -0
  27. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/api/embedding.py +0 -0
  28. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/api/hierarchy.py +0 -0
  29. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/api/metadata.py +0 -0
  30. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/api/names.py +0 -0
  31. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/api/properties.py +0 -0
  32. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/api/relations.py +0 -0
  33. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/api/species.py +0 -0
  34. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/api/typedefs.py +0 -0
  35. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/api/utils.py +0 -0
  36. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/cli/__init__.py +0 -0
  37. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/cli/database_utils.py +0 -0
  38. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/getters.py +0 -0
  39. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/gilda_utils.py +0 -0
  40. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/identifier_utils/__init__.py +0 -0
  41. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/identifier_utils/api.py +0 -0
  42. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/identifier_utils/relations/__init__.py +0 -0
  43. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/identifier_utils/relations/api.py +0 -0
  44. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/identifier_utils/relations/data.json +0 -0
  45. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/identifier_utils/relations/data_owl.json +0 -0
  46. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/identifier_utils/relations/data_rdf.json +0 -0
  47. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/identifier_utils/relations/data_rdfs.json +0 -0
  48. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/mocks.py +0 -0
  49. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/ner/__init__.py +0 -0
  50. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/ner/normalizer.py +0 -0
  51. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/py.typed +0 -0
  52. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/resource_utils.py +0 -0
  53. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/resources/__init__.py +0 -0
  54. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/resources/ncbitaxon.py +0 -0
  55. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/resources/ncbitaxon.tsv.gz +0 -0
  56. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/resources/ro.py +0 -0
  57. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/resources/ro.tsv +0 -0
  58. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/resources/so.py +0 -0
  59. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/resources/so.tsv +0 -0
  60. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/README.md +0 -0
  61. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/__init__.py +0 -0
  62. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/agrovoc.py +0 -0
  63. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/antibodyregistry.py +0 -0
  64. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/bigg/__init__.py +0 -0
  65. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/bigg/bigg_compartment.py +0 -0
  66. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/bigg/bigg_metabolite.py +0 -0
  67. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/bigg/bigg_model.py +0 -0
  68. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/bigg/bigg_reaction.py +0 -0
  69. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/biogrid.py +0 -0
  70. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/ccle.py +0 -0
  71. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/cgnc.py +0 -0
  72. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/chembl/__init__.py +0 -0
  73. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/chembl/chembl_cell.py +0 -0
  74. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/chembl/chembl_compound.py +0 -0
  75. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/chembl/chembl_mechanism.py +0 -0
  76. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/chembl/chembl_target.py +0 -0
  77. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/chembl/chembl_tissue.py +0 -0
  78. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/civic_gene.py +0 -0
  79. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/clinicaltrials.py +0 -0
  80. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/complexportal.py +0 -0
  81. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/conso.py +0 -0
  82. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/cpt.py +0 -0
  83. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/credit.py +0 -0
  84. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/cvx.py +0 -0
  85. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/depmap.py +0 -0
  86. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/dictybase_gene.py +0 -0
  87. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/drugbank/__init__.py +0 -0
  88. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/drugbank/drugbank.py +0 -0
  89. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/drugbank/drugbank_salt.py +0 -0
  90. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/drugcentral.py +0 -0
  91. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/expasy.py +0 -0
  92. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/famplex.py +0 -0
  93. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/flybase.py +0 -0
  94. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/gard.py +0 -0
  95. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/geonames/__init__.py +0 -0
  96. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/geonames/features.py +0 -0
  97. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/geonames/geonames.py +0 -0
  98. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/geonames/utils.py +0 -0
  99. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/gmt_utils.py +0 -0
  100. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/go.py +0 -0
  101. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/goldbook.py +0 -0
  102. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/gtdb.py +0 -0
  103. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/gwascentral/__init__.py +0 -0
  104. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/gwascentral/gwascentral_phenotype.py +0 -0
  105. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/gwascentral/gwascentral_study.py +0 -0
  106. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/hgnc/__init__.py +0 -0
  107. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/hgnc/hgnc.py +0 -0
  108. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/hgnc/hgncgenefamily.py +0 -0
  109. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/iana_media_type.py +0 -0
  110. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/icd/__init__.py +0 -0
  111. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/icd/icd10.py +0 -0
  112. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/icd/icd11.py +0 -0
  113. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/icd/icd_utils.py +0 -0
  114. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/iconclass.py +0 -0
  115. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/intact.py +0 -0
  116. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/interpro.py +0 -0
  117. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/itis.py +0 -0
  118. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/kegg/__init__.py +0 -0
  119. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/kegg/api.py +0 -0
  120. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/kegg/genes.py +0 -0
  121. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/kegg/genome.py +0 -0
  122. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/kegg/pathway.py +0 -0
  123. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/mesh.py +0 -0
  124. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/mgi.py +0 -0
  125. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/mirbase/__init__.py +0 -0
  126. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/mirbase/mirbase.py +0 -0
  127. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/mirbase/mirbase_constants.py +0 -0
  128. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/mirbase/mirbase_family.py +0 -0
  129. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/mirbase/mirbase_mature.py +0 -0
  130. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/msigdb.py +0 -0
  131. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/ncbi/__init__.py +0 -0
  132. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/ncbi/ncbi_gc.py +0 -0
  133. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/ncbi/ncbigene.py +0 -0
  134. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/nih_reporter.py +0 -0
  135. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/nlm/__init__.py +0 -0
  136. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/nlm/nlm_catalog.py +0 -0
  137. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/nlm/nlm_publisher.py +0 -0
  138. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/nlm/utils.py +0 -0
  139. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/npass.py +0 -0
  140. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/omim_ps.py +0 -0
  141. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/pathbank.py +0 -0
  142. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/pfam/__init__.py +0 -0
  143. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/pfam/pfam.py +0 -0
  144. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/pfam/pfam_clan.py +0 -0
  145. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/pharmgkb/__init__.py +0 -0
  146. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/pharmgkb/pharmgkb_chemical.py +0 -0
  147. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/pharmgkb/pharmgkb_disease.py +0 -0
  148. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/pharmgkb/pharmgkb_gene.py +0 -0
  149. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/pharmgkb/pharmgkb_pathway.py +0 -0
  150. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/pharmgkb/pharmgkb_variant.py +0 -0
  151. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/pharmgkb/utils.py +0 -0
  152. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/pid.py +0 -0
  153. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/pombase.py +0 -0
  154. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/pubchem.py +0 -0
  155. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/reactome.py +0 -0
  156. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/rgd.py +0 -0
  157. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/rhea.py +0 -0
  158. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/ror.py +0 -0
  159. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/selventa/__init__.py +0 -0
  160. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/selventa/schem.py +0 -0
  161. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/selventa/scomp.py +0 -0
  162. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/selventa/sdis.py +0 -0
  163. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/selventa/sfam.py +0 -0
  164. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/sgd.py +0 -0
  165. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/signor/__init__.py +0 -0
  166. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/signor/download.py +0 -0
  167. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/signor/signor_complexes.py +0 -0
  168. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/slm.py +0 -0
  169. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/spdx.py +0 -0
  170. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/umls/__init__.py +0 -0
  171. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/umls/__main__.py +0 -0
  172. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/umls/get_synonym_types.py +0 -0
  173. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/umls/sty.py +0 -0
  174. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/umls/synonym_types.tsv +0 -0
  175. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/umls/umls.py +0 -0
  176. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/unimod.py +0 -0
  177. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/uniprot/__init__.py +0 -0
  178. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/uniprot/uniprot.py +0 -0
  179. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/uniprot/uniprot_ptm.py +0 -0
  180. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/utils.py +0 -0
  181. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/wikipathways.py +0 -0
  182. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/sources/zfin.py +0 -0
  183. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/ssg/__init__.py +0 -0
  184. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/ssg/base.html +0 -0
  185. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/ssg/index.html +0 -0
  186. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/ssg/term.html +0 -0
  187. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/ssg/typedef.html +0 -0
  188. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/__init__.py +0 -0
  189. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/functional/__init__.py +0 -0
  190. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/functional/dsl.py +0 -0
  191. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/functional/macros.py +0 -0
  192. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/functional/obo_to_functional.py +0 -0
  193. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/functional/ontology.py +0 -0
  194. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/functional/utils.py +0 -0
  195. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/obo/__init__.py +0 -0
  196. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/obo/reader_utils.py +0 -0
  197. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/obograph/__init__.py +0 -0
  198. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/obograph/export.py +0 -0
  199. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/obograph/reader.py +0 -0
  200. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/obograph/utils.py +0 -0
  201. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/reference.py +0 -0
  202. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/struct.py +0 -0
  203. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/struct/utils.py +0 -0
  204. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/utils/__init__.py +0 -0
  205. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/utils/cache.py +0 -0
  206. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/utils/io.py +0 -0
  207. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/utils/iter.py +0 -0
  208. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/utils/misc.py +0 -0
  209. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/utils/ndex_utils.py +0 -0
  210. {pyobo-0.12.11 → pyobo-0.12.13}/src/pyobo/utils/path.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyobo
3
- Version: 0.12.11
3
+ Version: 0.12.13
4
4
  Summary: A python package for handling and generating OBO
5
5
  Keywords: snekpack,cookiecutter,ontologies,biomedical ontologies,life sciences,natural sciences,bioinformatics,cheminformatics,Open Biomedical Ontologies,OBO
6
6
  Author: Charles Tapley Hoyt
@@ -55,7 +55,7 @@ Requires-Dist: nih-reporter-downloader>=0.0.1
55
55
  Requires-Dist: typing-extensions
56
56
  Requires-Dist: rdflib
57
57
  Requires-Dist: obographs>=0.0.8
58
- Requires-Dist: sssom-pydantic
58
+ Requires-Dist: sssom-pydantic>=0.1.1
59
59
  Requires-Dist: psycopg2-binary ; extra == 'drugcentral'
60
60
  Requires-Dist: ssslm[gilda] ; extra == 'gilda'
61
61
  Requires-Dist: ssslm[gilda-slim] ; extra == 'gilda-slim'
@@ -523,20 +523,6 @@ Alternatively, install using pip:
523
523
  $ python3 -m pip install -e .
524
524
  ```
525
525
 
526
- ### Updating Package Boilerplate
527
-
528
- This project uses `cruft` to keep boilerplate (i.e., configuration, contribution
529
- guidelines, documentation configuration) up-to-date with the upstream
530
- cookiecutter package. Install cruft with either `uv tool install cruft` or
531
- `python3 -m pip install cruft` then run:
532
-
533
- ```console
534
- $ cruft update
535
- ```
536
-
537
- More info on Cruft's update command is available
538
- [here](https://github.com/cruft/cruft?tab=readme-ov-file#updating-a-project).
539
-
540
526
  ### 🥼 Testing
541
527
 
542
528
  After cloning the repository and installing `tox` with
@@ -574,8 +560,21 @@ only that Sphinx can build the documentation in an isolated environment (i.e.,
574
560
  with `tox -e docs-test`) but also that
575
561
  [ReadTheDocs can build it too](https://docs.readthedocs.io/en/stable/pull-requests.html).
576
562
 
563
+ </details>
564
+
565
+ ## 🧑‍💻 For Maintainers
566
+
567
+ <details>
568
+ <summary>See maintainer instructions</summary>
569
+
570
+ ### Initial Configuration
571
+
577
572
  #### Configuring ReadTheDocs
578
573
 
574
+ [ReadTheDocs](https://readthedocs.org) is an external documentation hosting
575
+ service that integrates with GitHub's CI/CD. Do the following for each
576
+ repository:
577
+
579
578
  1. Log in to ReadTheDocs with your GitHub account to install the integration at
580
579
  https://readthedocs.org/accounts/login/?next=/dashboard/
581
580
  2. Import your project by navigating to https://readthedocs.org/dashboard/import
@@ -584,12 +583,10 @@ with `tox -e docs-test`) but also that
584
583
  (i.e., with spaces and capital letters)
585
584
  4. Click next, and you're good to go!
586
585
 
587
- ### 📦 Making a Release
588
-
589
- #### Configuring Zenodo
586
+ #### Configuring Archival on Zenodo
590
587
 
591
588
  [Zenodo](https://zenodo.org) is a long-term archival system that assigns a DOI
592
- to each release of your package.
589
+ to each release of your package. Do the following for each repository:
593
590
 
594
591
  1. Log in to Zenodo via GitHub with this link:
595
592
  https://zenodo.org/oauth/login/github/?next=%2F. This brings you to a page
@@ -609,10 +606,10 @@ the DOI for the release and link to the Zenodo record for it.
609
606
 
610
607
  #### Registering with the Python Package Index (PyPI)
611
608
 
612
- You only have to do the following steps once.
609
+ The [Python Package Index (PyPI)](https://pypi.org) hosts packages so they can
610
+ be easily installed with `pip`, `uv`, and equivalent tools.
613
611
 
614
- 1. Register for an account on the
615
- [Python Package Index (PyPI)](https://pypi.org/account/register)
612
+ 1. Register for an account [here](https://pypi.org/account/register)
616
613
  2. Navigate to https://pypi.org/manage/account and make sure you have verified
617
614
  your email address. A verification email might not have been sent by default,
618
615
  so you might have to click the "options" dropdown next to your address to get
@@ -623,9 +620,11 @@ You only have to do the following steps once.
623
620
  2-factor authentication
624
621
  4. Issue an API token from https://pypi.org/manage/account/token
625
622
 
623
+ This only needs to be done once per developer.
624
+
626
625
  #### Configuring your machine's connection to PyPI
627
626
 
628
- You have to do the following steps once per machine.
627
+ This needs to be done once per machine.
629
628
 
630
629
  ```console
631
630
  $ uv tool install keyring
@@ -635,6 +634,8 @@ $ keyring set https://test.pypi.org/legacy/ __token__
635
634
 
636
635
  Note that this deprecates previous workflows using `.pypirc`.
637
636
 
637
+ ### 📦 Making a Release
638
+
638
639
  #### Uploading to PyPI
639
640
 
640
641
  After installing the package in development mode and installing `tox` with
@@ -672,4 +673,18 @@ This script does the following:
672
673
 
673
674
  This will trigger Zenodo to assign a DOI to your release as well.
674
675
 
676
+ ### Updating Package Boilerplate
677
+
678
+ This project uses `cruft` to keep boilerplate (i.e., configuration, contribution
679
+ guidelines, documentation configuration) up-to-date with the upstream
680
+ cookiecutter package. Install cruft with either `uv tool install cruft` or
681
+ `python3 -m pip install cruft` then run:
682
+
683
+ ```console
684
+ $ cruft update
685
+ ```
686
+
687
+ More info on Cruft's update command is available
688
+ [here](https://github.com/cruft/cruft?tab=readme-ov-file#updating-a-project).
689
+
675
690
  </details>
@@ -435,20 +435,6 @@ Alternatively, install using pip:
435
435
  $ python3 -m pip install -e .
436
436
  ```
437
437
 
438
- ### Updating Package Boilerplate
439
-
440
- This project uses `cruft` to keep boilerplate (i.e., configuration, contribution
441
- guidelines, documentation configuration) up-to-date with the upstream
442
- cookiecutter package. Install cruft with either `uv tool install cruft` or
443
- `python3 -m pip install cruft` then run:
444
-
445
- ```console
446
- $ cruft update
447
- ```
448
-
449
- More info on Cruft's update command is available
450
- [here](https://github.com/cruft/cruft?tab=readme-ov-file#updating-a-project).
451
-
452
438
  ### 🥼 Testing
453
439
 
454
440
  After cloning the repository and installing `tox` with
@@ -486,8 +472,21 @@ only that Sphinx can build the documentation in an isolated environment (i.e.,
486
472
  with `tox -e docs-test`) but also that
487
473
  [ReadTheDocs can build it too](https://docs.readthedocs.io/en/stable/pull-requests.html).
488
474
 
475
+ </details>
476
+
477
+ ## 🧑‍💻 For Maintainers
478
+
479
+ <details>
480
+ <summary>See maintainer instructions</summary>
481
+
482
+ ### Initial Configuration
483
+
489
484
  #### Configuring ReadTheDocs
490
485
 
486
+ [ReadTheDocs](https://readthedocs.org) is an external documentation hosting
487
+ service that integrates with GitHub's CI/CD. Do the following for each
488
+ repository:
489
+
491
490
  1. Log in to ReadTheDocs with your GitHub account to install the integration at
492
491
  https://readthedocs.org/accounts/login/?next=/dashboard/
493
492
  2. Import your project by navigating to https://readthedocs.org/dashboard/import
@@ -496,12 +495,10 @@ with `tox -e docs-test`) but also that
496
495
  (i.e., with spaces and capital letters)
497
496
  4. Click next, and you're good to go!
498
497
 
499
- ### 📦 Making a Release
500
-
501
- #### Configuring Zenodo
498
+ #### Configuring Archival on Zenodo
502
499
 
503
500
  [Zenodo](https://zenodo.org) is a long-term archival system that assigns a DOI
504
- to each release of your package.
501
+ to each release of your package. Do the following for each repository:
505
502
 
506
503
  1. Log in to Zenodo via GitHub with this link:
507
504
  https://zenodo.org/oauth/login/github/?next=%2F. This brings you to a page
@@ -521,10 +518,10 @@ the DOI for the release and link to the Zenodo record for it.
521
518
 
522
519
  #### Registering with the Python Package Index (PyPI)
523
520
 
524
- You only have to do the following steps once.
521
+ The [Python Package Index (PyPI)](https://pypi.org) hosts packages so they can
522
+ be easily installed with `pip`, `uv`, and equivalent tools.
525
523
 
526
- 1. Register for an account on the
527
- [Python Package Index (PyPI)](https://pypi.org/account/register)
524
+ 1. Register for an account [here](https://pypi.org/account/register)
528
525
  2. Navigate to https://pypi.org/manage/account and make sure you have verified
529
526
  your email address. A verification email might not have been sent by default,
530
527
  so you might have to click the "options" dropdown next to your address to get
@@ -535,9 +532,11 @@ You only have to do the following steps once.
535
532
  2-factor authentication
536
533
  4. Issue an API token from https://pypi.org/manage/account/token
537
534
 
535
+ This only needs to be done once per developer.
536
+
538
537
  #### Configuring your machine's connection to PyPI
539
538
 
540
- You have to do the following steps once per machine.
539
+ This needs to be done once per machine.
541
540
 
542
541
  ```console
543
542
  $ uv tool install keyring
@@ -547,6 +546,8 @@ $ keyring set https://test.pypi.org/legacy/ __token__
547
546
 
548
547
  Note that this deprecates previous workflows using `.pypirc`.
549
548
 
549
+ ### 📦 Making a Release
550
+
550
551
  #### Uploading to PyPI
551
552
 
552
553
  After installing the package in development mode and installing `tox` with
@@ -584,4 +585,18 @@ This script does the following:
584
585
 
585
586
  This will trigger Zenodo to assign a DOI to your release as well.
586
587
 
588
+ ### Updating Package Boilerplate
589
+
590
+ This project uses `cruft` to keep boilerplate (i.e., configuration, contribution
591
+ guidelines, documentation configuration) up-to-date with the upstream
592
+ cookiecutter package. Install cruft with either `uv tool install cruft` or
593
+ `python3 -m pip install cruft` then run:
594
+
595
+ ```console
596
+ $ cruft update
597
+ ```
598
+
599
+ More info on Cruft's update command is available
600
+ [here](https://github.com/cruft/cruft?tab=readme-ov-file#updating-a-project).
601
+
587
602
  </details>
@@ -1,10 +1,10 @@
1
1
  [build-system]
2
- requires = ["uv_build>=0.6.6,<1.0"]
2
+ requires = ["uv_build>=0.9.6,<1.0"]
3
3
  build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "pyobo"
7
- version = "0.12.11"
7
+ version = "0.12.13"
8
8
  description = "A python package for handling and generating OBO"
9
9
  readme = "README.md"
10
10
  authors = [
@@ -89,7 +89,7 @@ dependencies = [
89
89
  "typing_extensions",
90
90
  "rdflib",
91
91
  "obographs>=0.0.8",
92
- "sssom_pydantic",
92
+ "sssom_pydantic>=0.1.1",
93
93
  ]
94
94
 
95
95
  # see https://peps.python.org/pep-0735/ and https://docs.astral.sh/uv/concepts/dependencies/#dependency-groups
@@ -141,8 +141,8 @@ bump = [
141
141
  "bump-my-version",
142
142
  ]
143
143
  build = [
144
- "uv",
145
- "uv-build",
144
+ "uv>=0.9.6",
145
+ "uv-build>=0.9.6",
146
146
  ]
147
147
  release = [
148
148
  { include-group = "build" },
@@ -315,7 +315,7 @@ known-first-party = [
315
315
  docstring-code-format = true
316
316
 
317
317
  [tool.bumpversion]
318
- current_version = "0.12.11"
318
+ current_version = "0.12.13"
319
319
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)(?:-(?P<release>[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?(?:\\+(?P<build>[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?"
320
320
  serialize = [
321
321
  "{major}.{minor}.{patch}-{release}+{build}",
@@ -9,7 +9,7 @@ import curies
9
9
  import pandas as pd
10
10
  from curies import ReferenceTuple
11
11
  from sssom_pydantic import SemanticMapping
12
- from sssom_pydantic.io import parse_record, parse_row
12
+ from sssom_pydantic.io import row_to_semantic_mapping
13
13
  from typing_extensions import Unpack
14
14
 
15
15
  from .utils import get_version_from_kwargs
@@ -124,12 +124,7 @@ def get_semantic_mappings(
124
124
  )
125
125
  if converter is None:
126
126
  converter = get_converter()
127
- rv = []
128
- for _, row in df.iterrows():
129
- record = parse_row(row.to_dict())
130
- mapping = parse_record(record, converter=converter)
131
- rv.append(mapping)
132
- return rv
127
+ return [row_to_semantic_mapping(row, converter=converter) for _, row in df.iterrows()]
133
128
 
134
129
 
135
130
  def get_mappings_df(
@@ -6,10 +6,7 @@ from collections.abc import Iterable
6
6
  from functools import lru_cache
7
7
  from operator import itemgetter
8
8
 
9
- import bioregistry
10
9
  import click
11
- import humanize
12
- from tabulate import tabulate
13
10
 
14
11
  from .database import main as database_main
15
12
  from .lookup import lookup
@@ -59,6 +56,9 @@ def clean(remove_obo: bool):
59
56
  @main.command()
60
57
  def ls():
61
58
  """List how big all of the OBO files are."""
59
+ import humanize
60
+ from tabulate import tabulate
61
+
62
62
  entries = [(prefix, os.path.getsize(path)) for prefix, path in _iter_cached_obo()]
63
63
  entries = [
64
64
  (prefix, humanize.naturalsize(size), "✅" if not has_nomenclature_plugin(prefix) else "❌")
@@ -69,6 +69,8 @@ def ls():
69
69
 
70
70
  def _iter_cached_obo() -> Iterable[tuple[str, str]]:
71
71
  """Iterate over cached OBO paths."""
72
+ import bioregistry
73
+
72
74
  for prefix in os.listdir(RAW_DIRECTORY):
73
75
  if prefix in GLOBAL_SKIP or _has_no_download(prefix) or bioregistry.is_deprecated(prefix):
74
76
  continue
@@ -83,6 +85,8 @@ def _iter_cached_obo() -> Iterable[tuple[str, str]]:
83
85
 
84
86
  def _has_no_download(prefix: str) -> bool:
85
87
  """Return if the prefix is not available."""
88
+ import bioregistry
89
+
86
90
  prefix_norm = bioregistry.normalize_prefix(prefix)
87
91
  return prefix_norm is not None and prefix_norm in _no_download()
88
92
 
@@ -90,6 +94,8 @@ def _has_no_download(prefix: str) -> bool:
90
94
  @lru_cache(maxsize=1)
91
95
  def _no_download() -> set[str]:
92
96
  """Get the list of prefixes not available as OBO."""
97
+ import bioregistry
98
+
93
99
  return {resource.prefix for resource in bioregistry.resources() if not resource.has_download()}
94
100
 
95
101
 
@@ -5,29 +5,11 @@ import warnings
5
5
  from collections.abc import Iterable
6
6
  from pathlib import Path
7
7
 
8
- import bioregistry
9
- import bioversions
10
8
  import click
11
9
  from more_click import verbose_option
12
10
  from tqdm.contrib.logging import logging_redirect_tqdm
13
11
  from typing_extensions import Unpack
14
- from zenodo_client import update_zenodo
15
-
16
- from .database_utils import (
17
- IterHelperHelperDict,
18
- _iter_alts,
19
- _iter_definitions,
20
- _iter_edges,
21
- _iter_mappings,
22
- _iter_names,
23
- _iter_properties,
24
- _iter_relations,
25
- _iter_species,
26
- _iter_synonyms,
27
- _iter_typedefs,
28
- _iter_xrefs,
29
- iter_helper_helper,
30
- )
12
+
31
13
  from .utils import (
32
14
  Clickable,
33
15
  directory_option,
@@ -48,7 +30,6 @@ from ..constants import (
48
30
  TYPEDEFS_RECORD,
49
31
  DatabaseKwargs,
50
32
  )
51
- from ..getters import db_output_helper, get_ontology
52
33
 
53
34
  __all__ = [
54
35
  "main",
@@ -107,6 +88,8 @@ def build(ctx: click.Context, eager_versions: bool, **kwargs: Unpack[DatabaseKwa
107
88
  # sys.exit(1)
108
89
 
109
90
  if eager_versions:
91
+ import bioversions
92
+
110
93
  bioversions.get_rows(use_tqdm=True)
111
94
 
112
95
  with logging_redirect_tqdm():
@@ -143,6 +126,9 @@ def build(ctx: click.Context, eager_versions: bool, **kwargs: Unpack[DatabaseKwa
143
126
  @database_annotate
144
127
  def cache(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> None:
145
128
  """Cache all things."""
129
+ from .database_utils import iter_helper_helper
130
+ from ..getters import get_ontology
131
+
146
132
  if zenodo:
147
133
  click.echo("no zenodo for caching")
148
134
 
@@ -156,9 +142,13 @@ def cache(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> No
156
142
  @database_annotate
157
143
  def metadata(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> None:
158
144
  """Make the prefix-metadata dump."""
145
+ import bioregistry
146
+
147
+ from .database_utils import IterHelperHelperDict, iter_helper_helper
159
148
  from ..api import get_metadata
149
+ from ..getters import db_output_helper
160
150
 
161
- def _iter_metadata(
151
+ def _iter_metadata_internal(
162
152
  **kwargs: Unpack[IterHelperHelperDict],
163
153
  ) -> Iterable[tuple[str, str, str, bool]]:
164
154
  for prefix, data in iter_helper_helper(get_metadata, **kwargs):
@@ -166,7 +156,7 @@ def metadata(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) ->
166
156
  logger.debug(f"[{prefix}] using version {version}")
167
157
  yield prefix, version, data["date"], bioregistry.is_deprecated(prefix)
168
158
 
169
- it = _iter_metadata(**kwargs)
159
+ it = _iter_metadata_internal(**kwargs)
170
160
  db_output_helper(
171
161
  it,
172
162
  "metadata",
@@ -181,6 +171,9 @@ def metadata(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) ->
181
171
  @database_annotate
182
172
  def names(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> None:
183
173
  """Make the prefix-identifier-name dump."""
174
+ from .database_utils import _iter_names
175
+ from ..getters import db_output_helper
176
+
184
177
  it = _iter_names(**kwargs)
185
178
  with logging_redirect_tqdm():
186
179
  paths = db_output_helper(
@@ -190,6 +183,8 @@ def names(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> No
190
183
  directory=directory,
191
184
  )
192
185
  if zenodo:
186
+ from zenodo_client import update_zenodo
187
+
193
188
  # see https://zenodo.org/record/4020486
194
189
  update_zenodo(OOH_NA_NA_RECORD, paths)
195
190
 
@@ -197,6 +192,9 @@ def names(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> No
197
192
  @database_annotate
198
193
  def species(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> None:
199
194
  """Make the prefix-identifier-species dump."""
195
+ from .database_utils import _iter_species
196
+ from ..getters import db_output_helper
197
+
200
198
  with logging_redirect_tqdm():
201
199
  it = _iter_species(**kwargs)
202
200
  paths = db_output_helper(
@@ -206,6 +204,8 @@ def species(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) ->
206
204
  directory=directory,
207
205
  )
208
206
  if zenodo:
207
+ from zenodo_client import update_zenodo
208
+
209
209
  # see https://zenodo.org/record/5334738
210
210
  update_zenodo(SPECIES_RECORD, paths)
211
211
 
@@ -221,6 +221,9 @@ def _extend_skip_set(kwargs: DatabaseKwargs, skip_set: set[str]) -> None:
221
221
  @database_annotate
222
222
  def definitions(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> None:
223
223
  """Make the prefix-identifier-definition dump."""
224
+ from .database_utils import _iter_definitions
225
+ from ..getters import db_output_helper
226
+
224
227
  with logging_redirect_tqdm():
225
228
  _extend_skip_set(kwargs, {"kegg.pathway", "kegg.genes", "kegg.genome", "umls"})
226
229
  it = _iter_definitions(**kwargs)
@@ -231,6 +234,8 @@ def definitions(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs])
231
234
  directory=directory,
232
235
  )
233
236
  if zenodo:
237
+ from zenodo_client import update_zenodo
238
+
234
239
  # see https://zenodo.org/record/4637061
235
240
  update_zenodo(DEFINITIONS_RECORD, paths)
236
241
 
@@ -238,6 +243,9 @@ def definitions(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs])
238
243
  @database_annotate
239
244
  def typedefs(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> None:
240
245
  """Make the typedef prefix-identifier-name dump."""
246
+ from .database_utils import _iter_typedefs
247
+ from ..getters import db_output_helper
248
+
241
249
  with logging_redirect_tqdm():
242
250
  _extend_skip_set(kwargs, {"ncbigene", "kegg.pathway", "kegg.genes", "kegg.genome"})
243
251
  it = _iter_typedefs(**kwargs)
@@ -249,6 +257,8 @@ def typedefs(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) ->
249
257
  directory=directory,
250
258
  )
251
259
  if zenodo:
260
+ from zenodo_client import update_zenodo
261
+
252
262
  # see https://zenodo.org/record/4644013
253
263
  update_zenodo(TYPEDEFS_RECORD, paths)
254
264
 
@@ -256,6 +266,9 @@ def typedefs(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) ->
256
266
  @database_annotate
257
267
  def alts(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> None:
258
268
  """Make the prefix-alt-id dump."""
269
+ from .database_utils import _iter_alts
270
+ from ..getters import db_output_helper
271
+
259
272
  with logging_redirect_tqdm():
260
273
  _extend_skip_set(kwargs, {"kegg.pathway", "kegg.genes", "kegg.genome", "umls"})
261
274
  it = _iter_alts(**kwargs)
@@ -266,6 +279,8 @@ def alts(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> Non
266
279
  directory=directory,
267
280
  )
268
281
  if zenodo:
282
+ from zenodo_client import update_zenodo
283
+
269
284
  # see https://zenodo.org/record/4021476
270
285
  update_zenodo(ALTS_DATA_RECORD, paths)
271
286
 
@@ -273,6 +288,9 @@ def alts(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> Non
273
288
  @database_annotate
274
289
  def synonyms(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> None:
275
290
  """Make the prefix-identifier-synonym dump."""
291
+ from .database_utils import _iter_synonyms
292
+ from ..getters import db_output_helper
293
+
276
294
  with logging_redirect_tqdm():
277
295
  _extend_skip_set(kwargs, {"kegg.pathway", "kegg.genes", "kegg.genome"})
278
296
  it = _iter_synonyms(**kwargs)
@@ -283,6 +301,8 @@ def synonyms(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) ->
283
301
  directory=directory,
284
302
  )
285
303
  if zenodo:
304
+ from zenodo_client import update_zenodo
305
+
286
306
  # see https://zenodo.org/record/4021482
287
307
  update_zenodo(SYNONYMS_RECORD, paths)
288
308
 
@@ -290,6 +310,9 @@ def synonyms(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) ->
290
310
  @database_annotate
291
311
  def relations(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> None:
292
312
  """Make the relation dump."""
313
+ from .database_utils import _iter_relations
314
+ from ..getters import db_output_helper
315
+
293
316
  with logging_redirect_tqdm():
294
317
  it = _iter_relations(**kwargs)
295
318
  paths = db_output_helper(
@@ -307,6 +330,8 @@ def relations(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -
307
330
  directory=directory,
308
331
  )
309
332
  if zenodo:
333
+ from zenodo_client import update_zenodo
334
+
310
335
  # see https://zenodo.org/record/4625167
311
336
  update_zenodo(RELATIONS_RECORD, paths)
312
337
 
@@ -314,6 +339,9 @@ def relations(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -
314
339
  @database_annotate
315
340
  def edges(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> None:
316
341
  """Make the edges dump."""
342
+ from .database_utils import _iter_edges
343
+ from ..getters import db_output_helper
344
+
317
345
  with logging_redirect_tqdm():
318
346
  it = _iter_edges(**kwargs)
319
347
  db_output_helper(
@@ -334,6 +362,9 @@ def edges(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> No
334
362
  @database_annotate
335
363
  def properties(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> None:
336
364
  """Make the properties dump."""
365
+ from .database_utils import _iter_properties
366
+ from ..getters import db_output_helper
367
+
337
368
  with logging_redirect_tqdm():
338
369
  it = _iter_properties(**kwargs)
339
370
  paths = db_output_helper(
@@ -344,6 +375,8 @@ def properties(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs])
344
375
  directory=directory,
345
376
  )
346
377
  if zenodo:
378
+ from zenodo_client import update_zenodo
379
+
347
380
  # see https://zenodo.org/record/4625172
348
381
  update_zenodo(PROPERTIES_RECORD, paths)
349
382
 
@@ -351,6 +384,9 @@ def properties(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs])
351
384
  @database_annotate
352
385
  def xrefs(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> None:
353
386
  """Make the prefix-identifier-xref dump."""
387
+ from .database_utils import _iter_xrefs
388
+ from ..getters import db_output_helper
389
+
354
390
  warnings.warn("Use pyobo.database.mappings instead", DeprecationWarning, stacklevel=2)
355
391
  with logging_redirect_tqdm():
356
392
  it = _iter_xrefs(**kwargs)
@@ -362,6 +398,8 @@ def xrefs(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> No
362
398
  directory=directory,
363
399
  )
364
400
  if zenodo:
401
+ from zenodo_client import update_zenodo
402
+
365
403
  # see https://zenodo.org/record/4021477
366
404
  update_zenodo(JAVERT_RECORD, paths)
367
405
 
@@ -369,6 +407,9 @@ def xrefs(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> No
369
407
  @database_annotate
370
408
  def mappings(zenodo: bool, directory: Path, **kwargs: Unpack[DatabaseKwargs]) -> None:
371
409
  """Make the SSSOM dump."""
410
+ from .database_utils import _iter_mappings
411
+ from ..getters import db_output_helper
412
+
372
413
  columns = [
373
414
  "subject_id",
374
415
  "object_id",