lx-dtypes 0.1.1__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 (390) hide show
  1. lx_dtypes-0.1.1/.coderabbitai.yaml +3 -0
  2. lx_dtypes-0.1.1/.envrc +4 -0
  3. lx_dtypes-0.1.1/.github/codecov.yml +18 -0
  4. lx_dtypes-0.1.1/.github/dependabot.yml +44 -0
  5. lx_dtypes-0.1.1/.github/workflows/ci.yml +58 -0
  6. lx_dtypes-0.1.1/.github/workflows/docs.yml +43 -0
  7. lx_dtypes-0.1.1/.github/workflows/publish.yml +88 -0
  8. lx_dtypes-0.1.1/.gitignore +223 -0
  9. lx_dtypes-0.1.1/.pre-commit-config.yaml +22 -0
  10. lx_dtypes-0.1.1/.python-version +1 -0
  11. lx_dtypes-0.1.1/CHANGELOG.md +17 -0
  12. lx_dtypes-0.1.1/CONTRIBUTING.md +116 -0
  13. lx_dtypes-0.1.1/LICENSE +21 -0
  14. lx_dtypes-0.1.1/PKG-INFO +231 -0
  15. lx_dtypes-0.1.1/README.md +145 -0
  16. lx_dtypes-0.1.1/TODO.md +1 -0
  17. lx_dtypes-0.1.1/data-models.excalidraw +84 -0
  18. lx_dtypes-0.1.1/db_interface_schema.json +3299 -0
  19. lx_dtypes-0.1.1/development.code-workspace +29 -0
  20. lx_dtypes-0.1.1/devenv.lock +138 -0
  21. lx_dtypes-0.1.1/devenv.nix +162 -0
  22. lx_dtypes-0.1.1/devenv.yaml +11 -0
  23. lx_dtypes-0.1.1/docs/Makefile +20 -0
  24. lx_dtypes-0.1.1/docs/api/index.md +9 -0
  25. lx_dtypes-0.1.1/docs/api/interface.rst +27 -0
  26. lx_dtypes-0.1.1/docs/api/knowledge_base.rst +59 -0
  27. lx_dtypes-0.1.1/docs/api/ledger.rst +56 -0
  28. lx_dtypes-0.1.1/docs/conf.py +86 -0
  29. lx_dtypes-0.1.1/docs/diagrams/dataloader.mmd +41 -0
  30. lx_dtypes-0.1.1/docs/diagrams/dataloader.png +0 -0
  31. lx_dtypes-0.1.1/docs/diagrams/django_pydantic_sync.mmd +31 -0
  32. lx_dtypes-0.1.1/docs/diagrams/django_pydantic_sync.png +0 -0
  33. lx_dtypes-0.1.1/docs/diagrams/pydantic_django_roundtrip.mmd +22 -0
  34. lx_dtypes-0.1.1/docs/diagrams/pydantic_django_roundtrip.png +0 -0
  35. lx_dtypes-0.1.1/docs/guides/dates-and-times.md +174 -0
  36. lx_dtypes-0.1.1/docs/guides/pydantic-cheatsheet.md +262 -0
  37. lx_dtypes-0.1.1/docs/index.md +28 -0
  38. lx_dtypes-0.1.1/lx_dtypes/__init__.py +0 -0
  39. lx_dtypes-0.1.1/lx_dtypes/conftest.py +245 -0
  40. lx_dtypes-0.1.1/lx_dtypes/data/README.md +49 -0
  41. lx_dtypes-0.1.1/lx_dtypes/data/citations/config.yaml +7 -0
  42. lx_dtypes-0.1.1/lx_dtypes/data/citations/data/sample_references.yaml +7342 -0
  43. lx_dtypes-0.1.1/lx_dtypes/data/citations/sample_references.bib +2018 -0
  44. lx_dtypes-0.1.1/lx_dtypes/data/information_source_data/config.yaml +7 -0
  45. lx_dtypes-0.1.1/lx_dtypes/data/information_source_data/data/unknown.yaml +3 -0
  46. lx_dtypes-0.1.1/lx_dtypes/data/logs/.gitignore +2 -0
  47. lx_dtypes-0.1.1/lx_dtypes/data/logs/scripts/.gitkeep +0 -0
  48. lx_dtypes-0.1.1/lx_dtypes/data/lx_utils/config.yaml +7 -0
  49. lx_dtypes-0.1.1/lx_dtypes/data/lx_utils/gender/config.yaml +4 -0
  50. lx_dtypes-0.1.1/lx_dtypes/data/lx_utils/gender/default.yaml +5 -0
  51. lx_dtypes-0.1.1/lx_dtypes/data/lx_utils/tag/config.yaml +5 -0
  52. lx_dtypes-0.1.1/lx_dtypes/data/lx_utils/tag/default.yaml +0 -0
  53. lx_dtypes-0.1.1/lx_dtypes/data/lx_utils/unit/config.yaml +9 -0
  54. lx_dtypes-0.1.1/lx_dtypes/data/lx_utils/unit/data/concentration.yaml +114 -0
  55. lx_dtypes-0.1.1/lx_dtypes/data/lx_utils/unit/data/data.yaml +16 -0
  56. lx_dtypes-0.1.1/lx_dtypes/data/lx_utils/unit/data/length.yaml +31 -0
  57. lx_dtypes-0.1.1/lx_dtypes/data/lx_utils/unit/data/misc.yaml +20 -0
  58. lx_dtypes-0.1.1/lx_dtypes/data/lx_utils/unit/data/rate.yaml +6 -0
  59. lx_dtypes-0.1.1/lx_dtypes/data/lx_utils/unit/data/time.yaml +48 -0
  60. lx_dtypes-0.1.1/lx_dtypes/data/lx_utils/unit/data/volume.yaml +35 -0
  61. lx_dtypes-0.1.1/lx_dtypes/data/lx_utils/unit/data/weight.yaml +38 -0
  62. lx_dtypes-0.1.1/lx_dtypes/data/lx_utils/unit_type/config.yaml +7 -0
  63. lx_dtypes-0.1.1/lx_dtypes/data/lx_utils/unit_type/data/default.yaml +2 -0
  64. lx_dtypes-0.1.1/lx_dtypes/data/sample_knowledge_base/config.yaml +12 -0
  65. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/config.yaml +17 -0
  66. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/main.yaml +28 -0
  67. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_choices/erefs.yaml +64 -0
  68. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_choices/forrest.yaml +18 -0
  69. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_choices/free_text.yaml +4 -0
  70. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_choices/imaging_modality.yaml +11 -0
  71. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_choices/los_angeles.yaml +12 -0
  72. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_choices/numeric.yaml +9 -0
  73. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_choices/paris.yaml +16 -0
  74. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_choices/prague.yaml +9 -0
  75. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_choices/star_upper_gi_location.yaml +68 -0
  76. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_choices/varices.yaml +34 -0
  77. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_choices/yes_no_unknown.yaml +6 -0
  78. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_choices/zargar.yaml +43 -0
  79. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_classifications/data.yaml +88 -0
  80. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_classifications/esophagus.yaml +105 -0
  81. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_descriptors/data.yaml +15 -0
  82. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_findings/abnormal.yaml +81 -0
  83. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_findings/normal.yaml +57 -0
  84. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_findings/types.yaml +17 -0
  85. lx_dtypes-0.1.1/lx_dtypes/data/star_upper_gi/star_u_gi_interventions/data.yaml +5 -0
  86. lx_dtypes-0.1.1/lx_dtypes/data/terminology/config.yaml +10 -0
  87. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classification_choices/config.yaml +8 -0
  88. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classification_choices/data/00_generic.yaml +16 -0
  89. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classification_choices/data/00_generic_baseline.yaml +17 -0
  90. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classification_choices/data/00_generic_complication.yaml +11 -0
  91. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classification_choices/data/00_generic_histology.yaml +31 -0
  92. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classification_choices/data/00_generic_lesion.yaml +143 -0
  93. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classification_choices/data/02_colonoscopy_bowel_preparation.yaml +41 -0
  94. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classification_choices/data/02_colonoscopy_generic.yaml +14 -0
  95. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classification_choices/data/02_colonoscopy_histology.yaml +19 -0
  96. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classification_choices/data/02_colonoscopy_location.yaml +231 -0
  97. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classification_choices/data/02_colonoscopy_other.yaml +34 -0
  98. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classification_choices/data/02_colonoscopy_polyp_advanced_imaging.yaml +76 -0
  99. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classification_choices/data/02_colonoscopy_polyp_morphology.yaml +75 -0
  100. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classification_choices/data/02_colonoscopy_size.yaml +27 -0
  101. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classifications/classification_types/default.yaml +29 -0
  102. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classifications/config.yaml +10 -0
  103. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classifications/data/00_generic.yaml +46 -0
  104. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classifications/data/00_generic_histology.yaml +25 -0
  105. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classifications/data/00_generic_lesion.yaml +47 -0
  106. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classifications/data/02_colonoscopy_baseline.yaml +78 -0
  107. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classifications/data/02_colonoscopy_histology.yaml +15 -0
  108. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classifications/data/02_colonoscopy_other.yaml +11 -0
  109. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_classifications/data/02_colonoscopy_polyp.yaml +95 -0
  110. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_descriptors/config.yaml +9 -0
  111. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_descriptors/data/.gitkeep +0 -0
  112. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_descriptors/data/time.yaml +5 -0
  113. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_examinations/config.yaml +12 -0
  114. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_examinations/data/colonoscopy.yaml +50 -0
  115. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_examinations/data/examination_types.yaml +3 -0
  116. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_findings/config.yaml +11 -0
  117. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_findings/data/00_generic.yaml +28 -0
  118. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_findings/data/00_generic_complication.yaml +8 -0
  119. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_findings/data/01_gastroscopy_baseline.yaml +80 -0
  120. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_findings/data/01_gastroscopy_observation.yaml +98 -0
  121. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_findings/data/02_colonoscopy_baseline.yaml +57 -0
  122. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_findings/data/02_colonoscopy_hidden.yaml +107 -0
  123. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_findings/data/02_colonoscopy_observation.yaml +141 -0
  124. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_findings/finding_types/default.yaml +23 -0
  125. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_findings/former_events/cardiology.yaml +14 -0
  126. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_findings/former_events/neurology.yaml +9 -0
  127. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_findings/former_events/surgery.yaml +11 -0
  128. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_findings/former_events/thrombembolism.yaml +17 -0
  129. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_hardware/README.md +1 -0
  130. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_hardware/config.yaml +8 -0
  131. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_hardware/data/01_choices_endoscopy_processor.yaml +14 -0
  132. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_hardware/data/02_classifications_endoscopy_processor.yaml +9 -0
  133. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_hardware/data/03_finding_endoscopy_hardware.yaml +5 -0
  134. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_indications/config.yaml +11 -0
  135. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_indications/data/colonoscopy_indications.yaml +94 -0
  136. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_indications/indication_types/default.yaml +3 -0
  137. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_interventions/config.yaml +8 -0
  138. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_interventions/data/00_generic_endoscopy.yaml +51 -0
  139. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_interventions/data/00_generic_endoscopy_ablation.yaml +37 -0
  140. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_interventions/data/00_generic_endoscopy_bleeding.yaml +49 -0
  141. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_interventions/data/00_generic_endoscopy_resection.yaml +80 -0
  142. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_interventions/data/00_generic_endoscopy_stenosis.yaml +15 -0
  143. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_interventions/data/00_generic_endoscopy_stent.yaml +8 -0
  144. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_interventions/data/01_gastroscopy.yaml +14 -0
  145. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_interventions/data/04_eus.yaml +29 -0
  146. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_interventions/data/05_ercp.yaml +2 -0
  147. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_interventions/intervention_types/default.yaml +17 -0
  148. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_units/config.yaml +7 -0
  149. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_units/data/concentration.yaml +114 -0
  150. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_units/data/data.yaml +16 -0
  151. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_units/data/length.yaml +31 -0
  152. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_units/data/misc.yaml +20 -0
  153. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_units/data/rate.yaml +6 -0
  154. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_units/data/time.yaml +48 -0
  155. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_units/data/volume.yaml +35 -0
  156. lx_dtypes-0.1.1/lx_dtypes/data/terminology/lx_units/data/weight.yaml +38 -0
  157. lx_dtypes-0.1.1/lx_dtypes/django/__init__.py +0 -0
  158. lx_dtypes-0.1.1/lx_dtypes/django/api/__init__.py +3 -0
  159. lx_dtypes-0.1.1/lx_dtypes/django/api/main.py +18 -0
  160. lx_dtypes-0.1.1/lx_dtypes/django/api/request_types.py +5 -0
  161. lx_dtypes-0.1.1/lx_dtypes/django/api/stubs.py +9 -0
  162. lx_dtypes-0.1.1/lx_dtypes/django/apps.py +7 -0
  163. lx_dtypes-0.1.1/lx_dtypes/django/asgi.py +16 -0
  164. lx_dtypes-0.1.1/lx_dtypes/django/migrations/0001_initial.py +1158 -0
  165. lx_dtypes-0.1.1/lx_dtypes/django/migrations/__init__.py +0 -0
  166. lx_dtypes-0.1.1/lx_dtypes/django/models.py +4 -0
  167. lx_dtypes-0.1.1/lx_dtypes/django/urls.py +26 -0
  168. lx_dtypes-0.1.1/lx_dtypes/django/wsgi.py +16 -0
  169. lx_dtypes-0.1.1/lx_dtypes/django_settings.py +124 -0
  170. lx_dtypes-0.1.1/lx_dtypes/factories/__init__.py +13 -0
  171. lx_dtypes-0.1.1/lx_dtypes/factories/literals.py +11 -0
  172. lx_dtypes-0.1.1/lx_dtypes/factories/models.py +11 -0
  173. lx_dtypes-0.1.1/lx_dtypes/factories/typed_dicts.py +29 -0
  174. lx_dtypes-0.1.1/lx_dtypes/factories/typed_lists.py +12 -0
  175. lx_dtypes-0.1.1/lx_dtypes/factories/uuid.py +23 -0
  176. lx_dtypes-0.1.1/lx_dtypes/models/__init__.py +89 -0
  177. lx_dtypes-0.1.1/lx_dtypes/models/base/__init__.py +12 -0
  178. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/__init__.py +20 -0
  179. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/ddict/AppBaseModelDataDict.py +10 -0
  180. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/ddict/AppBaseModelNamesUUIDTagsDataDict.py +20 -0
  181. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/ddict/AppBaseModelUUIDTagsDataDict.py +19 -0
  182. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/ddict/KnowledgebaseBaseModelDataDict.py +13 -0
  183. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/ddict/LedgerBaseModelDataDict.py +9 -0
  184. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/ddict/PersonDataDict.py +17 -0
  185. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/ddict/__init__.py +38 -0
  186. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/django/AppBaseModelDjango.py +58 -0
  187. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/django/AppBaseModelNamesUUIDTagsDjango.py +45 -0
  188. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/django/AppBaseModelUUIDTagsDjango.py +95 -0
  189. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/django/KnowledgebaseBaseModelDjango.py +176 -0
  190. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/django/LedgerBaseModelDjango.py +231 -0
  191. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/django/PersonDjango.py +49 -0
  192. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/django/__init__.py +3 -0
  193. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/pydantic/AppBaseModel.py +109 -0
  194. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/pydantic/AppBaseModelNamesUUIDTags.py +30 -0
  195. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/pydantic/AppBaseModelUUIDTags.py +16 -0
  196. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/pydantic/KnowledgebaseBaseModel.py +97 -0
  197. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/pydantic/LedgerBaseModel.py +180 -0
  198. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/pydantic/PersonMixIn.py +22 -0
  199. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/pydantic/__init__.py +39 -0
  200. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/test_fixtures/AppBaseModel.py +125 -0
  201. lx_dtypes-0.1.1/lx_dtypes/models/base/app_base_model/test_fixtures/__init__.py +17 -0
  202. lx_dtypes-0.1.1/lx_dtypes/models/base/file/__init__.py +0 -0
  203. lx_dtypes-0.1.1/lx_dtypes/models/base/file/ddict/FilesAndDirsDataDict.py +8 -0
  204. lx_dtypes-0.1.1/lx_dtypes/models/base/file/ddict/__init__.py +18 -0
  205. lx_dtypes-0.1.1/lx_dtypes/models/base/file/pydantic/FilesAndDirs.py +56 -0
  206. lx_dtypes-0.1.1/lx_dtypes/models/base/file/pydantic/PathMixIn.py +49 -0
  207. lx_dtypes-0.1.1/lx_dtypes/models/base/file/pydantic/__init__.py +0 -0
  208. lx_dtypes-0.1.1/lx_dtypes/models/interface/DataLoader.py +155 -0
  209. lx_dtypes-0.1.1/lx_dtypes/models/interface/DbInterface.py +421 -0
  210. lx_dtypes-0.1.1/lx_dtypes/models/interface/KnowledgeBase.py +587 -0
  211. lx_dtypes-0.1.1/lx_dtypes/models/interface/KnowledgeBaseConfig.py +35 -0
  212. lx_dtypes-0.1.1/lx_dtypes/models/interface/Ledger.py +242 -0
  213. lx_dtypes-0.1.1/lx_dtypes/models/interface/__init__.py +0 -0
  214. lx_dtypes-0.1.1/lx_dtypes/models/interface/main.py +0 -0
  215. lx_dtypes-0.1.1/lx_dtypes/models/interface/test_fixtures/__init__.py +93 -0
  216. lx_dtypes-0.1.1/lx_dtypes/models/interface/test_fixtures/dataloader.py +62 -0
  217. lx_dtypes-0.1.1/lx_dtypes/models/interface/test_fixtures/names.py +14 -0
  218. lx_dtypes-0.1.1/lx_dtypes/models/interface/test_fixtures/paths.py +132 -0
  219. lx_dtypes-0.1.1/lx_dtypes/models/interface/test_fixtures/star_upper_gi/__init__.py +0 -0
  220. lx_dtypes-0.1.1/lx_dtypes/models/interface/test_fixtures/star_upper_gi/dataloader.py +54 -0
  221. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/__init__.py +21 -0
  222. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/citation/Citation.py +54 -0
  223. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/citation/CitationDataDict.py +25 -0
  224. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/citation/CitationDjango.py +88 -0
  225. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/citation/__init__.py +41 -0
  226. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/citation/test_fixtures/__init__.py +42 -0
  227. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification/Classification.py +40 -0
  228. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification/ClassificationDataDict.py +10 -0
  229. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification/ClassificationType.py +30 -0
  230. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification/ClassificationTypeDataDict.py +7 -0
  231. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification/_ClassificationDjango.py +53 -0
  232. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification/_ClassificationTypeDjango.py +41 -0
  233. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification/__init__.py +67 -0
  234. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification/test_fixtures/__init__.py +99 -0
  235. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice/ClassificationChoice.py +40 -0
  236. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice/ClassificationChoiceDataDict.py +9 -0
  237. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice/ClassificationChoiceDjango.py +49 -0
  238. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice/__init__.py +43 -0
  239. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice/test_fixtures/__init__.py +64 -0
  240. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice_descriptor/BooleanDescriptorMixin.py +7 -0
  241. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice_descriptor/ClassificationChoiceDescriptor.py +61 -0
  242. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice_descriptor/ClassificationChoiceDescriptorDataDict.py +25 -0
  243. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice_descriptor/ClassificationChoiceDescriptorDjango.py +94 -0
  244. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice_descriptor/DescriptorTypeMixin.py +61 -0
  245. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice_descriptor/NumericDescriptorMixin.py +24 -0
  246. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice_descriptor/SelectionDescriptorMixin.py +17 -0
  247. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice_descriptor/TextDescriptorMixin.py +8 -0
  248. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice_descriptor/UnitMixin.py +7 -0
  249. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice_descriptor/__init__.py +55 -0
  250. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice_descriptor/test_fixtures/ClassificationChoiceDescriptor.py +63 -0
  251. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/classification_choice_descriptor/test_fixtures/__init__.py +9 -0
  252. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/examination/Examination.py +42 -0
  253. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/examination/ExaminationDataDict.py +11 -0
  254. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/examination/ExaminationDjango.py +62 -0
  255. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/examination/ExaminationType.py +31 -0
  256. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/examination/ExaminationTypeDataDict.py +7 -0
  257. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/examination/ExaminationTypeDjango.py +41 -0
  258. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/examination/__init__.py +63 -0
  259. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/examination/test_fixtures/__init__.py +103 -0
  260. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/finding/FindingDataDict.py +11 -0
  261. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/finding/FindingTypeDataDict.py +7 -0
  262. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/finding/_Finding.py +36 -0
  263. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/finding/_FindingDjango.py +64 -0
  264. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/finding/_FindingType.py +31 -0
  265. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/finding/_FindingTypeDjango.py +41 -0
  266. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/finding/__init__.py +63 -0
  267. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/finding/test_fixtures/__init__.py +99 -0
  268. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/indication/Indication.py +37 -0
  269. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/indication/IndicationDataDict.py +10 -0
  270. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/indication/IndicationDjango.py +53 -0
  271. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/indication/IndicationType.py +31 -0
  272. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/indication/IndicationTypeDataDict.py +7 -0
  273. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/indication/IndicationTypeDjango.py +40 -0
  274. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/indication/__init__.py +61 -0
  275. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/indication/test_fixtures/__init__.py +94 -0
  276. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/information_source/InformationSource.py +35 -0
  277. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/information_source/InformationSourceDataDict.py +9 -0
  278. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/information_source/InformationSourceDjango.py +49 -0
  279. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/information_source/InformationSourceType.py +31 -0
  280. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/information_source/InformationSourceTypeDataDict.py +7 -0
  281. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/information_source/InformationSourceTypeDjango.py +44 -0
  282. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/information_source/__init__.py +60 -0
  283. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/intervention/Intervention.py +38 -0
  284. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/intervention/InterventionDataDict.py +9 -0
  285. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/intervention/InterventionDjango.py +51 -0
  286. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/intervention/InterventionType.py +31 -0
  287. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/intervention/InterventionTypeDataDict.py +7 -0
  288. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/intervention/InterventionTypeDjango.py +41 -0
  289. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/intervention/__init__.py +66 -0
  290. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/intervention/test_fixtures/__init__.py +85 -0
  291. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/main.py +244 -0
  292. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/unit/Unit.py +50 -0
  293. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/unit/UnitDataDict.py +8 -0
  294. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/unit/UnitDjango.py +54 -0
  295. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/unit/UnitType.py +27 -0
  296. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/unit/UnitTypeDataDict.py +7 -0
  297. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/unit/UnitTypeDjango.py +38 -0
  298. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/unit/__init__.py +63 -0
  299. lx_dtypes-0.1.1/lx_dtypes/models/knowledge_base/unit/test_fixtures/__init__.py +84 -0
  300. lx_dtypes-0.1.1/lx_dtypes/models/ledger/__init__.py +23 -0
  301. lx_dtypes-0.1.1/lx_dtypes/models/ledger/center/DataDict.py +9 -0
  302. lx_dtypes-0.1.1/lx_dtypes/models/ledger/center/Django.py +67 -0
  303. lx_dtypes-0.1.1/lx_dtypes/models/ledger/center/Pydantic.py +49 -0
  304. lx_dtypes-0.1.1/lx_dtypes/models/ledger/center/__init__.py +43 -0
  305. lx_dtypes-0.1.1/lx_dtypes/models/ledger/center/test_fixtures/__init__.py +71 -0
  306. lx_dtypes-0.1.1/lx_dtypes/models/ledger/examiner/DataDict.py +10 -0
  307. lx_dtypes-0.1.1/lx_dtypes/models/ledger/examiner/Django.py +51 -0
  308. lx_dtypes-0.1.1/lx_dtypes/models/ledger/examiner/Pydantic.py +39 -0
  309. lx_dtypes-0.1.1/lx_dtypes/models/ledger/examiner/__init__.py +41 -0
  310. lx_dtypes-0.1.1/lx_dtypes/models/ledger/examiner/test_fixtures/__init__.py +0 -0
  311. lx_dtypes-0.1.1/lx_dtypes/models/ledger/main.py +242 -0
  312. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_examination/DataDict.py +27 -0
  313. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_examination/Django.py +94 -0
  314. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_examination/Pydantic.py +227 -0
  315. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_examination/__init__.py +41 -0
  316. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_examination/test_fixtures/__init__.py +98 -0
  317. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding/DataDict.py +23 -0
  318. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding/Django.py +82 -0
  319. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding/Pydantic.py +158 -0
  320. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding/__init__.py +40 -0
  321. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding/test_fixtures/__init__.py +95 -0
  322. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding_classification_choice/DataDict.py +22 -0
  323. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding_classification_choice/Django.py +77 -0
  324. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding_classification_choice/Pydantic.py +125 -0
  325. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding_classification_choice/__init__.py +45 -0
  326. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding_classification_choice/test_fixtures/__init__.py +64 -0
  327. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding_classification_choice_descriptor/DataDict.py +11 -0
  328. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding_classification_choice_descriptor/Django.py +60 -0
  329. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding_classification_choice_descriptor/Pydantic.py +31 -0
  330. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding_classification_choice_descriptor/__init__.py +51 -0
  331. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding_classification_choice_descriptor/test_fixtures/__init__.py +37 -0
  332. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding_classifications/DataDict.py +18 -0
  333. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding_classifications/Django.py +56 -0
  334. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding_classifications/Pydantic.py +65 -0
  335. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding_classifications/__init__.py +39 -0
  336. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_finding_classifications/test_fixtures/__init__.py +50 -0
  337. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_indication/DataDict.py +8 -0
  338. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_indication/Django.py +56 -0
  339. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_indication/Pydantic.py +30 -0
  340. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_indication/__init__.py +40 -0
  341. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_indication/test_fixtures/__init__.py +30 -0
  342. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_intervention/DataDict.py +8 -0
  343. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_intervention/Django.py +56 -0
  344. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_intervention/Pydantic.py +30 -0
  345. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_intervention/__init__.py +47 -0
  346. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_intervention/test_fixtures/__init__.py +34 -0
  347. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_interventions/DataDict.py +18 -0
  348. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_interventions/Django.py +48 -0
  349. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_interventions/Pydantic.py +66 -0
  350. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_interventions/__init__.py +47 -0
  351. lx_dtypes-0.1.1/lx_dtypes/models/ledger/p_interventions/test_fixtures/__init__.py +54 -0
  352. lx_dtypes-0.1.1/lx_dtypes/models/ledger/patient/DataDict.py +10 -0
  353. lx_dtypes-0.1.1/lx_dtypes/models/ledger/patient/Django.py +52 -0
  354. lx_dtypes-0.1.1/lx_dtypes/models/ledger/patient/Pydantic.py +29 -0
  355. lx_dtypes-0.1.1/lx_dtypes/models/ledger/patient/__init__.py +47 -0
  356. lx_dtypes-0.1.1/lx_dtypes/models/ledger/patient/test_fixtures/__init__.py +28 -0
  357. lx_dtypes-0.1.1/lx_dtypes/names/__init__.py +316 -0
  358. lx_dtypes-0.1.1/lx_dtypes/names/factories.py +0 -0
  359. lx_dtypes-0.1.1/lx_dtypes/py.typed +0 -0
  360. lx_dtypes-0.1.1/lx_dtypes/serialization/__init__.py +4 -0
  361. lx_dtypes-0.1.1/lx_dtypes/serialization/model_lookup.py +20 -0
  362. lx_dtypes-0.1.1/lx_dtypes/serialization/path.py +15 -0
  363. lx_dtypes-0.1.1/lx_dtypes/serialization/str_list.py +69 -0
  364. lx_dtypes-0.1.1/lx_dtypes/stats/__init__.py +0 -0
  365. lx_dtypes-0.1.1/lx_dtypes/stats/common.py +31 -0
  366. lx_dtypes-0.1.1/lx_dtypes/stats/dataset.py +231 -0
  367. lx_dtypes-0.1.1/lx_dtypes/stats/schemas/__init__.py +0 -0
  368. lx_dtypes-0.1.1/lx_dtypes/stats/schemas/common.py +10 -0
  369. lx_dtypes-0.1.1/lx_dtypes/stats/schemas/knowledge_base.py +137 -0
  370. lx_dtypes-0.1.1/lx_dtypes/stats/schemas/ledger.py +95 -0
  371. lx_dtypes-0.1.1/lx_dtypes/utils/__init__.py +0 -0
  372. lx_dtypes-0.1.1/lx_dtypes/utils/dataframe.py +191 -0
  373. lx_dtypes-0.1.1/lx_dtypes/utils/dataloader.py +59 -0
  374. lx_dtypes-0.1.1/lx_dtypes/utils/ddict_schema.py +12 -0
  375. lx_dtypes-0.1.1/lx_dtypes/utils/django_field_types.py +44 -0
  376. lx_dtypes-0.1.1/lx_dtypes/utils/django_sync.py +111 -0
  377. lx_dtypes-0.1.1/lx_dtypes/utils/parser.py +72 -0
  378. lx_dtypes-0.1.1/lx_dtypes/utils/paths.py +18 -0
  379. lx_dtypes-0.1.1/lx_dtypes/utils/testing.py +29 -0
  380. lx_dtypes-0.1.1/manage.py +22 -0
  381. lx_dtypes-0.1.1/pyproject.toml +175 -0
  382. lx_dtypes-0.1.1/scripts/bib_to_yaml.py +269 -0
  383. lx_dtypes-0.1.1/scripts/cleanup.py +0 -0
  384. lx_dtypes-0.1.1/snippets.py +37 -0
  385. lx_dtypes-0.1.1/templates/model_directory/__init__.py +0 -0
  386. lx_dtypes-0.1.1/templates/model_directory/ddict/__init__.py +0 -0
  387. lx_dtypes-0.1.1/templates/model_directory/django/__init__.py +0 -0
  388. lx_dtypes-0.1.1/templates/model_directory/pydantic/__init__.py +0 -0
  389. lx_dtypes-0.1.1/templates/model_directory/test_fixtures/__init__.py +0 -0
  390. lx_dtypes-0.1.1/uv.lock +2036 -0
@@ -0,0 +1,3 @@
1
+ reviews:
2
+ path_filters:
3
+ - "!**/migrations/**"
lx_dtypes-0.1.1/.envrc ADDED
@@ -0,0 +1,4 @@
1
+ # Fetch hash
2
+ # direnv fetchurl "https://raw.githubusercontent.com/cachix/devenv/v1.11.2/devenv/direnvrc"
3
+ source_url "https://raw.githubusercontent.com/cachix/devenv/v1.11.2/devenv/direnvrc" "sha256-ato6rQhHH/nvLMD8uCnJ8zTD8kxsm15WlfXkMNsICEQ="
4
+ use_devenv
@@ -0,0 +1,18 @@
1
+ coverage:
2
+ status:
3
+ project:
4
+ default:
5
+ informational: true
6
+ target: 90%
7
+ threshold: 10%
8
+ patch:
9
+ default:
10
+ informational: true
11
+
12
+ comment:
13
+ layout: "diff, flags, files"
14
+ behavior: default
15
+ require_changes: true # if true: only post the comment if coverage changes
16
+ require_base: false # [true :: must have a base report to post]
17
+ require_head: true # [true :: must have a head report to post]
18
+ hide_project_coverage: false # [true :: only show coverage on the git diff aka patch coverage]
@@ -0,0 +1,44 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "uv"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+ day: "monday"
8
+ time: "05:00"
9
+ timezone: "Europe/Berlin"
10
+ target-branch: "main"
11
+ open-pull-requests-limit: 1
12
+ labels:
13
+ - "dependencies"
14
+ - "automation"
15
+ groups:
16
+ runtime-deps:
17
+ dependency-type: "production"
18
+ docs-stack:
19
+ patterns:
20
+ - "sphinx*"
21
+ - "myst-parser"
22
+ - "furo"
23
+ - "linkify-it-py"
24
+ qa-tooling:
25
+ patterns:
26
+ - "pytest*"
27
+ - "mypy*"
28
+ - "ruff"
29
+ - "flake8"
30
+ - "twine"
31
+ - "pre-commit"
32
+ - "build"
33
+ - package-ecosystem: "github-actions"
34
+ directory: "/"
35
+ schedule:
36
+ interval: "weekly"
37
+ day: "monday"
38
+ time: "05:00"
39
+ timezone: "Europe/Berlin"
40
+ target-branch: "main"
41
+ open-pull-requests-limit: 1
42
+ labels:
43
+ - "dependencies"
44
+ - "automation"
@@ -0,0 +1,58 @@
1
+ name: Lint and Test
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ - dev
8
+ - prototype
9
+ pull_request:
10
+
11
+ permissions:
12
+ contents: read
13
+
14
+ jobs:
15
+ build:
16
+ name: Python ${{ matrix.python-version }}
17
+ runs-on: ubuntu-latest
18
+ strategy:
19
+ fail-fast: false
20
+ matrix:
21
+ python-version: ["3.12"]
22
+
23
+ steps:
24
+ - uses: actions/checkout@v4
25
+
26
+ - name: Set up Python
27
+ uses: actions/setup-python@v5
28
+ with:
29
+ python-version: ${{ matrix.python-version }}
30
+ cache: pip
31
+
32
+ - name: Install dependencies
33
+ run: |
34
+ python -m pip install --upgrade pip
35
+ pip install .[dev]
36
+
37
+ - name: Ruff lint
38
+ run: ruff check lx_dtypes tests
39
+
40
+ - name: Ruff format check
41
+ run: ruff format --check lx_dtypes tests
42
+
43
+ - name: Type checking
44
+ run: mypy lx_dtypes
45
+
46
+ - name: Run tests
47
+ run: pytest -m "not localfiles" --junitxml=junit.xml -o junit_family=legacy --cov=lx_dtypes --cov-report=xml
48
+
49
+ - name: Upload coverage reports to Codecov
50
+ uses: codecov/codecov-action@v5
51
+ with:
52
+ token: ${{ secrets.CODECOV_TOKEN }}
53
+
54
+ - name: Upload test results to Codecov
55
+ if: ${{ !cancelled() }}
56
+ uses: codecov/test-results-action@v1
57
+ with:
58
+ token: ${{ secrets.CODECOV_TOKEN }}
@@ -0,0 +1,43 @@
1
+ name: Docs
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ build-docs:
14
+ runs-on: ubuntu-latest
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Set up Python
20
+ uses: actions/setup-python@v5
21
+ with:
22
+ python-version: "3.12"
23
+ cache: pip
24
+
25
+ - name: Install documentation extras
26
+ run: |
27
+ python -m pip install --upgrade pip
28
+ pip install .[docs]
29
+
30
+ - name: Build HTML docs
31
+ working-directory: docs
32
+ run: make html
33
+
34
+ - name: Link check
35
+ working-directory: docs
36
+ run: make linkcheck
37
+
38
+ - name: Upload HTML artifact
39
+ uses: actions/upload-artifact@v4
40
+ with:
41
+ name: docs-html
42
+ path: docs/_build/html
43
+ if-no-files-found: error
@@ -0,0 +1,88 @@
1
+ name: Publish
2
+
3
+ on:
4
+ release:
5
+ types:
6
+ - published
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+ id-token: write
12
+
13
+ jobs:
14
+ build-artifacts:
15
+ name: Build sdist and wheel
16
+ runs-on: ubuntu-latest
17
+
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+
21
+ - name: Set up Python
22
+ uses: actions/setup-python@v5
23
+ with:
24
+ python-version: "3.12"
25
+
26
+ - name: Install build toolchain
27
+ run: |
28
+ python -m pip install --upgrade pip
29
+ pip install build twine
30
+
31
+ - name: Build distribution
32
+ run: python -m build
33
+
34
+ - name: Check metadata
35
+ run: twine check dist/*
36
+
37
+ - name: Upload artifact
38
+ uses: actions/upload-artifact@v4
39
+ with:
40
+ name: dist-artifacts
41
+ path: dist
42
+
43
+ publish-testpypi:
44
+ name: Upload to TestPyPI
45
+ needs: build-artifacts
46
+ runs-on: ubuntu-latest
47
+ if: github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags/')
48
+
49
+ environment:
50
+ name: testpypi
51
+
52
+ steps:
53
+ - uses: actions/download-artifact@v5
54
+ with:
55
+ name: dist-artifacts
56
+ path: dist
57
+
58
+ - name: Publish to TestPyPI
59
+ uses: pypa/gh-action-pypi-publish@v1.13.0
60
+ with:
61
+ packages-dir: dist
62
+ repository-url: https://test.pypi.org/legacy/
63
+ # Twine 5.x (bundled with the action) cannot parse Metadata-Version 2.4,
64
+ # so rely on the earlier `twine check` step instead.
65
+ verify-metadata: false
66
+
67
+ publish-pypi:
68
+ name: Upload to PyPI
69
+ needs: publish-testpypi
70
+ runs-on: ubuntu-latest
71
+ if: github.event_name == 'release'
72
+
73
+ environment:
74
+ name: pypi
75
+
76
+ steps:
77
+ - uses: actions/download-artifact@v5
78
+ with:
79
+ name: dist-artifacts
80
+ path: dist
81
+
82
+ - name: Publish to PyPI
83
+ uses: pypa/gh-action-pypi-publish@v1.13.0
84
+ with:
85
+ packages-dir: dist
86
+ # Twine 5.x (bundled with the action) cannot parse Metadata-Version 2.4,
87
+ # so rely on the earlier `twine check` step instead.
88
+ verify-metadata: false
@@ -0,0 +1,223 @@
1
+ # Development
2
+ .devenv/
3
+ .direnv/
4
+ *log.yaml
5
+ junit.xml
6
+ data/smartie
7
+ knowledge_base.yaml
8
+ .devenv.flake.nix
9
+ **/models/**/tests/**.yaml
10
+ star_upper_gi_interface_export_test.yaml
11
+ star_upper_gi_kb_export_test.yaml
12
+ docs_build.tar.gz
13
+
14
+ # Byte-compiled / optimized / DLL files
15
+ __pycache__/
16
+ *.py[codz]
17
+ *$py.class
18
+
19
+ # C extensions
20
+ *.so
21
+
22
+ # Distribution / packaging
23
+ .Python
24
+ build/
25
+ develop-eggs/
26
+ dist/
27
+ downloads/
28
+ eggs/
29
+ .eggs/
30
+ lib/
31
+ lib64/
32
+ parts/
33
+ sdist/
34
+ var/
35
+ wheels/
36
+ share/python-wheels/
37
+ *.egg-info/
38
+ .installed.cfg
39
+ *.egg
40
+ MANIFEST
41
+
42
+ # PyInstaller
43
+ # Usually these files are written by a python script from a template
44
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
45
+ *.manifest
46
+ *.spec
47
+
48
+ # Installer logs
49
+ pip-log.txt
50
+ pip-delete-this-directory.txt
51
+
52
+ # Unit test / coverage reports
53
+ htmlcov/
54
+ .tox/
55
+ .nox/
56
+ .coverage
57
+ .coverage.*
58
+ .cache
59
+ nosetests.xml
60
+ coverage.xml
61
+ *.cover
62
+ *.py.cover
63
+ .hypothesis/
64
+ .pytest_cache/
65
+ cover/
66
+
67
+ # Translations
68
+ *.mo
69
+ *.pot
70
+
71
+ # Django stuff:
72
+ *.log
73
+ local_settings.py
74
+ db.sqlite3
75
+ db.sqlite3-journal
76
+
77
+ # Flask stuff:
78
+ instance/
79
+ .webassets-cache
80
+
81
+ # Scrapy stuff:
82
+ .scrapy
83
+
84
+ # Sphinx documentation
85
+ docs/_build/
86
+
87
+ # PyBuilder
88
+ .pybuilder/
89
+ target/
90
+
91
+ # Jupyter Notebook
92
+ .ipynb_checkpoints
93
+
94
+ # IPython
95
+ profile_default/
96
+ ipython_config.py
97
+
98
+ # pyenv
99
+ # For a library or package, you might want to ignore these files since the code is
100
+ # intended to run in multiple environments; otherwise, check them in:
101
+ # .python-version
102
+
103
+ # pipenv
104
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
105
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
106
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
107
+ # install all needed dependencies.
108
+ #Pipfile.lock
109
+
110
+ # UV
111
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
112
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
113
+ # commonly ignored for libraries.
114
+ #uv.lock
115
+
116
+ # poetry
117
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
118
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
119
+ # commonly ignored for libraries.
120
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
121
+ #poetry.lock
122
+ #poetry.toml
123
+
124
+ # pdm
125
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
126
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
127
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
128
+ #pdm.lock
129
+ #pdm.toml
130
+ .pdm-python
131
+ .pdm-build/
132
+
133
+ # pixi
134
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
135
+ #pixi.lock
136
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
137
+ # in the .venv directory. It is recommended not to include this directory in version control.
138
+ .pixi
139
+
140
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
141
+ __pypackages__/
142
+
143
+ # Celery stuff
144
+ celerybeat-schedule
145
+ celerybeat.pid
146
+
147
+ # SageMath parsed files
148
+ *.sage.py
149
+
150
+ # Environments
151
+ .env
152
+ # .envrc
153
+ .venv
154
+ env/
155
+ venv/
156
+ ENV/
157
+ env.bak/
158
+ venv.bak/
159
+
160
+ # Spyder project settings
161
+ .spyderproject
162
+ .spyproject
163
+
164
+ # Rope project settings
165
+ .ropeproject
166
+
167
+ # mkdocs documentation
168
+ /site
169
+
170
+ # mypy
171
+ .mypy_cache/
172
+ .dmypy.json
173
+ dmypy.json
174
+
175
+ # Pyre type checker
176
+ .pyre/
177
+
178
+ # pytype static type analyzer
179
+ .pytype/
180
+
181
+ # Cython debug symbols
182
+ cython_debug/
183
+
184
+ # PyCharm
185
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
186
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
187
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
188
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
189
+ #.idea/
190
+
191
+ # Abstra
192
+ # Abstra is an AI-powered process automation framework.
193
+ # Ignore directories containing user credentials, local state, and settings.
194
+ # Learn more at https://abstra.io/docs
195
+ .abstra/
196
+
197
+ # Visual Studio Code
198
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
199
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
200
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
201
+ # you could uncomment the following to ignore the entire vscode folder
202
+ # .vscode/
203
+
204
+ # Ruff stuff:
205
+ .ruff_cache/
206
+
207
+ # PyPI configuration file
208
+ .pypirc
209
+
210
+ # Cursor
211
+ # Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
212
+ # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
213
+ # refer to https://docs.cursor.com/context/ignore-files
214
+ .cursorignore
215
+ .cursorindexingignore
216
+
217
+ # Marimo
218
+ marimo/_static/
219
+ marimo/_lsp/
220
+ __marimo__/
221
+ test_interface_export.yaml
222
+
223
+ standardized_dataset/**
@@ -0,0 +1,22 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ rev: v0.14.7
4
+ hooks:
5
+ - id: ruff
6
+ args: ["--fix", "lx_dtypes", "tests"]
7
+ pass_filenames: false
8
+ - id: ruff-format
9
+ args: ["lx_dtypes", "tests"]
10
+ pass_filenames: false
11
+ - repo: local
12
+ hooks:
13
+ - id: mypy
14
+ name: mypy type check
15
+ entry: mypy lx_dtypes
16
+ language: system
17
+ pass_filenames: false
18
+ - id: pytest
19
+ name: pytest suite
20
+ entry: pytest
21
+ language: system
22
+ pass_filenames: false
@@ -0,0 +1 @@
1
+ 3.12
@@ -0,0 +1,17 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+ - Project metadata reshaped for eventual PyPI publication.
12
+ - Development dependency group separated from runtime requirements.
13
+
14
+ ## [0.1.0] - 2025-12-10
15
+
16
+ ### Added
17
+ - Initial public packaging baseline.
@@ -0,0 +1,116 @@
1
+ # Contributing to lx-data-models
2
+
3
+ Thanks for helping improve `lx-dtypes`! This guide describes how to work on the
4
+ project, from setting up your environment to preparing releases.
5
+
6
+ ## Code of Conduct
7
+
8
+ Participation is governed by the [MIT License](LICENSE) and the Lux Group
9
+ community standards. Please be respectful and constructive in all interactions.
10
+
11
+ ## Getting Started
12
+
13
+ 1. **Fork & Clone**
14
+ ```bash
15
+ git clone https://github.com/<your-username>/lx-data-models.git
16
+ cd lx-data-models
17
+ git remote add upstream https://github.com/wg-lux/lx-data-models.git
18
+ ```
19
+ 2. **Create a Virtual Environment** (Python 3.12 only)
20
+ ```bash
21
+ python -m venv .venv
22
+ source .venv/bin/activate
23
+ ```
24
+ 3. **Install Dependencies**
25
+ ```bash
26
+ pip install -e ".[dev]"
27
+ ```
28
+ 4. **Keep Your Branch Updated**
29
+ ```bash
30
+ git fetch upstream
31
+ git rebase upstream/main
32
+ ```
33
+
34
+ ## Development Workflow
35
+
36
+ - **Coding style**: Use `ruff format` (or `black`) and `ruff check`. Configure
37
+ IDEs to enforce 88-character lines.
38
+ - **Static typing**: Run `mypy lx_dtypes` before submitting.
39
+ - **Testing**: All changes must pass `pytest` with coverage ≥70% (configured via
40
+ `pyproject.toml`).
41
+ - **Docs**: If you change APIs or behavior, update the Sphinx docs in `docs/`
42
+ and relevant docstrings. Always rebuild locally before opening a PR.
43
+ - **Commits**: Keep commits focused. Use descriptive titles (optionally
44
+ Conventional Commits). Reference issues/PRs when applicable.
45
+
46
+ ## Pre-commit Hooks (optional but recommended)
47
+
48
+ ```bash
49
+ pip install pre-commit
50
+ pre-commit install
51
+ pre-commit run --all-files
52
+ ```
53
+
54
+ The provided configuration runs the same commands as CI, but with local
55
+ auto-fix for lint/format issues: `ruff --fix lx_dtypes tests`, `ruff format
56
+ lx_dtypes tests`, `mypy lx_dtypes`, and the full `pytest` suite. Because the
57
+ hooks run against the whole repository (`pass_filenames: false`), a passing
58
+ local run guarantees that CI will agree.
59
+
60
+ ## Documentation Workflow
61
+
62
+ 1. Install the documentation extras (already included in `.[dev]`):
63
+ ```bash
64
+ pip install -e ".[docs]"
65
+ ```
66
+ 2. Build the HTML site and verify links:
67
+ ```bash
68
+ make -C docs html
69
+ make -C docs linkcheck
70
+ ```
71
+ 3. Commit any updated Markdown/HTML assets under `docs/_build` **only** when
72
+ publishing to GitHub Pages; otherwise keep build artifacts out of the repo.
73
+
74
+ ## Submitting Changes
75
+
76
+ 1. Ensure lint, type-checks, and tests pass:
77
+ ```bash
78
+ ruff check lx_dtypes tests
79
+ mypy lx_dtypes
80
+ pytest
81
+ ```
82
+ 2. Update `CHANGELOG.md` under `Unreleased`.
83
+ 3. Push your branch and open a pull request against `wg-lux:main`.
84
+ 4. Fill out the PR template describing motivation, changes, and testing.
85
+ 5. Address review feedback promptly; stay responsive until merge.
86
+
87
+ ## Release Checklist
88
+
89
+ 1. Confirm `CHANGELOG.md` lists the new version and highlights key changes.
90
+ 2. Bump the version in `pyproject.toml` (and ensure `lx_dtypes.__version__`
91
+ reflects it).
92
+ 3. Tag the release (`git tag vX.Y.Z && git push origin vX.Y.Z`).
93
+ 4. Build artifacts and upload:
94
+ ```bash
95
+ rm -rf dist
96
+ python -m build
97
+ twine check dist/*
98
+ twine upload --repository testpypi dist/*
99
+ twine upload dist/*
100
+ ```
101
+ 5. Alternatively, trigger the `Publish` GitHub Action (release event or manual
102
+ dispatch) once Trusted Publishers are configured for TestPyPI/PyPI and the
103
+ `testpypi`/`pypi` environments are approved. The workflow builds packages,
104
+ uploads to TestPyPI, then PyPI for tagged releases—no API tokens required.
105
+ 6. Announce in the relevant channels and update documentation badges.
106
+
107
+ ## Specific Guides
108
+ ### Importer
109
+ Based on the example in `lx_dtypes/importer/smartie`, you can create import modules for your own datasets. When requesting a pull request to add a new importer, please ensure that:
110
+ - mock data or data samples are included for testing purposes under `tests/data/your_importer_name/`
111
+ - appropriate tests are added under `tests/importer/test_your_importer_name.py`
112
+
113
+ ## Need Help?
114
+
115
+ Open a discussion or issue on GitHub, or reach out to the maintainers listed in
116
+ `pyproject.toml`. Happy modeling!
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 AG-Lux
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.