liminal-orm 4.0.0__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 (173) hide show
  1. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/PKG-INFO +1 -1
  2. liminal_orm-4.1.0/liminal/.DS_Store +0 -0
  3. liminal_orm-4.1.0/liminal/base/__pycache__/__init__.cpython-310.pyc +0 -0
  4. liminal_orm-4.1.0/liminal/base/__pycache__/base.cpython-310.pyc +0 -0
  5. liminal_orm-4.1.0/liminal/base/__pycache__/base_dropdown.cpython-310.pyc +0 -0
  6. liminal_orm-4.1.0/liminal/base/__pycache__/base_operation.cpython-310.pyc +0 -0
  7. liminal_orm-4.1.0/liminal/base/__pycache__/base_validation_filters.cpython-310.pyc +0 -0
  8. liminal_orm-4.1.0/liminal/base/__pycache__/benchling_base_model.cpython-310.pyc +0 -0
  9. liminal_orm-4.1.0/liminal/base/__pycache__/benchling_column.cpython-310.pyc +0 -0
  10. liminal_orm-4.1.0/liminal/base/__pycache__/benchling_dropdown.cpython-310.pyc +0 -0
  11. liminal_orm-4.1.0/liminal/base/__pycache__/benchling_field_properties.cpython-310.pyc +0 -0
  12. liminal_orm-4.1.0/liminal/base/__pycache__/benchling_schema_properties.cpython-310.pyc +0 -0
  13. liminal_orm-4.1.0/liminal/base/__pycache__/callable_operation.cpython-310.pyc +0 -0
  14. liminal_orm-4.1.0/liminal/base/__pycache__/column.cpython-310.pyc +0 -0
  15. liminal_orm-4.1.0/liminal/base/__pycache__/compare_operation.cpython-310.pyc +0 -0
  16. liminal_orm-4.1.0/liminal/base/__pycache__/field_properties.cpython-310.pyc +0 -0
  17. liminal_orm-4.1.0/liminal/base/__pycache__/name_template_components.cpython-310.pyc +0 -0
  18. liminal_orm-4.1.0/liminal/base/__pycache__/name_template_parts.cpython-310.pyc +0 -0
  19. liminal_orm-4.1.0/liminal/base/__pycache__/schema_properties.cpython-310.pyc +0 -0
  20. liminal_orm-4.1.0/liminal/base/__pycache__/str_enum.cpython-310.pyc +0 -0
  21. liminal_orm-4.1.0/liminal/base/__pycache__/unset.cpython-310.pyc +0 -0
  22. liminal_orm-4.1.0/liminal/base/__pycache__/user.cpython-310.pyc +0 -0
  23. liminal_orm-4.1.0/liminal/base/properties/__pycache__/NoDropdown.cpython-310.pyc +0 -0
  24. liminal_orm-4.1.0/liminal/base/properties/__pycache__/__init__.cpython-310.pyc +0 -0
  25. liminal_orm-4.1.0/liminal/base/properties/__pycache__/base_field_properties.cpython-310.pyc +0 -0
  26. liminal_orm-4.1.0/liminal/base/properties/__pycache__/base_name_template.cpython-310.pyc +0 -0
  27. liminal_orm-4.1.0/liminal/base/properties/__pycache__/base_schema_properties.cpython-310.pyc +0 -0
  28. liminal_orm-4.1.0/liminal/base/properties/__pycache__/field_properties.cpython-310.pyc +0 -0
  29. liminal_orm-4.1.0/liminal/base/properties/__pycache__/schema_properties.cpython-310.pyc +0 -0
  30. liminal_orm-4.1.0/liminal/cli/__pycache__/cli.cpython-310.pyc +0 -0
  31. liminal_orm-4.1.0/liminal/cli/__pycache__/controller.cpython-310.pyc +0 -0
  32. liminal_orm-4.1.0/liminal/cli/__pycache__/live_test_dropdown_migration.cpython-310.pyc +0 -0
  33. liminal_orm-4.1.0/liminal/cli/__pycache__/live_test_entity_schema_migration.cpython-310.pyc +0 -0
  34. liminal_orm-4.1.0/liminal/cli/__pycache__/utils.cpython-310.pyc +0 -0
  35. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/cli/cli.py +7 -7
  36. liminal_orm-4.1.0/liminal/connection/__pycache__/__init__.cpython-310.pyc +0 -0
  37. liminal_orm-4.1.0/liminal/connection/__pycache__/benchling_connection.cpython-310.pyc +0 -0
  38. liminal_orm-4.1.0/liminal/connection/__pycache__/benchling_service.cpython-310.pyc +0 -0
  39. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/connection/benchling_service.py +20 -15
  40. liminal_orm-4.1.0/liminal/dropdowns/__pycache__/api.cpython-310.pyc +0 -0
  41. liminal_orm-4.1.0/liminal/dropdowns/__pycache__/compare.cpython-310.pyc +0 -0
  42. liminal_orm-4.1.0/liminal/dropdowns/__pycache__/generate_files.cpython-310.pyc +0 -0
  43. liminal_orm-4.1.0/liminal/dropdowns/__pycache__/operations.cpython-310.pyc +0 -0
  44. liminal_orm-4.1.0/liminal/dropdowns/__pycache__/utils.cpython-310.pyc +0 -0
  45. liminal_orm-4.1.0/liminal/entity_schemas/__pycache__/api.cpython-310.pyc +0 -0
  46. liminal_orm-4.1.0/liminal/entity_schemas/__pycache__/compare.cpython-310.pyc +0 -0
  47. liminal_orm-4.1.0/liminal/entity_schemas/__pycache__/entity_schema_models.cpython-310.pyc +0 -0
  48. liminal_orm-4.1.0/liminal/entity_schemas/__pycache__/generate_files.cpython-310.pyc +0 -0
  49. liminal_orm-4.1.0/liminal/entity_schemas/__pycache__/operations.cpython-310.pyc +0 -0
  50. liminal_orm-4.1.0/liminal/entity_schemas/__pycache__/schemas.cpython-310.pyc +0 -0
  51. liminal_orm-4.1.0/liminal/entity_schemas/__pycache__/tag_schema_models.cpython-310.pyc +0 -0
  52. liminal_orm-4.1.0/liminal/entity_schemas/__pycache__/utils.cpython-310.pyc +0 -0
  53. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/entity_schemas/utils.py +1 -1
  54. liminal_orm-4.1.0/liminal/enums/__pycache__/__init__.cpython-310.pyc +0 -0
  55. liminal_orm-4.1.0/liminal/enums/__pycache__/benchling_api_field_type.cpython-310.pyc +0 -0
  56. liminal_orm-4.1.0/liminal/enums/__pycache__/benchling_dropdown.cpython-310.pyc +0 -0
  57. liminal_orm-4.1.0/liminal/enums/__pycache__/benchling_entity_type.cpython-310.pyc +0 -0
  58. liminal_orm-4.1.0/liminal/enums/__pycache__/benchling_enum.cpython-310.pyc +0 -0
  59. liminal_orm-4.1.0/liminal/enums/__pycache__/benchling_field_api_type.cpython-310.pyc +0 -0
  60. liminal_orm-4.1.0/liminal/enums/__pycache__/benchling_field_type.cpython-310.pyc +0 -0
  61. liminal_orm-4.1.0/liminal/enums/__pycache__/benchling_folder_item_type.cpython-310.pyc +0 -0
  62. liminal_orm-4.1.0/liminal/enums/__pycache__/benchling_naming_strategy.cpython-310.pyc +0 -0
  63. liminal_orm-4.1.0/liminal/enums/__pycache__/benchling_report_level.cpython-310.pyc +0 -0
  64. liminal_orm-4.1.0/liminal/enums/__pycache__/benchling_sequence_type.cpython-310.pyc +0 -0
  65. liminal_orm-4.1.0/liminal/enums/__pycache__/name_template_part_type.cpython-310.pyc +0 -0
  66. liminal_orm-4.1.0/liminal/enums/__pycache__/sequence_constraint.cpython-310.pyc +0 -0
  67. liminal_orm-4.1.0/liminal/enums/__pycache__/sequence_constraints.cpython-310.pyc +0 -0
  68. liminal_orm-4.1.0/liminal/enums/__pycache__/str_enum.cpython-310.pyc +0 -0
  69. liminal_orm-4.1.0/liminal/enums/__pycache__/undefined.cpython-310.pyc +0 -0
  70. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/enums/benchling_api_field_type.py +2 -0
  71. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/enums/benchling_field_type.py +2 -0
  72. liminal_orm-4.1.0/liminal/external/__pycache__/__init__.cpython-310.pyc +0 -0
  73. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/mappers.py +9 -1
  74. liminal_orm-4.1.0/liminal/migrate/__pycache__/components.cpython-310.pyc +0 -0
  75. liminal_orm-4.1.0/liminal/migrate/__pycache__/revision.cpython-310.pyc +0 -0
  76. liminal_orm-4.1.0/liminal/migrate/__pycache__/revisions_timeline.cpython-310.pyc +0 -0
  77. liminal_orm-4.1.0/liminal/migrate/__pycache__/utils.cpython-310.pyc +0 -0
  78. liminal_orm-4.1.0/liminal/orm/__pycache__/__init__.cpython-310.pyc +0 -0
  79. liminal_orm-4.1.0/liminal/orm/__pycache__/base.cpython-310.pyc +0 -0
  80. liminal_orm-4.1.0/liminal/orm/__pycache__/base_model.cpython-310.pyc +0 -0
  81. liminal_orm-4.1.0/liminal/orm/__pycache__/base_results_model.cpython-310.pyc +0 -0
  82. liminal_orm-4.1.0/liminal/orm/__pycache__/base_results_schema_model.cpython-310.pyc +0 -0
  83. liminal_orm-4.1.0/liminal/orm/__pycache__/column.cpython-310.pyc +0 -0
  84. liminal_orm-4.1.0/liminal/orm/__pycache__/mixins.cpython-310.pyc +0 -0
  85. liminal_orm-4.1.0/liminal/orm/__pycache__/name_template.cpython-310.pyc +0 -0
  86. liminal_orm-4.1.0/liminal/orm/__pycache__/name_template_parts.cpython-310.pyc +0 -0
  87. liminal_orm-4.1.0/liminal/orm/__pycache__/relationship.cpython-310.pyc +0 -0
  88. liminal_orm-4.1.0/liminal/orm/__pycache__/results_schema_properties.cpython-310.pyc +0 -0
  89. liminal_orm-4.1.0/liminal/orm/__pycache__/schema_properties.cpython-310.pyc +0 -0
  90. liminal_orm-4.1.0/liminal/orm/__pycache__/user.cpython-310.pyc +0 -0
  91. liminal_orm-4.1.0/liminal/orm/base_tables/__pycache__/__init__.cpython-310.pyc +0 -0
  92. liminal_orm-4.1.0/liminal/orm/base_tables/__pycache__/registry_entity.cpython-310.pyc +0 -0
  93. liminal_orm-4.1.0/liminal/orm/base_tables/__pycache__/schema.cpython-310.pyc +0 -0
  94. liminal_orm-4.1.0/liminal/orm/base_tables/__pycache__/user.cpython-310.pyc +0 -0
  95. liminal_orm-4.1.0/liminal/results_schemas/__pycache__/generate_files.cpython-310.pyc +0 -0
  96. liminal_orm-4.1.0/liminal/results_schemas/__pycache__/utils.cpython-310.pyc +0 -0
  97. liminal_orm-4.1.0/liminal/results_schemas/models/__pycache__/results_schema_model.cpython-310.pyc +0 -0
  98. liminal_orm-4.1.0/liminal/tests/.DS_Store +0 -0
  99. liminal_orm-4.1.0/liminal/tests/__pycache__/__init__.cpython-310.pyc +0 -0
  100. liminal_orm-4.1.0/liminal/tests/__pycache__/conftest.cpython-310-pytest-8.3.3.pyc +0 -0
  101. liminal_orm-4.1.0/liminal/tests/__pycache__/test_dropdown_compare.cpython-310-pytest-8.3.3.pyc +0 -0
  102. liminal_orm-4.1.0/liminal/tests/__pycache__/test_entity_schema_compare.cpython-310-pytest-8.3.3.pyc +0 -0
  103. liminal_orm-4.1.0/liminal/unit_dictionary/__pycache__/utils.cpython-310.pyc +0 -0
  104. liminal_orm-4.1.0/liminal/validation/__pycache__/__init__.cpython-310.pyc +0 -0
  105. liminal_orm-4.1.0/liminal/validation/__pycache__/validation_report_level.cpython-310.pyc +0 -0
  106. liminal_orm-4.1.0/liminal/validation/__pycache__/validation_severity.cpython-310.pyc +0 -0
  107. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/pyproject.toml +1 -1
  108. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/LICENSE.md +0 -0
  109. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/README.md +0 -0
  110. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/__init__.py +0 -0
  111. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/base/base_dropdown.py +0 -0
  112. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/base/base_operation.py +0 -0
  113. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/base/base_validation_filters.py +0 -0
  114. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/base/compare_operation.py +0 -0
  115. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/base/name_template_parts.py +0 -0
  116. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/base/properties/base_field_properties.py +0 -0
  117. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/base/properties/base_name_template.py +0 -0
  118. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/base/properties/base_schema_properties.py +0 -0
  119. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/base/str_enum.py +0 -0
  120. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/cli/controller.py +0 -0
  121. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/cli/live_test_dropdown_migration.py +0 -0
  122. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/cli/live_test_entity_schema_migration.py +0 -0
  123. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/cli/utils.py +0 -0
  124. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/connection/__init__.py +0 -0
  125. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/connection/benchling_connection.py +0 -0
  126. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/dropdowns/api.py +0 -0
  127. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/dropdowns/compare.py +0 -0
  128. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/dropdowns/generate_files.py +0 -0
  129. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/dropdowns/operations.py +0 -0
  130. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/dropdowns/utils.py +0 -0
  131. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/entity_schemas/api.py +0 -0
  132. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/entity_schemas/compare.py +0 -0
  133. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/entity_schemas/entity_schema_models.py +0 -0
  134. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/entity_schemas/generate_files.py +0 -0
  135. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/entity_schemas/operations.py +0 -0
  136. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/entity_schemas/tag_schema_models.py +0 -0
  137. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/enums/__init__.py +0 -0
  138. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/enums/benchling_entity_type.py +0 -0
  139. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/enums/benchling_folder_item_type.py +0 -0
  140. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/enums/benchling_naming_strategy.py +0 -0
  141. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/enums/benchling_sequence_type.py +0 -0
  142. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/enums/name_template_part_type.py +0 -0
  143. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/enums/sequence_constraint.py +0 -0
  144. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/external/__init__.py +0 -0
  145. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/migrate/components.py +0 -0
  146. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/migrate/revision.py +0 -0
  147. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/migrate/revisions_timeline.py +0 -0
  148. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/orm/base.py +0 -0
  149. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/orm/base_model.py +0 -0
  150. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/orm/base_results_model.py +0 -0
  151. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/orm/base_tables/registry_entity.py +0 -0
  152. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/orm/base_tables/schema.py +0 -0
  153. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/orm/base_tables/user.py +0 -0
  154. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/orm/column.py +0 -0
  155. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/orm/mixins.py +0 -0
  156. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/orm/name_template.py +0 -0
  157. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/orm/name_template_parts.py +0 -0
  158. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/orm/relationship.py +0 -0
  159. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/orm/results_schema_properties.py +0 -0
  160. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/orm/schema_properties.py +0 -0
  161. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/py.typed +0 -0
  162. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/results_schemas/generate_files.py +0 -0
  163. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/results_schemas/models/results_schema_model.py +0 -0
  164. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/results_schemas/utils.py +0 -0
  165. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/tests/__init__.py +0 -0
  166. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/tests/conftest.py +0 -0
  167. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/tests/from benchling_sdk.py +0 -0
  168. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/tests/test_dropdown_compare.py +0 -0
  169. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/tests/test_entity_schema_compare.py +0 -0
  170. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/unit_dictionary/utils.py +0 -0
  171. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/utils.py +0 -0
  172. {liminal_orm-4.0.0 → liminal_orm-4.1.0}/liminal/validation/__init__.py +0 -0
  173. {liminal_orm-4.0.0 → 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.0
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
Binary file
@@ -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,9 +25,10 @@ from liminal.enums import (
25
25
  BenchlingNamingStrategy,
26
26
  )
27
27
 
28
- logger = logging.getLogger(__name__)
28
+ LOGGER = logging.getLogger(__name__)
29
+ logging.getLogger("httpx").setLevel(logging.WARNING)
29
30
 
30
- REMOTE_LIMINAL_SCHEMA_NAME = "_liminal_remote"
31
+ REMOTE_LIMINAL_SCHEMA_NAME = "liminal_remote"
31
32
  REMOTE_REVISION_ID_FIELD_WH_NAME = "revision_id"
32
33
 
33
34
 
@@ -70,7 +71,7 @@ class BenchlingService(Benchling):
70
71
  super().__init__(
71
72
  url=url, auth_method=auth_method, retry_strategy=retry_strategy
72
73
  )
73
- logger.info(f"Tenant {connection.tenant_name}: Connected to Benchling API.")
74
+ LOGGER.info(f"Tenant {connection.tenant_name}: Connected to Benchling API.")
74
75
  self.use_db = use_db
75
76
  if use_db:
76
77
  if connection.warehouse_connection_string:
@@ -78,7 +79,7 @@ class BenchlingService(Benchling):
78
79
  connection.warehouse_connection_string
79
80
  )
80
81
  configure_mappers()
81
- logger.info(
82
+ LOGGER.info(
82
83
  f"Tenant {connection.tenant_name}: Connected to Benchling read-only Postgres warehouse."
83
84
  )
84
85
  else:
@@ -104,7 +105,7 @@ class BenchlingService(Benchling):
104
105
  "Referer": f"https://{connection.tenant_name}.benchling.com/",
105
106
  "Content-Type": "application/json",
106
107
  }
107
- logger.info(
108
+ LOGGER.info(
108
109
  f"Tenant {connection.tenant_name}: Connected to Benchling internal API."
109
110
  )
110
111
  else:
@@ -150,7 +151,7 @@ class BenchlingService(Benchling):
150
151
 
151
152
  def get_remote_revision_id(self) -> str:
152
153
  """
153
- 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.
154
155
  This schema contains the remote revision_id in the name of the revision_id field.
155
156
 
156
157
  Returns the remote revision_id stored on the entity.
@@ -179,8 +180,8 @@ class BenchlingService(Benchling):
179
180
 
180
181
  def upsert_remote_revision_id(self, revision_id: str) -> None:
181
182
  """Updates or inserts a remote Liminal schema into your tenant with the given revision_id stored in the name of a field.
182
- 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.
183
- 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.
184
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.
185
186
 
186
187
  Parameters
@@ -198,20 +199,20 @@ class BenchlingService(Benchling):
198
199
  try:
199
200
  liminal_schema = TagSchemaModel.get_one(self, REMOTE_LIMINAL_SCHEMA_NAME)
200
201
  except Exception:
201
- # No _liminal_remote schema found. Create schema.
202
+ # No liminal_remote schema found. Create schema.
202
203
  from liminal.entity_schemas.operations import CreateEntitySchema
203
204
 
204
205
  CreateEntitySchema(
205
206
  schema_properties=BaseSchemaProperties(
206
- name={REMOTE_LIMINAL_SCHEMA_NAME},
207
- warehouse_name={REMOTE_LIMINAL_SCHEMA_NAME},
208
- prefix={REMOTE_LIMINAL_SCHEMA_NAME},
207
+ name=REMOTE_LIMINAL_SCHEMA_NAME,
208
+ warehouse_name=REMOTE_LIMINAL_SCHEMA_NAME,
209
+ prefix=REMOTE_LIMINAL_SCHEMA_NAME,
209
210
  entity_type=BenchlingEntityType.CUSTOM_ENTITY,
210
211
  naming_strategies={BenchlingNamingStrategy.NEW_IDS},
211
212
  ),
212
213
  fields=[
213
214
  BaseFieldProperties(
214
- name={revision_id},
215
+ name=revision_id,
215
216
  warehouse_name=REMOTE_REVISION_ID_FIELD_WH_NAME,
216
217
  type=BenchlingFieldType.TEXT,
217
218
  parent_link=False,
@@ -220,14 +221,18 @@ class BenchlingService(Benchling):
220
221
  )
221
222
  ],
222
223
  ).execute(self)
223
- # _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.
224
229
  revision_id_fields = [
225
230
  f
226
231
  for f in liminal_schema.fields
227
232
  if f.systemName == REMOTE_REVISION_ID_FIELD_WH_NAME
228
233
  ]
229
234
  if len(revision_id_fields) == 1:
230
- # _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.
231
236
  from liminal.entity_schemas.operations import UpdateEntitySchemaField
232
237
 
233
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.0"
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