tol-sdk 1.7.5b2__tar.gz → 1.7.5b4__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 (354) hide show
  1. {tol_sdk-1.7.5b2/src/tol_sdk.egg-info → tol_sdk-1.7.5b4}/PKG-INFO +1 -1
  2. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/pyproject.toml +1 -1
  3. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/data_object_converter.py +2 -1
  4. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/detail_getter.py +1 -1
  5. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/__init__.py +1 -0
  6. tol_sdk-1.7.5b4/src/tol/flows/converters/skip_null_fields_converter.py +42 -0
  7. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/auth/models.py +21 -12
  8. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/__init__.py +1 -0
  9. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/allowed_keys.py +2 -1
  10. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/allowed_values.py +2 -1
  11. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/allowed_values_from_datasource.py +3 -2
  12. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/assert_on_condition.py +1 -1
  13. tol_sdk-1.7.5b4/src/tol/validators/converter_and_validate.py +93 -0
  14. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/ena_checklist.py +1 -1
  15. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/ena_submittable.py +1 -0
  16. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/min_one_valid_value.py +1 -0
  17. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/mutually_exclusive.py +1 -1
  18. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/regex.py +6 -2
  19. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/regex_by_value.py +2 -1
  20. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/specimens_have_same_taxon.py +1 -1
  21. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/sts_fields.py +1 -0
  22. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/tolid.py +1 -0
  23. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/unique_values.py +2 -1
  24. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/unique_whole_organisms.py +1 -1
  25. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4/src/tol_sdk.egg-info}/PKG-INFO +1 -1
  26. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol_sdk.egg-info/SOURCES.txt +2 -0
  27. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/LICENSE +0 -0
  28. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/MANIFEST.in +0 -0
  29. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/README.md +0 -0
  30. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/setup.cfg +0 -0
  31. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/certs/cacert.pem +0 -0
  32. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/__init__.py +0 -0
  33. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/actions/__init__.py +0 -0
  34. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/actions/action.py +0 -0
  35. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/actions/upsert_action.py +0 -0
  36. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/__init__.py +0 -0
  37. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/action.py +0 -0
  38. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/auth/__init__.py +0 -0
  39. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/auth/abc/__init__.py +0 -0
  40. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/auth/abc/auth.py +0 -0
  41. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/auth/abc/authorisation.py +0 -0
  42. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/auth/asserts.py +0 -0
  43. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/auth/blueprint.py +0 -0
  44. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/auth/composite.py +0 -0
  45. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/auth/config.py +0 -0
  46. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/auth/error.py +0 -0
  47. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/blueprint.py +0 -0
  48. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/controller.py +0 -0
  49. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/data_upload.py +0 -0
  50. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/misc/__init__.py +0 -0
  51. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/misc/aggregation_body.py +0 -0
  52. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/misc/aggregation_parameters.py +0 -0
  53. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/misc/auth_context.py +0 -0
  54. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/misc/authenticate.py +0 -0
  55. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/misc/data_body.py +0 -0
  56. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/misc/filter_utils.py +0 -0
  57. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/misc/list_get_parameters.py +0 -0
  58. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/misc/relation_url.py +0 -0
  59. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/misc/stats_parameters.py +0 -0
  60. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/pipeline_steps.py +0 -0
  61. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_base/system.py +0 -0
  62. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_client/__init__.py +0 -0
  63. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_client/api_datasource.py +0 -0
  64. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_client/client.py +0 -0
  65. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_client/converter.py +0 -0
  66. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_client/exception.py +0 -0
  67. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_client/factory.py +0 -0
  68. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_client/filter.py +0 -0
  69. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_client/parser.py +0 -0
  70. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_client/validate.py +0 -0
  71. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/api_client/view.py +0 -0
  72. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/barcodes/__init__.py +0 -0
  73. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/barcodes/main.py +0 -0
  74. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/__init__.py +0 -0
  75. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/benchling_converter.py +0 -0
  76. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/benchling_datasource.py +0 -0
  77. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/benchling_warehouse_datasource.py +0 -0
  78. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/__init__.py +0 -0
  79. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/extraction_extraction_type_dna.sql +0 -0
  80. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/extraction_extraction_type_lres.sql +0 -0
  81. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/extraction_extraction_type_pooled_dna.sql +0 -0
  82. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/extraction_extraction_type_rna.sql +0 -0
  83. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/pacbio_prep.sql +0 -0
  84. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/pooled_pacbio_prep.sql +0 -0
  85. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/results_extraction_dna.sql +0 -0
  86. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/results_extraction_pooled.sql +0 -0
  87. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/results_extraction_rna.sql +0 -0
  88. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/results_pacbio_prep.sql +0 -0
  89. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/results_pacbio_prep_pooled.sql +0 -0
  90. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/sample.sql +0 -0
  91. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/sequencing_request_sequencing_platform_hic.sql +0 -0
  92. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/sequencing_request_sequencing_platform_pacbio.sql +0 -0
  93. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/sequencing_request_sequencing_platform_rnaseq.sql +0 -0
  94. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/sequencing_request_sequencing_platform_wgs.sql +0 -0
  95. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/benchling/sql/tissue_prep.sql +0 -0
  96. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/board/__init__.py +0 -0
  97. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/board/blueprint.py +0 -0
  98. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/bold/__init__.py +0 -0
  99. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/bold/bold_datasource.py +0 -0
  100. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/bold/client.py +0 -0
  101. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/bold/converter.py +0 -0
  102. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/bold/factory.py +0 -0
  103. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/bold/parser.py +0 -0
  104. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/cli/__init__.py +0 -0
  105. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/cli/cli.py +0 -0
  106. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/converter/__init__.py +0 -0
  107. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/converter/yaml/__init__.py +0 -0
  108. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/converter/yaml/model.py +0 -0
  109. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/converter/yaml/yaml_converter.py +0 -0
  110. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/copo/__init__.py +0 -0
  111. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/copo/client.py +0 -0
  112. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/copo/converter.py +0 -0
  113. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/copo/copo_datasource.py +0 -0
  114. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/copo/factory.py +0 -0
  115. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/copo/parser.py +0 -0
  116. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/__init__.py +0 -0
  117. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/attribute_metadata.py +0 -0
  118. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/core_converter.py +0 -0
  119. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/data_loader.py +0 -0
  120. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/data_object.py +0 -0
  121. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/data_source_attribute_metadata.py +0 -0
  122. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/data_source_dict.py +0 -0
  123. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/datasource.py +0 -0
  124. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/datasource_error.py +0 -0
  125. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/datasource_filter.py +0 -0
  126. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/datasource_utils.py +0 -0
  127. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/factory.py +0 -0
  128. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/http_client.py +0 -0
  129. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/__init__.py +0 -0
  130. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/_filterable.py +0 -0
  131. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/_writer.py +0 -0
  132. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/aggregator.py +0 -0
  133. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/counter.py +0 -0
  134. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/cursor.py +0 -0
  135. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/declare.py +0 -0
  136. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/deleter.py +0 -0
  137. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/enricher.py +0 -0
  138. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/enum.py +0 -0
  139. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/group_statter.py +0 -0
  140. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/inserter.py +0 -0
  141. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/list_getter.py +0 -0
  142. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/operator_config.py +0 -0
  143. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/page_getter.py +0 -0
  144. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/relational.py +0 -0
  145. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/statter.py +0 -0
  146. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/summariser.py +0 -0
  147. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/updater.py +0 -0
  148. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/operator/upserter.py +0 -0
  149. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/relationship.py +0 -0
  150. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/requested_fields.py +0 -0
  151. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/session.py +0 -0
  152. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/core/validate.py +0 -0
  153. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/elastic/__init__.py +0 -0
  154. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/elastic/elastic_datasource.py +0 -0
  155. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/elastic/runtime_fields.py +0 -0
  156. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/eln/__init__.py +0 -0
  157. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/eln/auth.py +0 -0
  158. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/eln/eln_datasource.py +0 -0
  159. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/eln/entities.py +0 -0
  160. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/eln/generators.py +0 -0
  161. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/eln/sanitise.py +0 -0
  162. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/ena/__init__.py +0 -0
  163. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/ena/client.py +0 -0
  164. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/ena/converter.py +0 -0
  165. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/ena/ena_datasource.py +0 -0
  166. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/ena/ena_methods.py +0 -0
  167. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/ena/factory.py +0 -0
  168. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/ena/filter.py +0 -0
  169. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/ena/parser.py +0 -0
  170. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/excel/__init__.py +0 -0
  171. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/excel/excel.py +0 -0
  172. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/excel/excel_datasource.py +0 -0
  173. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/excel/s3_factory.py +0 -0
  174. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/__init__.py +0 -0
  175. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/benchling_entity_to_benchling_worklist_item_converter_factory.py +0 -0
  176. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/benchling_extraction_to_elastic_extraction_converter.py +0 -0
  177. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/benchling_extraction_to_elastic_sequencing_request_converter.py +0 -0
  178. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/benchling_sample_casm_to_sts_sample_converter.py +0 -0
  179. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/benchling_sample_to_elastic_sample_converter.py +0 -0
  180. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/benchling_sequencing_request_to_elastic_sequencing_request_converter.py +0 -0
  181. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/benchling_tissue_prep_to_elastic_tissue_prep_converter.py +0 -0
  182. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/benchling_tissue_to_sts_sample_converter.py +0 -0
  183. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/bioscan_extra_pantheon_species_to_elastic_sample_update_converter.py +0 -0
  184. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/bioscan_image_to_elastic_sample_update_converter.py +0 -0
  185. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/bioscan_qc_specimen_to_elastic_sample_update_converter.py +0 -0
  186. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/bioscan_qc_uksi_entry_to_elastic_sample_update_converter.py +0 -0
  187. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/bold_bin_to_elastic_sample_update_converter.py +0 -0
  188. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/bold_sample_to_elastic_sample_update_converter.py +0 -0
  189. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/elastic_object_to_portaldb_object_converter.py +0 -0
  190. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/elastic_sample_to_benchling_tissue_converter.py +0 -0
  191. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/elastic_sample_to_benchling_tissue_update_converter.py +0 -0
  192. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/elastic_sample_to_bold_sample_converter.py +0 -0
  193. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/elastic_sample_to_elastic_sequencing_request_update_converter.py +0 -0
  194. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/elastic_sample_to_sts_sample_converter.py +0 -0
  195. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/elastic_sequencing_request_to_elastic_run_data_update_converter.py +0 -0
  196. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/elastic_sequencing_request_to_sts_sequencing_request_converter.py +0 -0
  197. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/elastic_species_to_sts_species_converter.py +0 -0
  198. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/elastic_tolid_to_elastic_curation_update_converter.py +0 -0
  199. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/elastic_tolid_to_elastic_genome_note_update_converter.py +0 -0
  200. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/elastic_tolid_to_elastic_sample_update_converter.py +0 -0
  201. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/gap_assembly_to_elastic_assembly_analysis_converter.py +0 -0
  202. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/gap_assembly_to_elastic_assembly_converter.py +0 -0
  203. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/genome_notes_genome_note_to_elastic_genome_note_converter.py +0 -0
  204. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/goat_taxon_to_elastic_species_converter.py +0 -0
  205. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/grit_issue_to_elastic_curation_converter.py +0 -0
  206. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/incoming_sample_to_ena_sample_converter.py +0 -0
  207. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/incoming_sample_to_incoming_sample_with_lists_converter.py +0 -0
  208. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/informatics_tolid_to_elastic_tolid_converter.py +0 -0
  209. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/labwhere_location_to_elastic_sample_update_converter.py +0 -0
  210. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/labwhere_location_to_sts_tray_converter.py +0 -0
  211. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/mlwh_extraction_to_elastic_extraction_converter.py +0 -0
  212. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/mlwh_run_data_to_elastic_run_data_converter.py +0 -0
  213. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/mlwh_sequencing_request_to_elastic_sequencing_request_converter.py +0 -0
  214. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/sts_banked_sample_to_elastic_sample_converter.py +0 -0
  215. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/sts_manifest_to_elastic_manifest_converter.py +0 -0
  216. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/sts_project_to_elastic_sample_update_converter.py +0 -0
  217. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/sts_sample_project_to_elastic_sample_converter.py +0 -0
  218. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/sts_sample_to_casm_benchling_converter.py +0 -0
  219. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/sts_sampleset_to_elastic_sampleset_converter.py +0 -0
  220. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/sts_species_to_elastic_species_converter.py +0 -0
  221. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/tolid_specimen_to_elastic_tolid_converter.py +0 -0
  222. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/tolqc_data_to_elastic_run_data_converter.py +0 -0
  223. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/tolqc_sample_to_elastic_sequencing_request_converter.py +0 -0
  224. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/tolqc_species_to_elastic_species_converter.py +0 -0
  225. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/treeofsex_species_to_treeofsexwh_species_converter.py +0 -0
  226. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/converters/treeofsex_upload_to_treeofsex_attribute_converter.py +0 -0
  227. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/logger.py +0 -0
  228. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/secrets.py +0 -0
  229. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/flows/sequencing_submissions.py +0 -0
  230. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/gap/__init__.py +0 -0
  231. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/gap/gap_datasource.py +0 -0
  232. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/goat/__init__.py +0 -0
  233. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/goat/client.py +0 -0
  234. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/goat/converter.py +0 -0
  235. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/goat/factory.py +0 -0
  236. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/goat/filter.py +0 -0
  237. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/goat/goat_datasource.py +0 -0
  238. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/goat/parser.py +0 -0
  239. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/google_sheets/__init__.py +0 -0
  240. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/google_sheets/google_sheet_datasource.py +0 -0
  241. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/irods/__init__.py +0 -0
  242. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/irods/irods_datasource.py +0 -0
  243. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/jira/__init__.py +0 -0
  244. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/jira/client.py +0 -0
  245. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/jira/converter.py +0 -0
  246. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/jira/factory.py +0 -0
  247. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/jira/filter.py +0 -0
  248. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/jira/jira_datasource.py +0 -0
  249. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/jira/mapper.py +0 -0
  250. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/jira/parser.py +0 -0
  251. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/jira/sort.py +0 -0
  252. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/json/__init__.py +0 -0
  253. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/json/json_datasource.py +0 -0
  254. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/json/s3_json_datasource.py +0 -0
  255. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/labwhere/__init__.py +0 -0
  256. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/labwhere/client.py +0 -0
  257. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/labwhere/converter.py +0 -0
  258. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/labwhere/factory.py +0 -0
  259. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/labwhere/labwhere_datasource.py +0 -0
  260. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/labwhere/parser.py +0 -0
  261. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/markdown.py +0 -0
  262. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/mlwh/__init__.py +0 -0
  263. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/mlwh/mlwh_datasource.py +0 -0
  264. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/prefect/__init__.py +0 -0
  265. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/prefect/converter.py +0 -0
  266. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/prefect/factory.py +0 -0
  267. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/prefect/filter.py +0 -0
  268. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/prefect/prefect_datasource.py +0 -0
  269. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/prefect/prefect_object.py +0 -0
  270. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/s3/__init__.py +0 -0
  271. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/s3/converter.py +0 -0
  272. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/s3/factory.py +0 -0
  273. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/s3/parser.py +0 -0
  274. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/s3/s3_datasource.py +0 -0
  275. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sciops/__init__.py +0 -0
  276. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sciops/configuration.py +0 -0
  277. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sciops/consumer.py +0 -0
  278. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sciops/message_builder.py +0 -0
  279. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sciops/messages.py +0 -0
  280. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sciops/response_processors.py +0 -0
  281. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sciops/sequencing_datasource.py +0 -0
  282. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/services/__init__.py +0 -0
  283. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/services/s3_client.py +0 -0
  284. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/__init__.py +0 -0
  285. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/benchling.py +0 -0
  286. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/benchling_warehouse.py +0 -0
  287. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/bioscan.py +0 -0
  288. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/bioscan_extra.py +0 -0
  289. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/bioscan_image.py +0 -0
  290. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/bioscan_qc.py +0 -0
  291. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/bold.py +0 -0
  292. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/copo.py +0 -0
  293. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/defaults.py +0 -0
  294. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/elastic.py +0 -0
  295. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/ena.py +0 -0
  296. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/gap.py +0 -0
  297. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/genome_notes.py +0 -0
  298. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/goat.py +0 -0
  299. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/grit.py +0 -0
  300. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/informatics.py +0 -0
  301. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/labwhere.py +0 -0
  302. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/mlwh.py +0 -0
  303. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/portal.py +0 -0
  304. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/portal_attributes.py +0 -0
  305. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/portaldb.py +0 -0
  306. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/prefect.py +0 -0
  307. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/sciops.py +0 -0
  308. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/sts.py +0 -0
  309. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/sts_legacy.py +0 -0
  310. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/tolid.py +0 -0
  311. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/tolqc.py +0 -0
  312. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/tolqc_legacy.py +0 -0
  313. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/treeofsex.py +0 -0
  314. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/uksi_qc.py.py +0 -0
  315. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sources/workflows.py +0 -0
  316. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/__init__.py +0 -0
  317. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/action/__init__.py +0 -0
  318. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/action/factory.py +0 -0
  319. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/auth/__init__.py +0 -0
  320. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/auth/blueprint.py +0 -0
  321. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/cast.py +0 -0
  322. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/database.py +0 -0
  323. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/ds_session.py +0 -0
  324. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/exception.py +0 -0
  325. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/ext.py +0 -0
  326. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/factory.py +0 -0
  327. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/filter.py +0 -0
  328. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/model.py +0 -0
  329. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/pipeline_step/__init__.py +0 -0
  330. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/pipeline_step/factory.py +0 -0
  331. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/relationship.py +0 -0
  332. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/session.py +0 -0
  333. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/sort.py +0 -0
  334. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/sql_converter.py +0 -0
  335. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/sql_datasource.py +0 -0
  336. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/standard/__init__.py +0 -0
  337. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sql/standard/factory.py +0 -0
  338. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/status/__init__.py +0 -0
  339. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/status/status_datasource.py +0 -0
  340. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sts/__init__.py +0 -0
  341. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sts/sts.py +0 -0
  342. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sts/sts_datasource.py +0 -0
  343. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/sts/sts_requests.py +0 -0
  344. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/treeval/__init__.py +0 -0
  345. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/treeval/treeval_datasource.py +0 -0
  346. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/utils/__init__.py +0 -0
  347. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/utils/csv.py +0 -0
  348. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/utils/s3.py +0 -0
  349. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/interfaces/__init__.py +0 -0
  350. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol/validators/interfaces/condition_evaluator.py +0 -0
  351. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol_sdk.egg-info/dependency_links.txt +0 -0
  352. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol_sdk.egg-info/entry_points.txt +0 -0
  353. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol_sdk.egg-info/requires.txt +0 -0
  354. {tol_sdk-1.7.5b2 → tol_sdk-1.7.5b4}/src/tol_sdk.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tol-sdk
3
- Version: 1.7.5b2
3
+ Version: 1.7.5b4
4
4
  Summary: SDK for interaction with ToL, Sanger and external services
5
5
  Author-email: ToL Platforms Team <tol-platforms@sanger.ac.uk>
6
6
  License: MIT
@@ -8,7 +8,7 @@ build-backend = "setuptools.build_meta"
8
8
 
9
9
  [project]
10
10
  name = "tol-sdk"
11
- version = "1.7.5-beta2"
11
+ version = "1.7.5-beta4"
12
12
  description = "SDK for interaction with ToL, Sanger and external services"
13
13
  readme = "README.md"
14
14
  authors = [
@@ -97,7 +97,8 @@ class SanitisingConverter(DataObjectToDataObjectOrUpdateConverter):
97
97
 
98
98
  def __init__(
99
99
  self,
100
- data_object_factory: DataObjectFactory
100
+ data_object_factory: DataObjectFactory,
101
+ **kwargs
101
102
  ):
102
103
  super().__init__(data_object_factory)
103
104
 
@@ -82,7 +82,7 @@ class DetailGetter(ABC):
82
82
  for id_ in object_ids:
83
83
  seekable_objects.seek(0)
84
84
  for obj in seekable_objects:
85
- if obj.id == id_:
85
+ if str(obj.id) == str(id_):
86
86
  yield obj
87
87
  break
88
88
  else:
@@ -55,3 +55,4 @@ from .tolqc_species_to_elastic_species_converter import TolqcSpeciesToElasticSpe
55
55
  from .sts_sample_to_casm_benchling_converter import StsSampleToCasmBenchlingConverterFactory # noqa F401
56
56
  from .treeofsex_species_to_treeofsexwh_species_converter import TreeofsexSpeciesToTreeofsexwhSpeciesConverter # noqa F401
57
57
  from .treeofsex_upload_to_treeofsex_attribute_converter import TreeofsexUploadToTreeofsexAttributeConverter # noqa F401
58
+ from .skip_null_fields_converter import SkipNullFieldsConverter # noqa F401
@@ -0,0 +1,42 @@
1
+ # SPDX-FileCopyrightText: 2025 Genome Research Ltd.
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ from dataclasses import dataclass
5
+ from typing import Iterable
6
+
7
+ from tol.core import DataObject, DataObjectToDataObjectOrUpdateConverter
8
+
9
+
10
+ class SkipNullFieldsConverter(DataObjectToDataObjectOrUpdateConverter):
11
+
12
+ @dataclass(slots=True, frozen=True, kw_only=True)
13
+ class Config:
14
+ field_names: list[str]
15
+
16
+ __slots__ = ['__config']
17
+ __config: Config
18
+
19
+ def __init__(self, data_object_factory, config: Config) -> None:
20
+ super().__init__(data_object_factory)
21
+ self.__config = config
22
+ self._data_object_factory = data_object_factory
23
+
24
+ def convert(self, data_object: DataObject) -> Iterable[DataObject]:
25
+ """
26
+ removing null fields from the DataObject
27
+ """
28
+
29
+ passes = True
30
+ for field in self.__config.field_names:
31
+ value = data_object.get_field_by_name(field)
32
+ if value is None:
33
+ passes = False
34
+ break
35
+
36
+ if passes:
37
+ ret = self._data_object_factory(
38
+ data_object.type,
39
+ data_object.id,
40
+ attributes=data_object.attributes
41
+ )
42
+ yield ret
@@ -19,6 +19,7 @@ from sqlalchemy.ext.declarative import declared_attr
19
19
  from sqlalchemy.orm import (
20
20
  Mapped,
21
21
  Session,
22
+ joinedload,
22
23
  mapped_column,
23
24
  relationship
24
25
  )
@@ -184,7 +185,7 @@ def create_models(
184
185
 
185
186
  id: Mapped[str] = mapped_column( # noqa A003
186
187
  primary_key=True,
187
- name=None if not prefix_with_name else 'state_id'
188
+ name='state_id' if prefix_with_name else None
188
189
  )
189
190
 
190
191
  created_at: Mapped[datetime] = mapped_column(
@@ -257,13 +258,13 @@ def create_models(
257
258
  id: Mapped[int] = mapped_column( # noqa A003
258
259
  primary_key=True,
259
260
  autoincrement=True,
260
- name=None if not prefix_with_name else 'user_id'
261
+ name='user_id' if prefix_with_name else None
261
262
  )
262
263
 
263
- _tokens: Mapped[list['Token']] = relationship(
264
+ _tokens: Mapped[list[Token]] = relationship(
264
265
  back_populates='user'
265
266
  )
266
- _role_bindings: Mapped[list['RoleBinding']] = relationship(
267
+ _role_bindings: Mapped[list[RoleBinding]] = relationship(
267
268
  back_populates='user'
268
269
  )
269
270
 
@@ -340,7 +341,7 @@ def create_models(
340
341
 
341
342
  class _TokenPKMixin:
342
343
  """
343
- Has an integer has a primary key.
344
+ Has an integer as a primary key.
344
345
 
345
346
  This is all that is needed in most apps,
346
347
  and is the default.
@@ -403,11 +404,19 @@ def create_models(
403
404
  token: str
404
405
  ) -> Optional[Token]:
405
406
 
406
- return sess.query(
407
- cls
408
- ).filter_by(
409
- token=token
410
- ).one_or_none()
407
+ return (
408
+ sess.query(cls)
409
+ .filter_by(token=token)
410
+ .options(
411
+ # Join through to the Role table when fetching a Token so
412
+ # that SQLAlchemy only fires one SELECT query instead of
413
+ # four to get `token.user._role_bindings.role.name`
414
+ joinedload(cls.user)
415
+ .joinedload(User._role_bindings)
416
+ .joinedload(RoleBinding.role)
417
+ )
418
+ .one_or_none()
419
+ )
411
420
 
412
421
  @classmethod
413
422
  def get_or_create(
@@ -475,14 +484,14 @@ def create_models(
475
484
  id: Mapped[int] = mapped_column( # noqa A003
476
485
  primary_key=True,
477
486
  autoincrement=True,
478
- name=None if not prefix_with_name else 'role_id'
487
+ name='role_id' if prefix_with_name else None
479
488
  )
480
489
 
481
490
  name: Mapped[str] = mapped_column(
482
491
  unique=True
483
492
  )
484
493
 
485
- _role_bindings: Mapped[list['RoleBinding']] = relationship(
494
+ _role_bindings: Mapped[list[RoleBinding]] = relationship(
486
495
  back_populates='role'
487
496
  )
488
497
 
@@ -6,6 +6,7 @@ from .allowed_keys import AllowedKeysValidator # noqa
6
6
  from .allowed_values import AllowedValuesValidator # noqa
7
7
  from .allowed_values_from_datasource import AllowedValuesFromDataSourceValidator # noqa
8
8
  from .assert_on_condition import AssertOnConditionValidator # noqa
9
+ from .converter_and_validate import ConverterAndValidateValidator # noqa
9
10
  from .ena_checklist import EnaChecklistValidator # noqa
10
11
  from .mutually_exclusive import MutuallyExclusiveValidator # noqa
11
12
  from .ena_submittable import EnaSubmittableValidator # noqa
@@ -26,7 +26,8 @@ class AllowedKeysValidator(Validator):
26
26
 
27
27
  def __init__(
28
28
  self,
29
- config: Config
29
+ config: Config,
30
+ **kwargs
30
31
  ) -> None:
31
32
 
32
33
  super().__init__()
@@ -27,7 +27,8 @@ class AllowedValuesValidator(Validator):
27
27
 
28
28
  def __init__(
29
29
  self,
30
- config: Config
30
+ config: Config,
31
+ **kwargs
31
32
  ) -> None:
32
33
 
33
34
  super().__init__()
@@ -29,7 +29,8 @@ class AllowedValuesFromDataSourceValidator(Validator):
29
29
  def __init__(
30
30
  self,
31
31
  config: Config,
32
- allowed_values: List[str | int | float] | None = None # For testing
32
+ allowed_values: List[str | int | float] | None = None, # For testing
33
+ **kwargs
33
34
  ) -> None:
34
35
 
35
36
  super().__init__()
@@ -40,7 +41,7 @@ class AllowedValuesFromDataSourceValidator(Validator):
40
41
 
41
42
  def __initialize_list_from_datasource(self) -> List[str | int | float]:
42
43
  dsi = portaldb().get_one('data_source_instance', self.__config.datasource_instance_id)
43
- ds = DataSourceUtils.get_data_source_by_data_source_instance(dsi)
44
+ ds = DataSourceUtils.get_datasource_by_datasource_instance(dsi)
44
45
  return [
45
46
  obj.get_field_by_name(
46
47
  self.__config.datasource_field_name
@@ -25,7 +25,7 @@ class AssertOnConditionValidator(Validator, ConditionEvaluator):
25
25
  __slots__ = ['__config']
26
26
  __config: Config
27
27
 
28
- def __init__(self, config: Config) -> None:
28
+ def __init__(self, config: Config, **kwargs) -> None:
29
29
  super().__init__()
30
30
 
31
31
  self.__config = config
@@ -0,0 +1,93 @@
1
+ # SPDX-FileCopyrightText: 2025 Genome Research Ltd.
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+
5
+ import importlib
6
+ from dataclasses import dataclass
7
+
8
+ from tol.core import DataObject
9
+ from tol.core.factory import DataObjectFactory
10
+ from tol.core.validate import ValidationResult, Validator
11
+
12
+
13
+ class ConverterAndValidateValidator(Validator):
14
+ """
15
+ Convert DataObjects, validate the converted ones, and return the original
16
+ input unchanged. Inner validator results are not merged here.
17
+
18
+ {
19
+ "converters": [{
20
+ "module": "<path.to.module>",
21
+ "class_name": "<path.to.ConverterClass>",
22
+ "config": { ... }
23
+ }],
24
+ "validators": [{
25
+ "module": "<path.to.module>",
26
+ "class_name": "<path.to.ValidatorClass>",
27
+ "config": { ... }
28
+ }]
29
+ }
30
+
31
+ """
32
+ @dataclass(slots=True, frozen=True, kw_only=True)
33
+ class Config:
34
+ converters: list[dict]
35
+ validators: list[dict]
36
+
37
+ __slots__ = [
38
+ '__converters',
39
+ '__validators'
40
+ ]
41
+
42
+ def __init__(
43
+ self,
44
+ config: Config,
45
+ data_object_factory: DataObjectFactory,
46
+ **kwargs
47
+ ) -> None:
48
+ super().__init__()
49
+ self.__converters = []
50
+ self.__validators = []
51
+
52
+ for conv in config.converters:
53
+ __module = importlib.import_module(conv.get('module'))
54
+ converter_class = getattr(__module, conv.get('class_name'))
55
+
56
+ converter_conf = converter_class.Config(
57
+ **conv.get('config')
58
+ )
59
+ self.__converters.append(converter_class(
60
+ data_object_factory=data_object_factory,
61
+ config=converter_conf,
62
+ ))
63
+ for val in config.validators:
64
+ __module = importlib.import_module(val.get('module'))
65
+ validator_class = getattr(__module, val.get('class_name'))
66
+
67
+ validator_conf = validator_class.Config(
68
+ **val.get('config')
69
+ )
70
+ self.__validators.append(validator_class(
71
+ data_object_factory=data_object_factory,
72
+ config=validator_conf,
73
+ ))
74
+
75
+ def _validate_data_object(self, obj: DataObject) -> None:
76
+ converted_objs = [obj]
77
+ for converter in self.__converters:
78
+ converted_objs = converter.convert_iterable(converted_objs)
79
+ for obj in converted_objs:
80
+ for validator in self.__validators:
81
+ validator._validate_data_object(obj)
82
+
83
+ @property
84
+ def results(self) -> list[ValidationResult]:
85
+ return [result for validator in self.__validators for result in validator.results]
86
+
87
+ @property
88
+ def warnings(self) -> list[ValidationResult]:
89
+ return [warning for validator in self.__validators for warning in validator.warnings]
90
+
91
+ @property
92
+ def errors(self) -> list[ValidationResult]:
93
+ return [error for validator in self.__validators for error in validator.errors]
@@ -23,7 +23,7 @@ class EnaChecklistValidator(Validator):
23
23
  __slots__ = ['__config']
24
24
  __config: Config
25
25
 
26
- def __init__(self, config: Config, datasource: DataSource = ena()) -> None:
26
+ def __init__(self, config: Config, datasource: DataSource = ena(), **kwargs) -> None:
27
27
  super().__init__()
28
28
  self.__config = config
29
29
  self._datasource = datasource
@@ -28,6 +28,7 @@ class EnaSubmittableValidator(Validator):
28
28
  self,
29
29
  config: Config,
30
30
  ena_datasource: DataSource | None = ena(), # For testing
31
+ **kwargs
31
32
  ) -> None:
32
33
 
33
34
  super().__init__()
@@ -24,6 +24,7 @@ class MinOneValidValueValidator(Validator):
24
24
  def __init__(
25
25
  self,
26
26
  config: Config,
27
+ **kwargs
27
28
  ) -> None:
28
29
 
29
30
  super().__init__()
@@ -62,7 +62,7 @@ class MutuallyExclusiveValidator(Validator, ConditionEvaluator):
62
62
  __first_list: List[Any]
63
63
  __second_list: List[Any]
64
64
 
65
- def __init__(self, config: Config) -> None:
65
+ def __init__(self, config: Config, **kwargs) -> None:
66
66
  super().__init__()
67
67
 
68
68
  self.__config = config
@@ -26,7 +26,10 @@ class Regex:
26
26
 
27
27
  def is_allowed(self, __v: Any) -> bool:
28
28
  # Check regex
29
- return re.search(self.regex, str(__v or ''))
29
+ return bool(re.search(
30
+ self.regex,
31
+ str(__v) if __v is not None else ''
32
+ ))
30
33
 
31
34
 
32
35
  class RegexValidator(Validator):
@@ -44,7 +47,8 @@ class RegexValidator(Validator):
44
47
 
45
48
  def __init__(
46
49
  self,
47
- config: Config
50
+ config: Config,
51
+ **kwargs
48
52
  ) -> None:
49
53
 
50
54
  super().__init__()
@@ -27,7 +27,8 @@ class RegexByValueValidator(Validator):
27
27
 
28
28
  def __init__(
29
29
  self,
30
- config: Config
30
+ config: Config,
31
+ **kwargs
31
32
  ) -> None:
32
33
 
33
34
  super().__init__()
@@ -25,7 +25,7 @@ class SpecimensHaveSameTaxonValidator(Validator):
25
25
  __config: Config
26
26
  __seen: Dict[str, str]
27
27
 
28
- def __init__(self, config: Config) -> None:
28
+ def __init__(self, config: Config, **kwargs) -> None:
29
29
  super().__init__()
30
30
  self.__seen = {}
31
31
  self.__config = config
@@ -28,6 +28,7 @@ class StsFieldsValidator(Validator):
28
28
  self,
29
29
  config: Config,
30
30
  datasource: DataSource = sts(), # For testing
31
+ **kwargs
31
32
  ) -> None:
32
33
 
33
34
  super().__init__()
@@ -34,6 +34,7 @@ class TolidValidator(Validator):
34
34
  self,
35
35
  config: Config,
36
36
  datasource=tolid(),
37
+ **kwargs
37
38
  ) -> None:
38
39
 
39
40
  super().__init__()
@@ -27,7 +27,8 @@ class UniqueValuesValidator(Validator):
27
27
 
28
28
  def __init__(
29
29
  self,
30
- config: Config
30
+ config: Config,
31
+ **kwargs
31
32
  ) -> None:
32
33
 
33
34
  super().__init__()
@@ -28,7 +28,7 @@ class UniqueWholeOrganismsValidator(Validator):
28
28
  __whole_organisms: List[str]
29
29
  __part_organisms: List[str]
30
30
 
31
- def __init__(self, config: Config) -> None:
31
+ def __init__(self, config: Config, **kwargs) -> None:
32
32
  super().__init__()
33
33
  self.__whole_organisms = []
34
34
  self.__part_organisms = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tol-sdk
3
- Version: 1.7.5b2
3
+ Version: 1.7.5b4
4
4
  Summary: SDK for interaction with ToL, Sanger and external services
5
5
  Author-email: ToL Platforms Team <tol-platforms@sanger.ac.uk>
6
6
  License: MIT
@@ -193,6 +193,7 @@ src/tol/flows/converters/labwhere_location_to_sts_tray_converter.py
193
193
  src/tol/flows/converters/mlwh_extraction_to_elastic_extraction_converter.py
194
194
  src/tol/flows/converters/mlwh_run_data_to_elastic_run_data_converter.py
195
195
  src/tol/flows/converters/mlwh_sequencing_request_to_elastic_sequencing_request_converter.py
196
+ src/tol/flows/converters/skip_null_fields_converter.py
196
197
  src/tol/flows/converters/sts_banked_sample_to_elastic_sample_converter.py
197
198
  src/tol/flows/converters/sts_manifest_to_elastic_manifest_converter.py
198
199
  src/tol/flows/converters/sts_project_to_elastic_sample_update_converter.py
@@ -330,6 +331,7 @@ src/tol/validators/allowed_keys.py
330
331
  src/tol/validators/allowed_values.py
331
332
  src/tol/validators/allowed_values_from_datasource.py
332
333
  src/tol/validators/assert_on_condition.py
334
+ src/tol/validators/converter_and_validate.py
333
335
  src/tol/validators/ena_checklist.py
334
336
  src/tol/validators/ena_submittable.py
335
337
  src/tol/validators/min_one_valid_value.py
File without changes
File without changes
File without changes
File without changes
File without changes