liminal-orm 4.0.1__tar.gz → 4.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/PKG-INFO +1 -1
  2. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/cli/__pycache__/cli.cpython-310.pyc +0 -0
  3. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/cli/cli.py +7 -7
  4. liminal_orm-4.1.0/liminal/connection/__pycache__/benchling_service.cpython-310.pyc +0 -0
  5. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/connection/benchling_service.py +19 -15
  6. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/entity_schemas/__pycache__/utils.cpython-310.pyc +0 -0
  7. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/entity_schemas/utils.py +1 -1
  8. liminal_orm-4.1.0/liminal/enums/__pycache__/benchling_api_field_type.cpython-310.pyc +0 -0
  9. liminal_orm-4.1.0/liminal/enums/__pycache__/benchling_field_type.cpython-310.pyc +0 -0
  10. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/benchling_api_field_type.py +2 -0
  11. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/benchling_field_type.py +2 -0
  12. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/mappers.py +9 -1
  13. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/pyproject.toml +1 -1
  14. liminal_orm-4.0.1/liminal/connection/__pycache__/benchling_service.cpython-310.pyc +0 -0
  15. liminal_orm-4.0.1/liminal/enums/__pycache__/benchling_api_field_type.cpython-310.pyc +0 -0
  16. liminal_orm-4.0.1/liminal/enums/__pycache__/benchling_field_type.cpython-310.pyc +0 -0
  17. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/LICENSE.md +0 -0
  18. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/README.md +0 -0
  19. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/.DS_Store +0 -0
  20. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/__init__.py +0 -0
  21. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/__init__.cpython-310.pyc +0 -0
  22. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/base.cpython-310.pyc +0 -0
  23. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/base_dropdown.cpython-310.pyc +0 -0
  24. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/base_operation.cpython-310.pyc +0 -0
  25. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/base_validation_filters.cpython-310.pyc +0 -0
  26. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/benchling_base_model.cpython-310.pyc +0 -0
  27. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/benchling_column.cpython-310.pyc +0 -0
  28. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/benchling_dropdown.cpython-310.pyc +0 -0
  29. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/benchling_field_properties.cpython-310.pyc +0 -0
  30. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/benchling_schema_properties.cpython-310.pyc +0 -0
  31. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/callable_operation.cpython-310.pyc +0 -0
  32. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/column.cpython-310.pyc +0 -0
  33. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/compare_operation.cpython-310.pyc +0 -0
  34. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/field_properties.cpython-310.pyc +0 -0
  35. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/name_template_components.cpython-310.pyc +0 -0
  36. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/name_template_parts.cpython-310.pyc +0 -0
  37. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/schema_properties.cpython-310.pyc +0 -0
  38. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/str_enum.cpython-310.pyc +0 -0
  39. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/unset.cpython-310.pyc +0 -0
  40. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/__pycache__/user.cpython-310.pyc +0 -0
  41. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/base_dropdown.py +0 -0
  42. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/base_operation.py +0 -0
  43. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/base_validation_filters.py +0 -0
  44. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/compare_operation.py +0 -0
  45. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/name_template_parts.py +0 -0
  46. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/properties/__pycache__/NoDropdown.cpython-310.pyc +0 -0
  47. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/properties/__pycache__/__init__.cpython-310.pyc +0 -0
  48. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/properties/__pycache__/base_field_properties.cpython-310.pyc +0 -0
  49. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/properties/__pycache__/base_name_template.cpython-310.pyc +0 -0
  50. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/properties/__pycache__/base_schema_properties.cpython-310.pyc +0 -0
  51. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/properties/__pycache__/field_properties.cpython-310.pyc +0 -0
  52. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/properties/__pycache__/schema_properties.cpython-310.pyc +0 -0
  53. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/properties/base_field_properties.py +0 -0
  54. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/properties/base_name_template.py +0 -0
  55. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/properties/base_schema_properties.py +0 -0
  56. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/base/str_enum.py +0 -0
  57. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/cli/__pycache__/controller.cpython-310.pyc +0 -0
  58. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/cli/__pycache__/live_test_dropdown_migration.cpython-310.pyc +0 -0
  59. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/cli/__pycache__/live_test_entity_schema_migration.cpython-310.pyc +0 -0
  60. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/cli/__pycache__/utils.cpython-310.pyc +0 -0
  61. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/cli/controller.py +0 -0
  62. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/cli/live_test_dropdown_migration.py +0 -0
  63. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/cli/live_test_entity_schema_migration.py +0 -0
  64. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/cli/utils.py +0 -0
  65. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/connection/__init__.py +0 -0
  66. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/connection/__pycache__/__init__.cpython-310.pyc +0 -0
  67. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/connection/__pycache__/benchling_connection.cpython-310.pyc +0 -0
  68. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/connection/benchling_connection.py +0 -0
  69. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/dropdowns/__pycache__/api.cpython-310.pyc +0 -0
  70. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/dropdowns/__pycache__/compare.cpython-310.pyc +0 -0
  71. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/dropdowns/__pycache__/generate_files.cpython-310.pyc +0 -0
  72. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/dropdowns/__pycache__/operations.cpython-310.pyc +0 -0
  73. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/dropdowns/__pycache__/utils.cpython-310.pyc +0 -0
  74. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/dropdowns/api.py +0 -0
  75. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/dropdowns/compare.py +0 -0
  76. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/dropdowns/generate_files.py +0 -0
  77. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/dropdowns/operations.py +0 -0
  78. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/dropdowns/utils.py +0 -0
  79. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/entity_schemas/__pycache__/api.cpython-310.pyc +0 -0
  80. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/entity_schemas/__pycache__/compare.cpython-310.pyc +0 -0
  81. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/entity_schemas/__pycache__/entity_schema_models.cpython-310.pyc +0 -0
  82. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/entity_schemas/__pycache__/generate_files.cpython-310.pyc +0 -0
  83. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/entity_schemas/__pycache__/operations.cpython-310.pyc +0 -0
  84. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/entity_schemas/__pycache__/schemas.cpython-310.pyc +0 -0
  85. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/entity_schemas/__pycache__/tag_schema_models.cpython-310.pyc +0 -0
  86. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/entity_schemas/api.py +0 -0
  87. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/entity_schemas/compare.py +0 -0
  88. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/entity_schemas/entity_schema_models.py +0 -0
  89. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/entity_schemas/generate_files.py +0 -0
  90. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/entity_schemas/operations.py +0 -0
  91. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/entity_schemas/tag_schema_models.py +0 -0
  92. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/__init__.py +0 -0
  93. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/__pycache__/__init__.cpython-310.pyc +0 -0
  94. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/__pycache__/benchling_dropdown.cpython-310.pyc +0 -0
  95. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/__pycache__/benchling_entity_type.cpython-310.pyc +0 -0
  96. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/__pycache__/benchling_enum.cpython-310.pyc +0 -0
  97. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/__pycache__/benchling_field_api_type.cpython-310.pyc +0 -0
  98. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/__pycache__/benchling_folder_item_type.cpython-310.pyc +0 -0
  99. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/__pycache__/benchling_naming_strategy.cpython-310.pyc +0 -0
  100. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/__pycache__/benchling_report_level.cpython-310.pyc +0 -0
  101. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/__pycache__/benchling_sequence_type.cpython-310.pyc +0 -0
  102. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/__pycache__/name_template_part_type.cpython-310.pyc +0 -0
  103. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/__pycache__/sequence_constraint.cpython-310.pyc +0 -0
  104. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/__pycache__/sequence_constraints.cpython-310.pyc +0 -0
  105. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/__pycache__/str_enum.cpython-310.pyc +0 -0
  106. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/__pycache__/undefined.cpython-310.pyc +0 -0
  107. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/benchling_entity_type.py +0 -0
  108. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/benchling_folder_item_type.py +0 -0
  109. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/benchling_naming_strategy.py +0 -0
  110. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/benchling_sequence_type.py +0 -0
  111. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/name_template_part_type.py +0 -0
  112. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/enums/sequence_constraint.py +0 -0
  113. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/external/__init__.py +0 -0
  114. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/external/__pycache__/__init__.cpython-310.pyc +0 -0
  115. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/migrate/__pycache__/components.cpython-310.pyc +0 -0
  116. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/migrate/__pycache__/revision.cpython-310.pyc +0 -0
  117. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/migrate/__pycache__/revisions_timeline.cpython-310.pyc +0 -0
  118. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/migrate/__pycache__/utils.cpython-310.pyc +0 -0
  119. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/migrate/components.py +0 -0
  120. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/migrate/revision.py +0 -0
  121. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/migrate/revisions_timeline.py +0 -0
  122. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/__pycache__/__init__.cpython-310.pyc +0 -0
  123. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/__pycache__/base.cpython-310.pyc +0 -0
  124. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/__pycache__/base_model.cpython-310.pyc +0 -0
  125. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/__pycache__/base_results_model.cpython-310.pyc +0 -0
  126. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/__pycache__/base_results_schema_model.cpython-310.pyc +0 -0
  127. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/__pycache__/column.cpython-310.pyc +0 -0
  128. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/__pycache__/mixins.cpython-310.pyc +0 -0
  129. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/__pycache__/name_template.cpython-310.pyc +0 -0
  130. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/__pycache__/name_template_parts.cpython-310.pyc +0 -0
  131. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/__pycache__/relationship.cpython-310.pyc +0 -0
  132. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/__pycache__/results_schema_properties.cpython-310.pyc +0 -0
  133. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/__pycache__/schema_properties.cpython-310.pyc +0 -0
  134. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/__pycache__/user.cpython-310.pyc +0 -0
  135. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/base.py +0 -0
  136. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/base_model.py +0 -0
  137. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/base_results_model.py +0 -0
  138. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/base_tables/__pycache__/__init__.cpython-310.pyc +0 -0
  139. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/base_tables/__pycache__/registry_entity.cpython-310.pyc +0 -0
  140. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/base_tables/__pycache__/schema.cpython-310.pyc +0 -0
  141. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/base_tables/__pycache__/user.cpython-310.pyc +0 -0
  142. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/base_tables/registry_entity.py +0 -0
  143. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/base_tables/schema.py +0 -0
  144. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/base_tables/user.py +0 -0
  145. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/column.py +0 -0
  146. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/mixins.py +0 -0
  147. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/name_template.py +0 -0
  148. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/name_template_parts.py +0 -0
  149. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/relationship.py +0 -0
  150. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/results_schema_properties.py +0 -0
  151. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/orm/schema_properties.py +0 -0
  152. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/py.typed +0 -0
  153. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/results_schemas/__pycache__/generate_files.cpython-310.pyc +0 -0
  154. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/results_schemas/__pycache__/utils.cpython-310.pyc +0 -0
  155. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/results_schemas/generate_files.py +0 -0
  156. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/results_schemas/models/__pycache__/results_schema_model.cpython-310.pyc +0 -0
  157. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/results_schemas/models/results_schema_model.py +0 -0
  158. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/results_schemas/utils.py +0 -0
  159. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/tests/.DS_Store +0 -0
  160. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/tests/__init__.py +0 -0
  161. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/tests/__pycache__/__init__.cpython-310.pyc +0 -0
  162. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/tests/__pycache__/conftest.cpython-310-pytest-8.3.3.pyc +0 -0
  163. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/tests/__pycache__/test_dropdown_compare.cpython-310-pytest-8.3.3.pyc +0 -0
  164. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/tests/__pycache__/test_entity_schema_compare.cpython-310-pytest-8.3.3.pyc +0 -0
  165. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/tests/conftest.py +0 -0
  166. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/tests/from benchling_sdk.py +0 -0
  167. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/tests/test_dropdown_compare.py +0 -0
  168. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/tests/test_entity_schema_compare.py +0 -0
  169. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/unit_dictionary/__pycache__/utils.cpython-310.pyc +0 -0
  170. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/unit_dictionary/utils.py +0 -0
  171. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/utils.py +0 -0
  172. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/validation/__init__.py +0 -0
  173. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/validation/__pycache__/__init__.cpython-310.pyc +0 -0
  174. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/validation/__pycache__/validation_report_level.cpython-310.pyc +0 -0
  175. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/validation/__pycache__/validation_severity.cpython-310.pyc +0 -0
  176. {liminal_orm-4.0.1 → liminal_orm-4.1.0}/liminal/validation/validation_severity.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: liminal-orm
3
- Version: 4.0.1
3
+ Version: 4.1.0
4
4
  Summary: An ORM and toolkit that builds on top of Benchling's platform to keep your schemas and downstream code dependencies in sync.
5
5
  Home-page: https://github.com/dynotx/liminal-orm
6
6
  Author: DynoTx Open Source
@@ -141,7 +141,7 @@ def generate_files(
141
141
 
142
142
  @app.command(
143
143
  name="current",
144
- help="Returns the remote revision_id that your Benchling tenant is currently on. Reads this from the name on the '_liminal_remote' schema.",
144
+ help="Returns the remote revision_id that your Benchling tenant is currently on. Reads this from the name on the 'liminal_remote' schema.",
145
145
  )
146
146
  def current(
147
147
  benchling_tenant: str = typer.Argument(
@@ -156,7 +156,7 @@ def current(
156
156
  remote_revision_id = benchling_service.get_remote_revision_id()
157
157
  if current_revision_id is not None:
158
158
  warnings.warn(
159
- f"Accessing and using the revision_id variable in {LIMINAL_DIR_PATH/'env.py'} is deprecated. Delete the variable set in the env.py file, the revision_id is now stored in your Benchling tenant within the '_liminal_remote' schema. Support for reading/writing the local revision_id will end with the v5 release.",
159
+ f"Accessing and using the revision_id variable in {LIMINAL_DIR_PATH/'env.py'} is deprecated. Delete the variable set in the env.py file, the revision_id is now stored in your Benchling tenant within the 'liminal_remote' schema. Support for reading/writing the local revision_id will end with the v5 release.",
160
160
  FutureWarning,
161
161
  )
162
162
  current_revision_id = remote_revision_id
@@ -200,7 +200,7 @@ def revision(
200
200
  remote_revision_id = benchling_service.get_remote_revision_id()
201
201
  if current_revision_id is not None:
202
202
  warnings.warn(
203
- f"Accessing and using the revision_id variable in {LIMINAL_DIR_PATH/'env.py'} is deprecated. Delete the variable set in the env.py file, the revision_id is now stored in your Benchling tenant within the '_liminal_remote' schema. Support for reading/writing the local revision_id will end with the v5 release.",
203
+ f"Accessing and using the revision_id variable in {LIMINAL_DIR_PATH/'env.py'} is deprecated. Delete the variable set in the env.py file, the revision_id is now stored in your Benchling tenant within the 'liminal_remote' schema. Support for reading/writing the local revision_id will end with the v5 release.",
204
204
  FutureWarning,
205
205
  )
206
206
  current_revision_id = remote_revision_id
@@ -256,7 +256,7 @@ def upgrade(
256
256
  remote_revision_id = benchling_service.get_remote_revision_id()
257
257
  if current_revision_id is not None:
258
258
  warnings.warn(
259
- f"Accessing and using the revision_id variable in {LIMINAL_DIR_PATH/'env.py'} is deprecated. Delete the variable set in the env.py file, the revision_id is now stored in your Benchling tenant within the '_liminal_remote' schema. Support for reading/writing the local revision_id will end with the v5 release.",
259
+ f"Accessing and using the revision_id variable in {LIMINAL_DIR_PATH/'env.py'} is deprecated. Delete the variable set in the env.py file, the revision_id is now stored in your Benchling tenant within the 'liminal_remote' schema. Support for reading/writing the local revision_id will end with the v5 release.",
260
260
  FutureWarning,
261
261
  )
262
262
  current_revision_id = remote_revision_id
@@ -272,7 +272,7 @@ def upgrade(
272
272
  f"[dim red]Set local {benchling_tenant}_CURRENT_REVISION_ID to {upgrade_revision_id} in liminal/env.py"
273
273
  )
274
274
  print(
275
- f"[dim]Set revision_id to {upgrade_revision_id} withinn '_liminal_remote' schema."
275
+ f"[dim]Set revision_id to {upgrade_revision_id} within 'liminal_remote' schema."
276
276
  )
277
277
  print("[bold green]Migration complete")
278
278
 
@@ -300,7 +300,7 @@ def downgrade(
300
300
  remote_revision_id = benchling_service.get_remote_revision_id()
301
301
  if current_revision_id is not None:
302
302
  warnings.warn(
303
- f"Accessing and using the revision_id variable in {LIMINAL_DIR_PATH/'env.py'} is deprecated. Delete the variable set in the env.py file, the revision_id is now stored in your Benchling tenant within the '_liminal_remote' schema. Support for reading/writing the local revision_id will end with the v5 release.",
303
+ f"Accessing and using the revision_id variable in {LIMINAL_DIR_PATH/'env.py'} is deprecated. Delete the variable set in the env.py file, the revision_id is now stored in your Benchling tenant within the 'liminal_remote' schema. Support for reading/writing the local revision_id will end with the v5 release.",
304
304
  FutureWarning,
305
305
  )
306
306
  current_revision_id = remote_revision_id
@@ -316,7 +316,7 @@ def downgrade(
316
316
  f"[dim red]Set local {benchling_tenant}_CURRENT_REVISION_ID to {downgrade_revision_id} in liminal/env.py"
317
317
  )
318
318
  print(
319
- f"[dim]Set revision_id to {downgrade_revision_id} withinn '_liminal_remote' schema."
319
+ f"[dim]Set revision_id to {downgrade_revision_id} within 'liminal_remote' schema."
320
320
  )
321
321
  print("[bold green]Migration complete")
322
322
 
@@ -25,10 +25,10 @@ from liminal.enums import (
25
25
  BenchlingNamingStrategy,
26
26
  )
27
27
 
28
- logger = logging.getLogger(__name__)
28
+ LOGGER = logging.getLogger(__name__)
29
29
  logging.getLogger("httpx").setLevel(logging.WARNING)
30
30
 
31
- REMOTE_LIMINAL_SCHEMA_NAME = "_liminal_remote"
31
+ REMOTE_LIMINAL_SCHEMA_NAME = "liminal_remote"
32
32
  REMOTE_REVISION_ID_FIELD_WH_NAME = "revision_id"
33
33
 
34
34
 
@@ -71,7 +71,7 @@ class BenchlingService(Benchling):
71
71
  super().__init__(
72
72
  url=url, auth_method=auth_method, retry_strategy=retry_strategy
73
73
  )
74
- logger.info(f"Tenant {connection.tenant_name}: Connected to Benchling API.")
74
+ LOGGER.info(f"Tenant {connection.tenant_name}: Connected to Benchling API.")
75
75
  self.use_db = use_db
76
76
  if use_db:
77
77
  if connection.warehouse_connection_string:
@@ -79,7 +79,7 @@ class BenchlingService(Benchling):
79
79
  connection.warehouse_connection_string
80
80
  )
81
81
  configure_mappers()
82
- logger.info(
82
+ LOGGER.info(
83
83
  f"Tenant {connection.tenant_name}: Connected to Benchling read-only Postgres warehouse."
84
84
  )
85
85
  else:
@@ -105,7 +105,7 @@ class BenchlingService(Benchling):
105
105
  "Referer": f"https://{connection.tenant_name}.benchling.com/",
106
106
  "Content-Type": "application/json",
107
107
  }
108
- logger.info(
108
+ LOGGER.info(
109
109
  f"Tenant {connection.tenant_name}: Connected to Benchling internal API."
110
110
  )
111
111
  else:
@@ -151,7 +151,7 @@ class BenchlingService(Benchling):
151
151
 
152
152
  def get_remote_revision_id(self) -> str:
153
153
  """
154
- Uses internal API to to search for the _liminal_remote schema, where the revision_id is stored.
154
+ Uses internal API to to search for the liminal_remote schema, where the revision_id is stored.
155
155
  This schema contains the remote revision_id in the name of the revision_id field.
156
156
 
157
157
  Returns the remote revision_id stored on the entity.
@@ -180,8 +180,8 @@ class BenchlingService(Benchling):
180
180
 
181
181
  def upsert_remote_revision_id(self, revision_id: str) -> None:
182
182
  """Updates or inserts a remote Liminal schema into your tenant with the given revision_id stored in the name of a field.
183
- If the '_liminal_remote' schema is found, check and make sure a field with warehouse_name 'revision_id' is present. If both are present, update the revision_id stored within the name.
184
- If no schema is found, create the _liminal_remote entity schema.
183
+ If the 'liminal_remote' schema is found, check and make sure a field with warehouse_name 'revision_id' is present. If both are present, update the revision_id stored within the name.
184
+ If no schema is found, create the liminal_remote entity schema.
185
185
  Upsert is needed to migrate users from using the CURRENT_REVISION_ID stored in the env.py file smoothly to storing in Benchling itself.
186
186
 
187
187
  Parameters
@@ -199,20 +199,20 @@ class BenchlingService(Benchling):
199
199
  try:
200
200
  liminal_schema = TagSchemaModel.get_one(self, REMOTE_LIMINAL_SCHEMA_NAME)
201
201
  except Exception:
202
- # No _liminal_remote schema found. Create schema.
202
+ # No liminal_remote schema found. Create schema.
203
203
  from liminal.entity_schemas.operations import CreateEntitySchema
204
204
 
205
205
  CreateEntitySchema(
206
206
  schema_properties=BaseSchemaProperties(
207
- name={REMOTE_LIMINAL_SCHEMA_NAME},
208
- warehouse_name={REMOTE_LIMINAL_SCHEMA_NAME},
209
- prefix={REMOTE_LIMINAL_SCHEMA_NAME},
207
+ name=REMOTE_LIMINAL_SCHEMA_NAME,
208
+ warehouse_name=REMOTE_LIMINAL_SCHEMA_NAME,
209
+ prefix=REMOTE_LIMINAL_SCHEMA_NAME,
210
210
  entity_type=BenchlingEntityType.CUSTOM_ENTITY,
211
211
  naming_strategies={BenchlingNamingStrategy.NEW_IDS},
212
212
  ),
213
213
  fields=[
214
214
  BaseFieldProperties(
215
- name={revision_id},
215
+ name=revision_id,
216
216
  warehouse_name=REMOTE_REVISION_ID_FIELD_WH_NAME,
217
217
  type=BenchlingFieldType.TEXT,
218
218
  parent_link=False,
@@ -221,14 +221,18 @@ class BenchlingService(Benchling):
221
221
  )
222
222
  ],
223
223
  ).execute(self)
224
- # _liminal_remote schema found. Check if revision_id field exists on it.
224
+ LOGGER.warning(
225
+ f"Created {REMOTE_LIMINAL_SCHEMA_NAME} schema for tracking the remote revision id. Please delete the revision_id variable tracked in your env.py to complete the migration to tracking the tenant revision_id in Benchling instead of locally."
226
+ )
227
+ return
228
+ # liminal_remote schema found. Check if revision_id field exists on it.
225
229
  revision_id_fields = [
226
230
  f
227
231
  for f in liminal_schema.fields
228
232
  if f.systemName == REMOTE_REVISION_ID_FIELD_WH_NAME
229
233
  ]
230
234
  if len(revision_id_fields) == 1:
231
- # _liminal_remote schema found, revision_id field found. Update revision_id field on it with given revision_id.
235
+ # liminal_remote schema found, revision_id field found. Update revision_id field on it with given revision_id.
232
236
  from liminal.entity_schemas.operations import UpdateEntitySchemaField
233
237
 
234
238
  revision_id_field = revision_id_fields[0]
@@ -33,7 +33,7 @@ def get_converted_tag_schemas(
33
33
  if include_archived
34
34
  else [s for s in all_schemas if not s.archiveRecord]
35
35
  )
36
- all_schemas = [s for s in all_schemas if s.sqlIdentifier != "_liminal_remote"]
36
+ all_schemas = [s for s in all_schemas if s.sqlIdentifier != "liminal_remote"]
37
37
  return [
38
38
  convert_tag_schema_to_internal_schema(
39
39
  tag_schema, dropdowns_map, unit_id_to_name_map, include_archived
@@ -18,3 +18,5 @@ class BenchlingAPIFieldType(StrEnum):
18
18
  SELECTOR = "ft_selector"
19
19
  STORABLE_LINK = "ft_storable_link"
20
20
  STRING = "ft_string"
21
+ JSON = "ft_json"
22
+ BOOLEAN = "ft_boolean"
@@ -21,6 +21,8 @@ class BenchlingFieldType(StrEnum):
21
21
  MIXTURE_LINK = "mixture_link"
22
22
  STORAGE_LINK = "storage_link"
23
23
  TEXT = "text"
24
+ JSON = "json"
25
+ BOOLEAN = "boolean"
24
26
 
25
27
  @classmethod
26
28
  def get_non_multi_select_types(cls) -> list[str]:
@@ -1,7 +1,7 @@
1
1
  from datetime import datetime
2
2
  from typing import Any
3
3
 
4
- from sqlalchemy import JSON, DateTime, Float, Integer, String
4
+ from sqlalchemy import JSON, DateTime, Float, Integer, String, Boolean
5
5
  from sqlalchemy.sql.type_api import TypeEngine
6
6
 
7
7
  from liminal.enums import (
@@ -32,6 +32,8 @@ def convert_benchling_type_to_python_type(benchling_type: BenchlingFieldType) ->
32
32
  BenchlingFieldType.STORAGE_LINK: str,
33
33
  BenchlingFieldType.PART_LINK: str,
34
34
  BenchlingFieldType.TEXT: str,
35
+ BenchlingFieldType.JSON: dict[str, Any],
36
+ BenchlingFieldType.BOOLEAN: bool,
35
37
  }
36
38
  if benchling_type in benchling_to_python_type_map:
37
39
  return benchling_to_python_type_map[benchling_type]
@@ -60,6 +62,8 @@ def convert_benchling_type_to_sql_alchemy_type(
60
62
  BenchlingFieldType.PART_LINK: String,
61
63
  BenchlingFieldType.MIXTURE_LINK: String,
62
64
  BenchlingFieldType.TEXT: String,
65
+ BenchlingFieldType.JSON: JSON,
66
+ BenchlingFieldType.BOOLEAN: Boolean,
63
67
  }
64
68
  if benchling_type in benchling_to_sql_alchemy_type_map:
65
69
  return benchling_to_sql_alchemy_type_map[benchling_type]
@@ -103,6 +107,8 @@ def convert_field_type_to_api_field_type(
103
107
  BenchlingFieldType.DROPDOWN: (BenchlingAPIFieldType.SELECTOR, None),
104
108
  BenchlingFieldType.STORAGE_LINK: (BenchlingAPIFieldType.STORABLE_LINK, None),
105
109
  BenchlingFieldType.TEXT: (BenchlingAPIFieldType.STRING, None),
110
+ BenchlingFieldType.JSON: (BenchlingAPIFieldType.JSON, None),
111
+ BenchlingFieldType.BOOLEAN: (BenchlingAPIFieldType.BOOLEAN, None),
106
112
  }
107
113
  if field_type in conversion_map:
108
114
  return conversion_map[field_type]
@@ -147,6 +153,8 @@ def convert_api_field_type_to_field_type(
147
153
  (BenchlingAPIFieldType.SELECTOR, None): BenchlingFieldType.DROPDOWN,
148
154
  (BenchlingAPIFieldType.STORABLE_LINK, None): BenchlingFieldType.STORAGE_LINK,
149
155
  (BenchlingAPIFieldType.STRING, None): BenchlingFieldType.TEXT,
156
+ (BenchlingAPIFieldType.JSON, None): BenchlingFieldType.JSON,
157
+ (BenchlingAPIFieldType.BOOLEAN, None): BenchlingFieldType.BOOLEAN,
150
158
  }
151
159
  if (field_type, folder_item_type) in conversion_map:
152
160
  return conversion_map[(field_type, folder_item_type)]
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "liminal-orm"
3
- version = "4.0.1"
3
+ version = "4.1.0"
4
4
  description = "An ORM and toolkit that builds on top of Benchling's platform to keep your schemas and downstream code dependencies in sync."
5
5
  authors = ["DynoTx Open Source <opensource@dynotx.com>"]
6
6
  readme = "README.md"
File without changes
File without changes