tol-sdk 1.8.7__tar.gz → 1.8.9__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 (374) hide show
  1. {tol_sdk-1.8.7/src/tol_sdk.egg-info → tol_sdk-1.8.9}/PKG-INFO +1 -1
  2. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/pyproject.toml +1 -1
  3. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/requested_fields.py +4 -5
  4. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/ena/ena_datasource.py +8 -3
  5. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/__init__.py +3 -2
  6. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/allowed_keys.py +1 -0
  7. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/allowed_values_from_datasource.py +1 -1
  8. tol_sdk-1.8.9/src/tol/validators/taxon_matches_goat.py +86 -0
  9. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/tolid.py +1 -1
  10. {tol_sdk-1.8.7 → tol_sdk-1.8.9/src/tol_sdk.egg-info}/PKG-INFO +1 -1
  11. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol_sdk.egg-info/SOURCES.txt +1 -0
  12. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/LICENSE +0 -0
  13. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/MANIFEST.in +0 -0
  14. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/README.md +0 -0
  15. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/setup.cfg +0 -0
  16. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/certs/cacert.pem +0 -0
  17. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/__init__.py +0 -0
  18. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/actions/__init__.py +0 -0
  19. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/actions/action.py +0 -0
  20. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/actions/upsert_action.py +0 -0
  21. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/__init__.py +0 -0
  22. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/action.py +0 -0
  23. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/auth/__init__.py +0 -0
  24. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/auth/abc/__init__.py +0 -0
  25. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/auth/abc/auth.py +0 -0
  26. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/auth/abc/authorisation.py +0 -0
  27. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/auth/asserts.py +0 -0
  28. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/auth/blueprint.py +0 -0
  29. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/auth/composite.py +0 -0
  30. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/auth/config.py +0 -0
  31. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/auth/error.py +0 -0
  32. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/blueprint.py +0 -0
  33. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/controller.py +0 -0
  34. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/data_upload.py +0 -0
  35. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/misc/__init__.py +0 -0
  36. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/misc/aggregation_body.py +0 -0
  37. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/misc/aggregation_parameters.py +0 -0
  38. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/misc/auth_context.py +0 -0
  39. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/misc/authenticate.py +0 -0
  40. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/misc/data_body.py +0 -0
  41. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/misc/filter_utils.py +0 -0
  42. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/misc/list_get_parameters.py +0 -0
  43. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/misc/relation_url.py +0 -0
  44. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/misc/stats_parameters.py +0 -0
  45. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/pipeline_steps.py +0 -0
  46. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_base/system.py +0 -0
  47. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_client/__init__.py +0 -0
  48. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_client/api_datasource.py +0 -0
  49. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_client/client.py +0 -0
  50. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_client/converter.py +0 -0
  51. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_client/exception.py +0 -0
  52. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_client/factory.py +0 -0
  53. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_client/filter.py +0 -0
  54. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_client/parser.py +0 -0
  55. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_client/validate.py +0 -0
  56. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/api_client/view.py +0 -0
  57. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/barcodes/__init__.py +0 -0
  58. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/barcodes/main.py +0 -0
  59. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/__init__.py +0 -0
  60. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/benchling_converter.py +0 -0
  61. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/benchling_datasource.py +0 -0
  62. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/benchling_warehouse_datasource.py +0 -0
  63. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/__init__.py +0 -0
  64. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/extraction_container_extraction_extraction_type_dna.sql +0 -0
  65. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/extraction_extraction_type_dna.sql +0 -0
  66. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/extraction_extraction_type_lres.sql +0 -0
  67. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/extraction_extraction_type_pooled_dna.sql +0 -0
  68. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/extraction_extraction_type_rna.sql +0 -0
  69. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/pacbio_prep.sql +0 -0
  70. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/pooled_pacbio_prep.sql +0 -0
  71. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/results_extraction_dna.sql +0 -0
  72. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/results_extraction_pooled.sql +0 -0
  73. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/results_extraction_rna.sql +0 -0
  74. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/results_pacbio_prep.sql +0 -0
  75. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/results_pacbio_prep_pooled.sql +0 -0
  76. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/sample.sql +0 -0
  77. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/sequencing_request_sequencing_platform_hic.sql +0 -0
  78. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/sequencing_request_sequencing_platform_pacbio.sql +0 -0
  79. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/sequencing_request_sequencing_platform_rnaseq.sql +0 -0
  80. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/sequencing_request_sequencing_platform_wgs.sql +0 -0
  81. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/benchling/sql/tissue_prep.sql +0 -0
  82. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/board/__init__.py +0 -0
  83. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/board/blueprint.py +0 -0
  84. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/bold/__init__.py +0 -0
  85. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/bold/bold_datasource.py +0 -0
  86. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/bold/client.py +0 -0
  87. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/bold/converter.py +0 -0
  88. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/bold/factory.py +0 -0
  89. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/bold/parser.py +0 -0
  90. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/cli/__init__.py +0 -0
  91. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/cli/cli.py +0 -0
  92. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/converter/__init__.py +0 -0
  93. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/converter/yaml/__init__.py +0 -0
  94. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/converter/yaml/model.py +0 -0
  95. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/converter/yaml/yaml_converter.py +0 -0
  96. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/copo/__init__.py +0 -0
  97. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/copo/client.py +0 -0
  98. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/copo/converter.py +0 -0
  99. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/copo/copo_datasource.py +0 -0
  100. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/copo/factory.py +0 -0
  101. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/copo/parser.py +0 -0
  102. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/__init__.py +0 -0
  103. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/attribute_metadata.py +0 -0
  104. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/core_converter.py +0 -0
  105. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/data_loader.py +0 -0
  106. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/data_object.py +0 -0
  107. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/data_object_converter.py +0 -0
  108. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/data_source_attribute_metadata.py +0 -0
  109. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/data_source_dict.py +0 -0
  110. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/datasource.py +0 -0
  111. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/datasource_error.py +0 -0
  112. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/datasource_filter.py +0 -0
  113. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/datasource_utils.py +0 -0
  114. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/factory.py +0 -0
  115. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/http_client.py +0 -0
  116. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/__init__.py +0 -0
  117. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/_filterable.py +0 -0
  118. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/_writer.py +0 -0
  119. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/aggregator.py +0 -0
  120. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/counter.py +0 -0
  121. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/cursor.py +0 -0
  122. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/declare.py +0 -0
  123. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/deleter.py +0 -0
  124. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/detail_getter.py +0 -0
  125. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/enricher.py +0 -0
  126. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/enum.py +0 -0
  127. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/group_statter.py +0 -0
  128. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/inserter.py +0 -0
  129. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/list_getter.py +0 -0
  130. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/operator_config.py +0 -0
  131. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/page_getter.py +0 -0
  132. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/relational.py +0 -0
  133. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/statter.py +0 -0
  134. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/summariser.py +0 -0
  135. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/updater.py +0 -0
  136. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/operator/upserter.py +0 -0
  137. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/relationship.py +0 -0
  138. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/session.py +0 -0
  139. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/core/validate.py +0 -0
  140. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/dummy/__init__.py +0 -0
  141. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/dummy/client.py +0 -0
  142. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/dummy/converter.py +0 -0
  143. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/dummy/dummy_datasource.py +0 -0
  144. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/dummy/factory.py +0 -0
  145. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/dummy/parser.py +0 -0
  146. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/elastic/__init__.py +0 -0
  147. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/elastic/elastic_datasource.py +0 -0
  148. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/elastic/runtime_fields.py +0 -0
  149. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/eln/__init__.py +0 -0
  150. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/eln/auth.py +0 -0
  151. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/eln/eln_datasource.py +0 -0
  152. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/eln/entities.py +0 -0
  153. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/eln/generators.py +0 -0
  154. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/eln/sanitise.py +0 -0
  155. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/ena/__init__.py +0 -0
  156. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/ena/client.py +0 -0
  157. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/ena/converter.py +0 -0
  158. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/ena/ena_methods.py +0 -0
  159. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/ena/factory.py +0 -0
  160. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/ena/filter.py +0 -0
  161. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/ena/parser.py +0 -0
  162. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/excel/__init__.py +0 -0
  163. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/excel/excel.py +0 -0
  164. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/excel/excel_datasource.py +0 -0
  165. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/excel/s3_factory.py +0 -0
  166. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/__init__.py +0 -0
  167. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/__init__.py +0 -0
  168. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/auto_detect_manifest_type_converter.py +0 -0
  169. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/benchling_entity_to_benchling_worklist_item_converter_factory.py +0 -0
  170. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/benchling_extraction_container_to_elastic_extraction_container_converter.py +0 -0
  171. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/benchling_extraction_to_elastic_extraction_converter.py +0 -0
  172. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/benchling_extraction_to_elastic_sequencing_request_converter.py +0 -0
  173. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/benchling_sample_casm_to_sts_sample_converter.py +0 -0
  174. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/benchling_sample_to_elastic_sample_converter.py +0 -0
  175. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/benchling_sequencing_request_to_elastic_sequencing_request_converter.py +0 -0
  176. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/benchling_tissue_prep_to_elastic_tissue_prep_converter.py +0 -0
  177. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/benchling_tissue_to_sts_sample_converter.py +0 -0
  178. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/bioscan_extra_pantheon_species_to_elastic_sample_update_converter.py +0 -0
  179. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/bioscan_image_to_elastic_sample_update_converter.py +0 -0
  180. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/bioscan_qc_specimen_to_elastic_sample_update_converter.py +0 -0
  181. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/bioscan_qc_uksi_entry_to_elastic_sample_update_converter.py +0 -0
  182. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/bold_bin_to_elastic_sample_update_converter.py +0 -0
  183. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/bold_sample_to_elastic_sample_update_converter.py +0 -0
  184. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/combine_fields_converter.py +0 -0
  185. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/default_field_value_if_missing_converter.py +0 -0
  186. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/elastic_object_to_portaldb_object_converter.py +0 -0
  187. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/elastic_sample_to_benchling_tissue_converter.py +0 -0
  188. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/elastic_sample_to_benchling_tissue_update_converter.py +0 -0
  189. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/elastic_sample_to_bold_sample_converter.py +0 -0
  190. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/elastic_sample_to_elastic_sequencing_request_update_converter.py +0 -0
  191. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/elastic_sample_to_sts_sample_converter.py +0 -0
  192. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/elastic_sequencing_request_to_elastic_run_data_update_converter.py +0 -0
  193. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/elastic_sequencing_request_to_sts_sequencing_request_converter.py +0 -0
  194. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/elastic_species_to_sts_species_converter.py +0 -0
  195. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/elastic_tolid_to_elastic_curation_update_converter.py +0 -0
  196. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/elastic_tolid_to_elastic_genome_note_update_converter.py +0 -0
  197. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/elastic_tolid_to_elastic_sample_update_converter.py +0 -0
  198. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/gap_assembly_to_elastic_assembly_analysis_converter.py +0 -0
  199. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/gap_assembly_to_elastic_assembly_converter.py +0 -0
  200. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/genome_notes_genome_note_to_elastic_genome_note_converter.py +0 -0
  201. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/goat_taxon_to_elastic_species_converter.py +0 -0
  202. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/grit_issue_to_elastic_curation_converter.py +0 -0
  203. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/incoming_sample_to_ena_sample_converter.py +0 -0
  204. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/incoming_sample_to_incoming_sample_with_lists_converter.py +0 -0
  205. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/informatics_tolid_to_elastic_tolid_converter.py +0 -0
  206. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/labwhere_location_to_elastic_sample_update_converter.py +0 -0
  207. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/labwhere_location_to_sts_tray_converter.py +0 -0
  208. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/mlwh_extraction_to_elastic_extraction_converter.py +0 -0
  209. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/mlwh_run_data_to_elastic_run_data_converter.py +0 -0
  210. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/mlwh_sequencing_request_to_elastic_sequencing_request_converter.py +0 -0
  211. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/prefix_field_converter.py +0 -0
  212. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/skip_null_fields_converter.py +0 -0
  213. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/sts_banked_sample_to_elastic_sample_converter.py +0 -0
  214. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/sts_manifest_to_elastic_manifest_converter.py +0 -0
  215. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/sts_project_to_elastic_sample_update_converter.py +0 -0
  216. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/sts_sample_project_to_elastic_sample_converter.py +0 -0
  217. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/sts_sample_to_casm_benchling_converter.py +0 -0
  218. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/sts_sampleset_to_elastic_sampleset_converter.py +0 -0
  219. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/sts_species_to_elastic_species_converter.py +0 -0
  220. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/time_string_to_time.py +0 -0
  221. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/tolid_specimen_to_elastic_tolid_converter.py +0 -0
  222. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/tolqc_data_to_elastic_run_data_converter.py +0 -0
  223. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/tolqc_sample_to_elastic_sequencing_request_converter.py +0 -0
  224. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/tolqc_species_to_elastic_species_converter.py +0 -0
  225. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/treeofsex_species_to_treeofsexwh_species_converter.py +0 -0
  226. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/converters/treeofsex_upload_to_treeofsex_attribute_converter.py +0 -0
  227. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/logger.py +0 -0
  228. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/secrets.py +0 -0
  229. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/flows/sequencing_submissions.py +0 -0
  230. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/gap/__init__.py +0 -0
  231. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/gap/gap_datasource.py +0 -0
  232. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/goat/__init__.py +0 -0
  233. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/goat/client.py +0 -0
  234. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/goat/converter.py +0 -0
  235. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/goat/factory.py +0 -0
  236. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/goat/filter.py +0 -0
  237. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/goat/goat_datasource.py +0 -0
  238. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/goat/parser.py +0 -0
  239. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/google_sheets/__init__.py +0 -0
  240. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/google_sheets/google_sheet_datasource.py +0 -0
  241. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/irods/__init__.py +0 -0
  242. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/irods/irods_datasource.py +0 -0
  243. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/jira/__init__.py +0 -0
  244. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/jira/client.py +0 -0
  245. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/jira/converter.py +0 -0
  246. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/jira/factory.py +0 -0
  247. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/jira/filter.py +0 -0
  248. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/jira/jira_datasource.py +0 -0
  249. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/jira/mapper.py +0 -0
  250. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/jira/parser.py +0 -0
  251. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/jira/sort.py +0 -0
  252. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/json/__init__.py +0 -0
  253. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/json/json_datasource.py +0 -0
  254. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/json/s3_json_datasource.py +0 -0
  255. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/labwhere/__init__.py +0 -0
  256. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/labwhere/client.py +0 -0
  257. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/labwhere/converter.py +0 -0
  258. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/labwhere/factory.py +0 -0
  259. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/labwhere/labwhere_datasource.py +0 -0
  260. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/labwhere/parser.py +0 -0
  261. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/markdown.py +0 -0
  262. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/mlwh/__init__.py +0 -0
  263. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/mlwh/mlwh_datasource.py +0 -0
  264. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/prefect/__init__.py +0 -0
  265. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/prefect/converter.py +0 -0
  266. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/prefect/factory.py +0 -0
  267. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/prefect/filter.py +0 -0
  268. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/prefect/prefect_datasource.py +0 -0
  269. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/prefect/prefect_object.py +0 -0
  270. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/s3/__init__.py +0 -0
  271. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/s3/converter.py +0 -0
  272. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/s3/factory.py +0 -0
  273. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/s3/parser.py +0 -0
  274. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/s3/s3_datasource.py +0 -0
  275. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sciops/__init__.py +0 -0
  276. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sciops/configuration.py +0 -0
  277. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sciops/consumer.py +0 -0
  278. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sciops/message_builder.py +0 -0
  279. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sciops/messages.py +0 -0
  280. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sciops/response_processors.py +0 -0
  281. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sciops/sequencing_datasource.py +0 -0
  282. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/services/__init__.py +0 -0
  283. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/services/s3_client.py +0 -0
  284. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/__init__.py +0 -0
  285. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/benchling.py +0 -0
  286. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/benchling_warehouse.py +0 -0
  287. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/bioscan.py +0 -0
  288. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/bioscan_extra.py +0 -0
  289. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/bioscan_image.py +0 -0
  290. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/bioscan_qc.py +0 -0
  291. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/bold.py +0 -0
  292. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/copo.py +0 -0
  293. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/defaults.py +0 -0
  294. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/dummy.py +0 -0
  295. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/elastic.py +0 -0
  296. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/ena.py +0 -0
  297. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/gap.py +0 -0
  298. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/genome_notes.py +0 -0
  299. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/goat.py +0 -0
  300. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/grit.py +0 -0
  301. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/informatics.py +0 -0
  302. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/labwhere.py +0 -0
  303. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/mlwh.py +0 -0
  304. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/portal.py +0 -0
  305. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/portal_attributes.py +0 -0
  306. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/portaldb.py +0 -0
  307. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/prefect.py +0 -0
  308. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/sciops.py +0 -0
  309. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/sts.py +0 -0
  310. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/sts_legacy.py +0 -0
  311. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/tolid.py +0 -0
  312. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/tolqc.py +0 -0
  313. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/tolqc_legacy.py +0 -0
  314. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/treeofsex.py +0 -0
  315. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/uksi_qc.py.py +0 -0
  316. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sources/workflows.py +0 -0
  317. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/__init__.py +0 -0
  318. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/action/__init__.py +0 -0
  319. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/action/factory.py +0 -0
  320. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/auth/__init__.py +0 -0
  321. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/auth/blueprint.py +0 -0
  322. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/auth/models.py +0 -0
  323. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/cast.py +0 -0
  324. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/database.py +0 -0
  325. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/ds_session.py +0 -0
  326. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/exception.py +0 -0
  327. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/ext.py +0 -0
  328. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/factory.py +0 -0
  329. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/filter.py +0 -0
  330. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/model.py +0 -0
  331. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/pipeline_step/__init__.py +0 -0
  332. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/pipeline_step/factory.py +0 -0
  333. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/relationship.py +0 -0
  334. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/session.py +0 -0
  335. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/sort.py +0 -0
  336. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/sql_converter.py +0 -0
  337. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/sql_datasource.py +0 -0
  338. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/standard/__init__.py +0 -0
  339. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sql/standard/factory.py +0 -0
  340. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/status/__init__.py +0 -0
  341. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/status/status_datasource.py +0 -0
  342. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sts/__init__.py +0 -0
  343. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sts/sts.py +0 -0
  344. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sts/sts_datasource.py +0 -0
  345. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/sts/sts_requests.py +0 -0
  346. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/treeval/__init__.py +0 -0
  347. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/treeval/treeval_datasource.py +0 -0
  348. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/utils/__init__.py +0 -0
  349. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/utils/csv.py +0 -0
  350. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/utils/s3.py +0 -0
  351. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/allowed_values.py +0 -0
  352. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/assert_on_condition.py +0 -0
  353. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/branching.py +0 -0
  354. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/converter_and_validate.py +0 -0
  355. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/date_sorting.py +0 -0
  356. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/ena_checklist.py +0 -0
  357. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/ena_submittable.py +0 -0
  358. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/interfaces/__init__.py +0 -0
  359. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/interfaces/condition_evaluator.py +0 -0
  360. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/min_one_valid_value.py +0 -0
  361. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/mutually_exclusive.py +0 -0
  362. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/regex.py +0 -0
  363. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/regex_by_value.py +0 -0
  364. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/specimens_have_same_taxon.py +0 -0
  365. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/sts_fields.py +0 -0
  366. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/types.py +0 -0
  367. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/unique_value_check.py +0 -0
  368. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/unique_values.py +0 -0
  369. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/unique_whole_organisms.py +0 -0
  370. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol/validators/value_check.py +0 -0
  371. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol_sdk.egg-info/dependency_links.txt +0 -0
  372. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol_sdk.egg-info/entry_points.txt +0 -0
  373. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/src/tol_sdk.egg-info/requires.txt +0 -0
  374. {tol_sdk-1.8.7 → tol_sdk-1.8.9}/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.8.7
3
+ Version: 1.8.9
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.8.7"
11
+ version = "1.8.9"
12
12
  description = "SDK for interaction with ToL, Sanger and external services"
13
13
  readme = "README.md"
14
14
  authors = [
@@ -17,18 +17,17 @@ def requested_fields_to_tree(func):
17
17
  `requested_tree` object has not been given.
18
18
  """
19
19
 
20
- def wrapper(self, tablename, *args, **kwargs):
20
+ def wrapper(self, object_type, *args, **kwargs):
21
21
  if 'requested_fields' in kwargs:
22
22
  if 'requested_tree' in kwargs:
23
23
  msg = 'Both requested_fields and requested_tree arguments given'
24
24
  raise TypeError(msg)
25
25
  flds = kwargs.pop('requested_fields')
26
- if flds and tablename:
26
+ if flds and object_type:
27
27
  kwargs['requested_tree'] = ReqFieldsTree(
28
- tablename, self, requested_fields=flds
28
+ object_type, self, requested_fields=flds
29
29
  )
30
- return func(self, tablename, *args, **kwargs)
31
-
30
+ return func(self, object_type, *args, **kwargs)
32
31
  return wrapper
33
32
 
34
33
 
@@ -11,6 +11,7 @@ from cachetools.func import ttl_cache
11
11
 
12
12
  import requests
13
13
  from requests.auth import HTTPBasicAuth
14
+ from requests.exceptions import HTTPError
14
15
 
15
16
 
16
17
  from .client import EnaApiClient
@@ -118,9 +119,13 @@ class EnaDataSource(
118
119
  if object_type == 'submittable_taxon':
119
120
  ena_response = []
120
121
  for object_id in object_ids:
121
- response = client.get_detail(object_type, [object_id])
122
- if response and isinstance(response, list):
123
- ena_response.extend(response)
122
+ try:
123
+ response = client.get_detail(object_type, [object_id])
124
+ if response and isinstance(response, list):
125
+ ena_response.extend(response)
126
+ except HTTPError as http_error:
127
+ if http_error.response.status_code != 400:
128
+ raise
124
129
  else:
125
130
  ena_response = client.get_detail(object_type, object_ids)
126
131
  # For a checklist we need to convert into a list of dicts
@@ -19,8 +19,9 @@ from .types import TypesValidator # noqa
19
19
  from .unique_values import UniqueValuesValidator # noqa
20
20
  from .unique_whole_organisms import UniqueWholeOrganismsValidator # noqa
21
21
  from .interfaces import Condition # noqa
22
- from .min_one_valid_value import MinOneValidValueValidator # noqa
22
+ from .min_one_valid_value import MinOneValidValueValidator # noqa
23
23
  from .value_check import ValueCheckValidator # noqa
24
24
  from .branching import BranchingValidator # noqa
25
25
  from .unique_value_check import UniqueValueCheckValidator # noqa
26
- from .date_sorting import DateSortingValidator # noqa
26
+ from .date_sorting import DateSortingValidator # noqa
27
+ from .taxon_matches_goat import TaxonMatchesGoatValidator # noqa
@@ -30,6 +30,7 @@ class AllowedKeysValidator(Validator):
30
30
  **kwargs
31
31
  ) -> None:
32
32
 
33
+ del kwargs
33
34
  super().__init__()
34
35
  self.__config = config
35
36
 
@@ -46,7 +46,7 @@ class AllowedValuesFromDataSourceValidator(Validator):
46
46
  obj.get_field_by_name(
47
47
  self.__config.datasource_field_name
48
48
  ) for obj in ds.get_list(
49
- object_type=self.__config.datasource_object_type
49
+ self.__config.datasource_object_type
50
50
  )
51
51
  ]
52
52
 
@@ -0,0 +1,86 @@
1
+ # SPDX-FileCopyrightText: 2026 Genome Research Ltd.
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+
5
+ from dataclasses import dataclass
6
+
7
+ from tol.core import DataObject, Validator
8
+ from tol.sources.goat import GoatDataSource, goat
9
+
10
+
11
+ class TaxonMatchesGoatValidator(Validator):
12
+ """
13
+ Validates a stream of `DataObject` instances, checking whether its Taxonomy information
14
+ matches that in GoaT
15
+ """
16
+ @dataclass(slots=True, frozen=True, kw_only=True)
17
+ class Config:
18
+ species_field: str | None = None
19
+ genus_field: str | None = None
20
+ family_field: str | None = None
21
+ superfamily_field: str | None = None
22
+ phylum_field: str | None = None
23
+ kingdom_field: str | None = None
24
+ superkingdom_field: str | None = None
25
+ domain_field: str | None = None
26
+
27
+ __slots__ = ['__config', '__goat_datasource', '_cached_taxa']
28
+ __config: Config
29
+ __goat_datasource: GoatDataSource
30
+ _cached_taxa: dict[str, DataObject]
31
+
32
+ def __init__(self, config: Config) -> None:
33
+ super().__init__()
34
+ self.__config = config
35
+ self.__goat_datasource = goat()
36
+ self._cached_taxa = {}
37
+
38
+ def _validate_data_object(self, obj: DataObject) -> None:
39
+ taxon_id = obj.get_field_by_name('TAXON_ID')
40
+
41
+ # Check whether we already have the information for this id in the cache.
42
+ # If we don't, fetch it from GoaT and add it to the cache
43
+ taxon: DataObject | None
44
+ if taxon_id in self._cached_taxa:
45
+ taxon = self._cached_taxa[taxon_id]
46
+ else:
47
+ taxon = self.__goat_datasource.get_one('taxon', taxon_id)
48
+
49
+ # Add this taxon to cached taxa.
50
+ # Error if GoaT has no taxon with this id
51
+ if taxon is not None:
52
+ self._cached_taxa[taxon_id] = taxon
53
+ else:
54
+ self.add_error(
55
+ object_id=obj.id,
56
+ detail=f'Invalid Taxon ID: {taxon_id}',
57
+ field='taxon_id'
58
+ )
59
+
60
+ # We can't validate a taxon that doesn't exist, so after this error move on
61
+ # to the next DataObject
62
+ return
63
+
64
+ # Check that each associated taxonomy rank for this taxon matches those in GoaT
65
+ taxonomic_ranks = ('species', 'genus', 'family', 'superfamily',
66
+ 'phylum', 'kingdom', 'superkingdom', 'domain')
67
+ for rank in taxonomic_ranks:
68
+ # From the rank to check, get the name of its field in the data object we're validating
69
+ # from the validator config. If this field name is `None`, then this taxonomic rank
70
+ # isn't being checked (likely because the data object does not have this field)
71
+ field_name: str | None = getattr(self.__config, f'{rank}_field')
72
+ if field_name is None:
73
+ continue
74
+
75
+ # Fetch the values of these taxonomic ranks
76
+ value_in_data_object = obj.get_field_by_name(field_name)
77
+ value_in_goat = taxon.get_field_by_name(f'{rank}.scientific_name')
78
+
79
+ # Ensure the value in the data object matches the one in GoaT
80
+ if value_in_data_object != value_in_goat:
81
+ self.add_warning(
82
+ object_id=obj.id,
83
+ detail=(f'Value for {field_name} ({value_in_data_object}) '
84
+ f'does not match the value in GoaT ({value_in_goat})'),
85
+ field=field_name,
86
+ )
@@ -90,7 +90,7 @@ class TolidValidator(Validator):
90
90
  f = DataSourceFilter()
91
91
  f.and_ = {'specimen_id': {'eq': {'value': specimen_id}}}
92
92
  self.__cached_tolids[specimen_id] = list(self.__datasource.get_list(
93
- object_type='specimen',
93
+ 'specimen',
94
94
  object_filters=f
95
95
  ))
96
96
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tol-sdk
3
- Version: 1.8.7
3
+ Version: 1.8.9
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
@@ -356,6 +356,7 @@ src/tol/validators/regex.py
356
356
  src/tol/validators/regex_by_value.py
357
357
  src/tol/validators/specimens_have_same_taxon.py
358
358
  src/tol/validators/sts_fields.py
359
+ src/tol/validators/taxon_matches_goat.py
359
360
  src/tol/validators/tolid.py
360
361
  src/tol/validators/types.py
361
362
  src/tol/validators/unique_value_check.py
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes