tol-sdk 1.8.1__tar.gz → 1.8.3__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 (359) hide show
  1. {tol_sdk-1.8.1/src/tol_sdk.egg-info → tol_sdk-1.8.3}/PKG-INFO +1 -1
  2. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/pyproject.toml +1 -1
  3. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/__init__.py +1 -0
  4. tol_sdk-1.8.3/src/tol/flows/converters/auto_detect_manifest_type_converter.py +46 -0
  5. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/pipeline_step/factory.py +20 -5
  6. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/__init__.py +2 -0
  7. tol_sdk-1.8.3/src/tol/validators/unique_value_check.py +41 -0
  8. tol_sdk-1.8.3/src/tol/validators/value_check.py +36 -0
  9. {tol_sdk-1.8.1 → tol_sdk-1.8.3/src/tol_sdk.egg-info}/PKG-INFO +1 -1
  10. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol_sdk.egg-info/SOURCES.txt +3 -0
  11. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/LICENSE +0 -0
  12. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/MANIFEST.in +0 -0
  13. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/README.md +0 -0
  14. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/setup.cfg +0 -0
  15. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/certs/cacert.pem +0 -0
  16. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/__init__.py +0 -0
  17. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/actions/__init__.py +0 -0
  18. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/actions/action.py +0 -0
  19. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/actions/upsert_action.py +0 -0
  20. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/__init__.py +0 -0
  21. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/action.py +0 -0
  22. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/auth/__init__.py +0 -0
  23. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/auth/abc/__init__.py +0 -0
  24. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/auth/abc/auth.py +0 -0
  25. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/auth/abc/authorisation.py +0 -0
  26. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/auth/asserts.py +0 -0
  27. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/auth/blueprint.py +0 -0
  28. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/auth/composite.py +0 -0
  29. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/auth/config.py +0 -0
  30. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/auth/error.py +0 -0
  31. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/blueprint.py +0 -0
  32. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/controller.py +0 -0
  33. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/data_upload.py +0 -0
  34. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/misc/__init__.py +0 -0
  35. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/misc/aggregation_body.py +0 -0
  36. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/misc/aggregation_parameters.py +0 -0
  37. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/misc/auth_context.py +0 -0
  38. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/misc/authenticate.py +0 -0
  39. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/misc/data_body.py +0 -0
  40. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/misc/filter_utils.py +0 -0
  41. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/misc/list_get_parameters.py +0 -0
  42. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/misc/relation_url.py +0 -0
  43. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/misc/stats_parameters.py +0 -0
  44. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/pipeline_steps.py +0 -0
  45. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_base/system.py +0 -0
  46. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_client/__init__.py +0 -0
  47. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_client/api_datasource.py +0 -0
  48. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_client/client.py +0 -0
  49. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_client/converter.py +0 -0
  50. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_client/exception.py +0 -0
  51. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_client/factory.py +0 -0
  52. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_client/filter.py +0 -0
  53. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_client/parser.py +0 -0
  54. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_client/validate.py +0 -0
  55. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/api_client/view.py +0 -0
  56. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/barcodes/__init__.py +0 -0
  57. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/barcodes/main.py +0 -0
  58. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/__init__.py +0 -0
  59. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/benchling_converter.py +0 -0
  60. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/benchling_datasource.py +0 -0
  61. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/benchling_warehouse_datasource.py +0 -0
  62. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/__init__.py +0 -0
  63. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/extraction_containers_dna.sql +0 -0
  64. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/extraction_extraction_type_dna.sql +0 -0
  65. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/extraction_extraction_type_lres.sql +0 -0
  66. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/extraction_extraction_type_pooled_dna.sql +0 -0
  67. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/extraction_extraction_type_rna.sql +0 -0
  68. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/pacbio_prep.sql +0 -0
  69. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/pooled_pacbio_prep.sql +0 -0
  70. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/results_extraction_dna.sql +0 -0
  71. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/results_extraction_pooled.sql +0 -0
  72. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/results_extraction_rna.sql +0 -0
  73. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/results_pacbio_prep.sql +0 -0
  74. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/results_pacbio_prep_pooled.sql +0 -0
  75. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/sample.sql +0 -0
  76. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/sequencing_request_sequencing_platform_hic.sql +0 -0
  77. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/sequencing_request_sequencing_platform_pacbio.sql +0 -0
  78. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/sequencing_request_sequencing_platform_rnaseq.sql +0 -0
  79. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/sequencing_request_sequencing_platform_wgs.sql +0 -0
  80. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/benchling/sql/tissue_prep.sql +0 -0
  81. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/board/__init__.py +0 -0
  82. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/board/blueprint.py +0 -0
  83. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/bold/__init__.py +0 -0
  84. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/bold/bold_datasource.py +0 -0
  85. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/bold/client.py +0 -0
  86. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/bold/converter.py +0 -0
  87. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/bold/factory.py +0 -0
  88. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/bold/parser.py +0 -0
  89. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/cli/__init__.py +0 -0
  90. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/cli/cli.py +0 -0
  91. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/converter/__init__.py +0 -0
  92. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/converter/yaml/__init__.py +0 -0
  93. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/converter/yaml/model.py +0 -0
  94. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/converter/yaml/yaml_converter.py +0 -0
  95. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/copo/__init__.py +0 -0
  96. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/copo/client.py +0 -0
  97. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/copo/converter.py +0 -0
  98. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/copo/copo_datasource.py +0 -0
  99. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/copo/factory.py +0 -0
  100. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/copo/parser.py +0 -0
  101. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/__init__.py +0 -0
  102. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/attribute_metadata.py +0 -0
  103. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/core_converter.py +0 -0
  104. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/data_loader.py +0 -0
  105. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/data_object.py +0 -0
  106. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/data_object_converter.py +0 -0
  107. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/data_source_attribute_metadata.py +0 -0
  108. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/data_source_dict.py +0 -0
  109. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/datasource.py +0 -0
  110. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/datasource_error.py +0 -0
  111. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/datasource_filter.py +0 -0
  112. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/datasource_utils.py +0 -0
  113. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/factory.py +0 -0
  114. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/http_client.py +0 -0
  115. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/__init__.py +0 -0
  116. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/_filterable.py +0 -0
  117. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/_writer.py +0 -0
  118. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/aggregator.py +0 -0
  119. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/counter.py +0 -0
  120. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/cursor.py +0 -0
  121. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/declare.py +0 -0
  122. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/deleter.py +0 -0
  123. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/detail_getter.py +0 -0
  124. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/enricher.py +0 -0
  125. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/enum.py +0 -0
  126. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/group_statter.py +0 -0
  127. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/inserter.py +0 -0
  128. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/list_getter.py +0 -0
  129. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/operator_config.py +0 -0
  130. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/page_getter.py +0 -0
  131. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/relational.py +0 -0
  132. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/statter.py +0 -0
  133. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/summariser.py +0 -0
  134. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/updater.py +0 -0
  135. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/operator/upserter.py +0 -0
  136. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/relationship.py +0 -0
  137. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/requested_fields.py +0 -0
  138. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/session.py +0 -0
  139. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/core/validate.py +0 -0
  140. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/elastic/__init__.py +0 -0
  141. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/elastic/elastic_datasource.py +0 -0
  142. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/elastic/runtime_fields.py +0 -0
  143. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/eln/__init__.py +0 -0
  144. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/eln/auth.py +0 -0
  145. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/eln/eln_datasource.py +0 -0
  146. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/eln/entities.py +0 -0
  147. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/eln/generators.py +0 -0
  148. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/eln/sanitise.py +0 -0
  149. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/ena/__init__.py +0 -0
  150. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/ena/client.py +0 -0
  151. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/ena/converter.py +0 -0
  152. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/ena/ena_datasource.py +0 -0
  153. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/ena/ena_methods.py +0 -0
  154. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/ena/factory.py +0 -0
  155. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/ena/filter.py +0 -0
  156. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/ena/parser.py +0 -0
  157. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/excel/__init__.py +0 -0
  158. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/excel/excel.py +0 -0
  159. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/excel/excel_datasource.py +0 -0
  160. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/excel/s3_factory.py +0 -0
  161. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/__init__.py +0 -0
  162. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/benchling_entity_to_benchling_worklist_item_converter_factory.py +0 -0
  163. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/benchling_extraction_to_elastic_extraction_converter.py +0 -0
  164. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/benchling_extraction_to_elastic_sequencing_request_converter.py +0 -0
  165. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/benchling_sample_casm_to_sts_sample_converter.py +0 -0
  166. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/benchling_sample_to_elastic_sample_converter.py +0 -0
  167. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/benchling_sequencing_request_to_elastic_sequencing_request_converter.py +0 -0
  168. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/benchling_tissue_prep_to_elastic_tissue_prep_converter.py +0 -0
  169. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/benchling_tissue_to_sts_sample_converter.py +0 -0
  170. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/bioscan_extra_pantheon_species_to_elastic_sample_update_converter.py +0 -0
  171. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/bioscan_image_to_elastic_sample_update_converter.py +0 -0
  172. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/bioscan_qc_specimen_to_elastic_sample_update_converter.py +0 -0
  173. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/bioscan_qc_uksi_entry_to_elastic_sample_update_converter.py +0 -0
  174. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/bold_bin_to_elastic_sample_update_converter.py +0 -0
  175. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/bold_sample_to_elastic_sample_update_converter.py +0 -0
  176. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/elastic_object_to_portaldb_object_converter.py +0 -0
  177. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/elastic_sample_to_benchling_tissue_converter.py +0 -0
  178. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/elastic_sample_to_benchling_tissue_update_converter.py +0 -0
  179. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/elastic_sample_to_bold_sample_converter.py +0 -0
  180. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/elastic_sample_to_elastic_sequencing_request_update_converter.py +0 -0
  181. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/elastic_sample_to_sts_sample_converter.py +0 -0
  182. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/elastic_sequencing_request_to_elastic_run_data_update_converter.py +0 -0
  183. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/elastic_sequencing_request_to_sts_sequencing_request_converter.py +0 -0
  184. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/elastic_species_to_sts_species_converter.py +0 -0
  185. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/elastic_tolid_to_elastic_curation_update_converter.py +0 -0
  186. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/elastic_tolid_to_elastic_genome_note_update_converter.py +0 -0
  187. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/elastic_tolid_to_elastic_sample_update_converter.py +0 -0
  188. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/gap_assembly_to_elastic_assembly_analysis_converter.py +0 -0
  189. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/gap_assembly_to_elastic_assembly_converter.py +0 -0
  190. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/genome_notes_genome_note_to_elastic_genome_note_converter.py +0 -0
  191. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/goat_taxon_to_elastic_species_converter.py +0 -0
  192. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/grit_issue_to_elastic_curation_converter.py +0 -0
  193. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/incoming_sample_to_ena_sample_converter.py +0 -0
  194. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/incoming_sample_to_incoming_sample_with_lists_converter.py +0 -0
  195. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/informatics_tolid_to_elastic_tolid_converter.py +0 -0
  196. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/labwhere_location_to_elastic_sample_update_converter.py +0 -0
  197. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/labwhere_location_to_sts_tray_converter.py +0 -0
  198. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/mlwh_extraction_to_elastic_extraction_converter.py +0 -0
  199. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/mlwh_run_data_to_elastic_run_data_converter.py +0 -0
  200. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/mlwh_sequencing_request_to_elastic_sequencing_request_converter.py +0 -0
  201. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/skip_null_fields_converter.py +0 -0
  202. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/sts_banked_sample_to_elastic_sample_converter.py +0 -0
  203. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/sts_manifest_to_elastic_manifest_converter.py +0 -0
  204. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/sts_project_to_elastic_sample_update_converter.py +0 -0
  205. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/sts_sample_project_to_elastic_sample_converter.py +0 -0
  206. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/sts_sample_to_casm_benchling_converter.py +0 -0
  207. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/sts_sampleset_to_elastic_sampleset_converter.py +0 -0
  208. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/sts_species_to_elastic_species_converter.py +0 -0
  209. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/tolid_specimen_to_elastic_tolid_converter.py +0 -0
  210. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/tolqc_data_to_elastic_run_data_converter.py +0 -0
  211. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/tolqc_sample_to_elastic_sequencing_request_converter.py +0 -0
  212. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/tolqc_species_to_elastic_species_converter.py +0 -0
  213. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/treeofsex_species_to_treeofsexwh_species_converter.py +0 -0
  214. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/converters/treeofsex_upload_to_treeofsex_attribute_converter.py +0 -0
  215. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/logger.py +0 -0
  216. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/secrets.py +0 -0
  217. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/flows/sequencing_submissions.py +0 -0
  218. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/gap/__init__.py +0 -0
  219. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/gap/gap_datasource.py +0 -0
  220. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/goat/__init__.py +0 -0
  221. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/goat/client.py +0 -0
  222. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/goat/converter.py +0 -0
  223. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/goat/factory.py +0 -0
  224. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/goat/filter.py +0 -0
  225. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/goat/goat_datasource.py +0 -0
  226. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/goat/parser.py +0 -0
  227. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/google_sheets/__init__.py +0 -0
  228. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/google_sheets/google_sheet_datasource.py +0 -0
  229. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/irods/__init__.py +0 -0
  230. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/irods/irods_datasource.py +0 -0
  231. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/jira/__init__.py +0 -0
  232. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/jira/client.py +0 -0
  233. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/jira/converter.py +0 -0
  234. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/jira/factory.py +0 -0
  235. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/jira/filter.py +0 -0
  236. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/jira/jira_datasource.py +0 -0
  237. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/jira/mapper.py +0 -0
  238. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/jira/parser.py +0 -0
  239. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/jira/sort.py +0 -0
  240. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/json/__init__.py +0 -0
  241. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/json/json_datasource.py +0 -0
  242. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/json/s3_json_datasource.py +0 -0
  243. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/labwhere/__init__.py +0 -0
  244. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/labwhere/client.py +0 -0
  245. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/labwhere/converter.py +0 -0
  246. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/labwhere/factory.py +0 -0
  247. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/labwhere/labwhere_datasource.py +0 -0
  248. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/labwhere/parser.py +0 -0
  249. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/markdown.py +0 -0
  250. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/mlwh/__init__.py +0 -0
  251. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/mlwh/mlwh_datasource.py +0 -0
  252. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/prefect/__init__.py +0 -0
  253. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/prefect/converter.py +0 -0
  254. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/prefect/factory.py +0 -0
  255. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/prefect/filter.py +0 -0
  256. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/prefect/prefect_datasource.py +0 -0
  257. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/prefect/prefect_object.py +0 -0
  258. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/s3/__init__.py +0 -0
  259. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/s3/converter.py +0 -0
  260. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/s3/factory.py +0 -0
  261. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/s3/parser.py +0 -0
  262. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/s3/s3_datasource.py +0 -0
  263. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sciops/__init__.py +0 -0
  264. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sciops/configuration.py +0 -0
  265. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sciops/consumer.py +0 -0
  266. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sciops/message_builder.py +0 -0
  267. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sciops/messages.py +0 -0
  268. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sciops/response_processors.py +0 -0
  269. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sciops/sequencing_datasource.py +0 -0
  270. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/services/__init__.py +0 -0
  271. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/services/s3_client.py +0 -0
  272. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/__init__.py +0 -0
  273. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/benchling.py +0 -0
  274. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/benchling_warehouse.py +0 -0
  275. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/bioscan.py +0 -0
  276. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/bioscan_extra.py +0 -0
  277. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/bioscan_image.py +0 -0
  278. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/bioscan_qc.py +0 -0
  279. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/bold.py +0 -0
  280. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/copo.py +0 -0
  281. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/defaults.py +0 -0
  282. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/elastic.py +0 -0
  283. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/ena.py +0 -0
  284. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/gap.py +0 -0
  285. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/genome_notes.py +0 -0
  286. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/goat.py +0 -0
  287. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/grit.py +0 -0
  288. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/informatics.py +0 -0
  289. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/labwhere.py +0 -0
  290. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/mlwh.py +0 -0
  291. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/portal.py +0 -0
  292. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/portal_attributes.py +0 -0
  293. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/portaldb.py +0 -0
  294. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/prefect.py +0 -0
  295. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/sciops.py +0 -0
  296. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/sts.py +0 -0
  297. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/sts_legacy.py +0 -0
  298. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/tolid.py +0 -0
  299. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/tolqc.py +0 -0
  300. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/tolqc_legacy.py +0 -0
  301. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/treeofsex.py +0 -0
  302. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/uksi_qc.py.py +0 -0
  303. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sources/workflows.py +0 -0
  304. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/__init__.py +0 -0
  305. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/action/__init__.py +0 -0
  306. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/action/factory.py +0 -0
  307. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/auth/__init__.py +0 -0
  308. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/auth/blueprint.py +0 -0
  309. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/auth/models.py +0 -0
  310. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/cast.py +0 -0
  311. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/database.py +0 -0
  312. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/ds_session.py +0 -0
  313. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/exception.py +0 -0
  314. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/ext.py +0 -0
  315. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/factory.py +0 -0
  316. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/filter.py +0 -0
  317. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/model.py +0 -0
  318. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/pipeline_step/__init__.py +0 -0
  319. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/relationship.py +0 -0
  320. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/session.py +0 -0
  321. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/sort.py +0 -0
  322. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/sql_converter.py +0 -0
  323. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/sql_datasource.py +0 -0
  324. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/standard/__init__.py +0 -0
  325. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sql/standard/factory.py +0 -0
  326. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/status/__init__.py +0 -0
  327. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/status/status_datasource.py +0 -0
  328. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sts/__init__.py +0 -0
  329. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sts/sts.py +0 -0
  330. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sts/sts_datasource.py +0 -0
  331. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/sts/sts_requests.py +0 -0
  332. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/treeval/__init__.py +0 -0
  333. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/treeval/treeval_datasource.py +0 -0
  334. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/utils/__init__.py +0 -0
  335. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/utils/csv.py +0 -0
  336. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/utils/s3.py +0 -0
  337. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/allowed_keys.py +0 -0
  338. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/allowed_values.py +0 -0
  339. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/allowed_values_from_datasource.py +0 -0
  340. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/assert_on_condition.py +0 -0
  341. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/converter_and_validate.py +0 -0
  342. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/ena_checklist.py +0 -0
  343. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/ena_submittable.py +0 -0
  344. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/interfaces/__init__.py +0 -0
  345. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/interfaces/condition_evaluator.py +0 -0
  346. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/min_one_valid_value.py +0 -0
  347. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/mutually_exclusive.py +0 -0
  348. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/regex.py +0 -0
  349. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/regex_by_value.py +0 -0
  350. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/specimens_have_same_taxon.py +0 -0
  351. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/sts_fields.py +0 -0
  352. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/tolid.py +0 -0
  353. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/types.py +0 -0
  354. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/unique_values.py +0 -0
  355. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol/validators/unique_whole_organisms.py +0 -0
  356. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol_sdk.egg-info/dependency_links.txt +0 -0
  357. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol_sdk.egg-info/entry_points.txt +0 -0
  358. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/src/tol_sdk.egg-info/requires.txt +0 -0
  359. {tol_sdk-1.8.1 → tol_sdk-1.8.3}/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.1
3
+ Version: 1.8.3
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.1"
11
+ version = "1.8.3"
12
12
  description = "SDK for interaction with ToL, Sanger and external services"
13
13
  readme = "README.md"
14
14
  authors = [
@@ -56,3 +56,4 @@ from .sts_sample_to_casm_benchling_converter import StsSampleToCasmBenchlingConv
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
58
  from .skip_null_fields_converter import SkipNullFieldsConverter # noqa F401
59
+ from .auto_detect_manifest_type_converter import AutoDetectManifestTypeConverter # noqa F401
@@ -0,0 +1,46 @@
1
+ # SPDX-FileCopyrightText: 2025 Genome Research Ltd.
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ import re
5
+ from dataclasses import dataclass
6
+ from typing import Iterable
7
+
8
+ from tol.core import DataObject, DataObjectToDataObjectOrUpdateConverter
9
+
10
+
11
+ class AutoDetectManifestTypeConverter(DataObjectToDataObjectOrUpdateConverter):
12
+
13
+ @dataclass(slots=True, frozen=True, kw_only=True)
14
+ class Config:
15
+ rack_or_plate: str
16
+
17
+ __slots__ = ['__config']
18
+ __config: Config
19
+
20
+ def __init__(self, data_object_factory, config: Config) -> None:
21
+ super().__init__(data_object_factory)
22
+ self.__config = config
23
+ self._data_object_factory = data_object_factory
24
+
25
+ def convert(self, data_object: DataObject) -> Iterable[DataObject]:
26
+ """
27
+ converting the samples DataObject into ENA format
28
+ """
29
+ s = data_object
30
+ attributes = {}
31
+ rack_or_plate_based_manifest = bool(
32
+ re.fullmatch(r'^[A-P][12]?[0-9]$',
33
+ s.attributes.get(self.__config.rack_or_plate))
34
+ )
35
+
36
+ if rack_or_plate_based_manifest:
37
+ attributes['manifest_type'] = 'PLATE_WELL'
38
+ else:
39
+ attributes['manifest_type'] = 'RACK_TUBE'
40
+
41
+ ret = self._data_object_factory(
42
+ data_object.type,
43
+ s.id,
44
+ attributes=attributes,
45
+ )
46
+ yield ret
@@ -9,7 +9,7 @@ from dataclasses import dataclass
9
9
  from datetime import datetime
10
10
  from typing import Any, Dict, Iterator, List
11
11
 
12
- from sqlalchemy import ForeignKey, UniqueConstraint
12
+ from sqlalchemy import ForeignKey, Text, UniqueConstraint
13
13
  from sqlalchemy.dialects.postgresql import JSONB
14
14
  from sqlalchemy.orm import (
15
15
  Mapped,
@@ -64,7 +64,7 @@ def create_pipeline_step_models(
64
64
  class Pipeline(base_model_class):
65
65
  __tablename__ = 'pipeline'
66
66
 
67
- id: Mapped[int] = mapped_column( # noqa A003
67
+ id: Mapped[int] = mapped_column( # noqa A003
68
68
  primary_key=True,
69
69
  autoincrement=True
70
70
  )
@@ -100,7 +100,7 @@ def create_pipeline_step_models(
100
100
  ),
101
101
  )
102
102
 
103
- id: Mapped[int] = mapped_column( # noqa A003
103
+ id: Mapped[int] = mapped_column( # noqa A003
104
104
  primary_key=True,
105
105
  autoincrement=True
106
106
  )
@@ -121,6 +121,16 @@ def create_pipeline_step_models(
121
121
  nullable=False
122
122
  )
123
123
 
124
+ description: Mapped[str | None] = mapped_column(
125
+ Text,
126
+ nullable=True
127
+ )
128
+
129
+ is_visible: Mapped[bool] = mapped_column(
130
+ nullable=False,
131
+ default=True
132
+ )
133
+
124
134
  config: Mapped[dict[str, Any]] = mapped_column(
125
135
  JSONB,
126
136
  nullable=False,
@@ -135,7 +145,7 @@ def create_pipeline_step_models(
135
145
  class Upload(base_model_class):
136
146
  __tablename__ = 'upload'
137
147
 
138
- id: Mapped[int] = mapped_column( # noqa A003
148
+ id: Mapped[int] = mapped_column( # noqa A003
139
149
  primary_key=True,
140
150
  autoincrement=True
141
151
  )
@@ -173,6 +183,11 @@ def create_pipeline_step_models(
173
183
  default=False
174
184
  )
175
185
 
186
+ is_ready: Mapped[bool] = mapped_column(
187
+ nullable=False,
188
+ default=False
189
+ )
190
+
176
191
  failure_message: Mapped[str | None] = mapped_column(
177
192
  nullable=True,
178
193
  )
@@ -182,7 +197,7 @@ def create_pipeline_step_models(
182
197
  foreign_keys=[pipeline_id]
183
198
  )
184
199
 
185
- user: Mapped['User'] = relationship( # noqa F821
200
+ user: Mapped['User'] = relationship( # noqa F821
186
201
  back_populates='user_uploads',
187
202
  foreign_keys=[user_id]
188
203
  )
@@ -20,3 +20,5 @@ from .unique_values import UniqueValuesValidator # noqa
20
20
  from .unique_whole_organisms import UniqueWholeOrganismsValidator # noqa
21
21
  from .interfaces import Condition # noqa
22
22
  from .min_one_valid_value import MinOneValidValueValidator # noqa
23
+ from .value_check import ValueCheckValidator # noqa
24
+ from .unique_value_check import UniqueValueCheckValidator # noqa
@@ -0,0 +1,41 @@
1
+ # SPDX-FileCopyrightText: 2025 Genome Research Ltd.
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+
5
+ from dataclasses import dataclass
6
+
7
+ from tol.core import Validator
8
+ from tol.core.data_object import DataObject
9
+
10
+
11
+ class UniqueValueCheckValidator(Validator):
12
+ """
13
+ Validates an incoming stream of `DataObject` instances.
14
+ For each data object (sample) it checks if the GAL column has only one value
15
+ """
16
+ @dataclass(slots=True, frozen=True, kw_only=True)
17
+ class Config:
18
+ field: str
19
+
20
+ __slots__ = ['__config', '_cached']
21
+ __config: Config
22
+ _cached: str | None
23
+
24
+ def __init__(self, config: Config, **kwargs) -> None:
25
+ super().__init__()
26
+ self.__config = config
27
+ self._cached = None
28
+
29
+ def _validate_data_object(self, obj: DataObject) -> None:
30
+ # This function is used to check if the data object has a single value for GAL column
31
+
32
+ if not self._cached:
33
+ self._cached = obj.attributes.get(self.__config.field)
34
+
35
+ else:
36
+ if obj.attributes.get(self.__config.field) != self._cached:
37
+ self.add_error(
38
+ object_id=obj.id,
39
+ detail=f'More than one value detected in {self.__config.field}',
40
+ field=self.__config.field,
41
+ )
@@ -0,0 +1,36 @@
1
+ # SPDX-FileCopyrightText: 2025 Genome Research Ltd.
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+
5
+ from dataclasses import dataclass
6
+
7
+ from tol.core import Validator
8
+ from tol.core.data_object import DataObject
9
+
10
+
11
+ class ValueCheckValidator(Validator):
12
+ """
13
+ Validates an incoming stream of `DataObject` instances.
14
+ For each data object (sample) it checks if it is a SYMBIONT
15
+ """
16
+ @dataclass(slots=True, frozen=True, kw_only=True)
17
+ class Config:
18
+ field: str
19
+ value: str
20
+
21
+ __slots__ = ['__config']
22
+ __config: Config
23
+
24
+ def __init__(self, config: Config, **kwargs) -> None:
25
+ super().__init__()
26
+ self.__config = config
27
+
28
+ def _validate_data_object(self, obj: DataObject) -> None:
29
+ # This function is used to check if the data object is SYMBIONT or not
30
+
31
+ if obj.attributes.get(self.__config.field) == self.__config.value:
32
+ self.add_error(
33
+ object_id=obj.id,
34
+ detail=f'{self.__config.value} is detected',
35
+ field=self.__config.field,
36
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tol-sdk
3
- Version: 1.8.1
3
+ Version: 1.8.3
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
@@ -155,6 +155,7 @@ src/tol/flows/logger.py
155
155
  src/tol/flows/secrets.py
156
156
  src/tol/flows/sequencing_submissions.py
157
157
  src/tol/flows/converters/__init__.py
158
+ src/tol/flows/converters/auto_detect_manifest_type_converter.py
158
159
  src/tol/flows/converters/benchling_entity_to_benchling_worklist_item_converter_factory.py
159
160
  src/tol/flows/converters/benchling_extraction_to_elastic_extraction_converter.py
160
161
  src/tol/flows/converters/benchling_extraction_to_elastic_sequencing_request_converter.py
@@ -343,8 +344,10 @@ src/tol/validators/specimens_have_same_taxon.py
343
344
  src/tol/validators/sts_fields.py
344
345
  src/tol/validators/tolid.py
345
346
  src/tol/validators/types.py
347
+ src/tol/validators/unique_value_check.py
346
348
  src/tol/validators/unique_values.py
347
349
  src/tol/validators/unique_whole_organisms.py
350
+ src/tol/validators/value_check.py
348
351
  src/tol/validators/interfaces/__init__.py
349
352
  src/tol/validators/interfaces/condition_evaluator.py
350
353
  src/tol_sdk.egg-info/PKG-INFO
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