tol-sdk 1.6.24__tar.gz → 1.8.4__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 (394) hide show
  1. {tol_sdk-1.6.24/src/tol_sdk.egg-info → tol_sdk-1.8.4}/PKG-INFO +10 -2
  2. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/README.md +1 -0
  3. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/pyproject.toml +13 -3
  4. {tol_sdk-1.6.24/src/tol/sql/loader → tol_sdk-1.8.4/src/tol/actions}/__init__.py +2 -2
  5. tol_sdk-1.8.4/src/tol/actions/action.py +31 -0
  6. tol_sdk-1.8.4/src/tol/actions/upsert_action.py +56 -0
  7. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/__init__.py +1 -0
  8. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/action.py +70 -21
  9. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/auth/abc/__init__.py +1 -0
  10. tol_sdk-1.8.4/src/tol/api_base/auth/abc/authorisation.py +51 -0
  11. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/auth/asserts.py +5 -4
  12. tol_sdk-1.8.4/src/tol/api_base/auth/composite.py +801 -0
  13. tol_sdk-1.8.4/src/tol/api_base/blueprint.py +479 -0
  14. tol_sdk-1.8.4/src/tol/api_base/controller.py +709 -0
  15. tol_sdk-1.8.4/src/tol/api_base/data_upload.py +98 -0
  16. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/misc/__init__.py +1 -1
  17. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/misc/auth_context.py +36 -13
  18. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/misc/list_get_parameters.py +25 -1
  19. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/misc/stats_parameters.py +1 -1
  20. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/pipeline_steps.py +12 -9
  21. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/system.py +1 -3
  22. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_client/api_datasource.py +30 -19
  23. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_client/client.py +35 -15
  24. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_client/converter.py +55 -55
  25. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_client/exception.py +1 -1
  26. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_client/factory.py +34 -26
  27. tol_sdk-1.8.4/src/tol/api_client/parser.py +251 -0
  28. tol_sdk-1.8.4/src/tol/api_client/view.py +267 -0
  29. tol_sdk-1.6.24/src/tol/benchling/sql/extraction_extraction_type_dna.sql → tol_sdk-1.8.4/src/tol/benchling/sql/extraction_containers_dna.sql +54 -64
  30. tol_sdk-1.8.4/src/tol/benchling/sql/extraction_extraction_type_dna.sql +68 -0
  31. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/extraction_extraction_type_lres.sql +11 -3
  32. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/sequencing_request_sequencing_platform_pacbio.sql +259 -94
  33. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/bold/bold_datasource.py +3 -0
  34. tol_sdk-1.8.4/src/tol/bold/client.py +150 -0
  35. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/bold/converter.py +2 -1
  36. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/bold/factory.py +4 -0
  37. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/bold/parser.py +7 -3
  38. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/cli/cli.py +224 -105
  39. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/__init__.py +3 -1
  40. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/data_object.py +27 -9
  41. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/data_object_converter.py +44 -2
  42. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/data_source_attribute_metadata.py +10 -13
  43. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/datasource.py +3 -1
  44. tol_sdk-1.8.4/src/tol/core/datasource_utils.py +182 -0
  45. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/factory.py +51 -62
  46. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/http_client.py +6 -4
  47. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/cursor.py +5 -3
  48. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/detail_getter.py +8 -16
  49. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/list_getter.py +3 -1
  50. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/page_getter.py +3 -1
  51. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/relational.py +9 -4
  52. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/upserter.py +1 -0
  53. tol_sdk-1.8.4/src/tol/core/requested_fields.py +189 -0
  54. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/validate.py +1 -0
  55. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/elastic/elastic_datasource.py +21 -8
  56. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/elastic/runtime_fields.py +4 -4
  57. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/ena/client.py +61 -10
  58. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/ena/ena_datasource.py +16 -10
  59. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/ena/ena_methods.py +33 -32
  60. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/ena/parser.py +15 -2
  61. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/excel/excel_datasource.py +9 -1
  62. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/__init__.py +7 -1
  63. tol_sdk-1.8.4/src/tol/flows/converters/auto_detect_manifest_type_converter.py +46 -0
  64. tol_sdk-1.8.4/src/tol/flows/converters/benchling_extraction_to_elastic_extraction_converter.py +49 -0
  65. tol_sdk-1.8.4/src/tol/flows/converters/benchling_extraction_to_elastic_sequencing_request_converter.py +50 -0
  66. tol_sdk-1.8.4/src/tol/flows/converters/benchling_sequencing_request_to_elastic_sequencing_request_converter.py +59 -0
  67. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/benchling_tissue_prep_to_elastic_tissue_prep_converter.py +14 -3
  68. tol_sdk-1.8.4/src/tol/flows/converters/bioscan_image_to_elastic_sample_update_converter.py +79 -0
  69. tol_sdk-1.8.4/src/tol/flows/converters/bold_bin_to_elastic_sample_update_converter.py +21 -0
  70. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/elastic_sample_to_benchling_tissue_update_converter.py +2 -1
  71. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/elastic_sample_to_elastic_sequencing_request_update_converter.py +4 -1
  72. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/elastic_tolid_to_elastic_genome_note_update_converter.py +4 -1
  73. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/elastic_tolid_to_elastic_sample_update_converter.py +4 -1
  74. tol_sdk-1.8.4/src/tol/flows/converters/incoming_sample_to_ena_sample_converter.py +155 -0
  75. tol_sdk-1.8.4/src/tol/flows/converters/incoming_sample_to_incoming_sample_with_lists_converter.py +46 -0
  76. tol_sdk-1.8.4/src/tol/flows/converters/skip_null_fields_converter.py +42 -0
  77. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/sts_banked_sample_to_elastic_sample_converter.py +1 -1
  78. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/sts_sample_project_to_elastic_sample_converter.py +3 -0
  79. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/tolqc_data_to_elastic_run_data_converter.py +6 -3
  80. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/tolqc_species_to_elastic_species_converter.py +6 -0
  81. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/goat/client.py +3 -2
  82. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/goat/goat_datasource.py +3 -2
  83. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/goat/parser.py +2 -1
  84. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/mlwh/mlwh_datasource.py +3 -3
  85. tol_sdk-1.8.4/src/tol/s3/__init__.py +8 -0
  86. tol_sdk-1.8.4/src/tol/s3/converter.py +45 -0
  87. tol_sdk-1.8.4/src/tol/s3/factory.py +101 -0
  88. tol_sdk-1.8.4/src/tol/s3/parser.py +76 -0
  89. tol_sdk-1.8.4/src/tol/s3/s3_datasource.py +85 -0
  90. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/services/s3_client.py +13 -4
  91. tol_sdk-1.8.4/src/tol/sources/bioscan_image.py +24 -0
  92. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/bold.py +2 -0
  93. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/defaults.py +4 -0
  94. tol_sdk-1.8.4/src/tol/sources/elastic.py +38 -0
  95. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/sts.py +6 -2
  96. tol_sdk-1.8.4/src/tol/sql/auth/blueprint.py +729 -0
  97. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/auth/models.py +21 -12
  98. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/database.py +98 -52
  99. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/factory.py +6 -4
  100. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/filter.py +22 -20
  101. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/model.py +44 -39
  102. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/pipeline_step/factory.py +22 -7
  103. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/relationship.py +1 -1
  104. tol_sdk-1.8.4/src/tol/sql/sql_converter.py +134 -0
  105. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/sql_datasource.py +90 -176
  106. {tol_sdk-1.6.24/src/tol/sql/board → tol_sdk-1.8.4/src/tol/sql/standard}/__init__.py +1 -1
  107. tol_sdk-1.8.4/src/tol/sql/standard/factory.py +602 -0
  108. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/utils/__init__.py +1 -0
  109. tol_sdk-1.8.4/src/tol/utils/s3.py +16 -0
  110. tol_sdk-1.8.4/src/tol/validators/__init__.py +26 -0
  111. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/validators/allowed_keys.py +18 -12
  112. tol_sdk-1.8.4/src/tol/validators/allowed_values.py +64 -0
  113. tol_sdk-1.8.4/src/tol/validators/allowed_values_from_datasource.py +90 -0
  114. tol_sdk-1.8.4/src/tol/validators/assert_on_condition.py +56 -0
  115. tol_sdk-1.8.4/src/tol/validators/branching.py +160 -0
  116. tol_sdk-1.8.4/src/tol/validators/converter_and_validate.py +93 -0
  117. tol_sdk-1.8.4/src/tol/validators/date_sorting.py +58 -0
  118. tol_sdk-1.8.4/src/tol/validators/ena_checklist.py +73 -0
  119. tol_sdk-1.8.4/src/tol/validators/ena_submittable.py +62 -0
  120. tol_sdk-1.8.4/src/tol/validators/interfaces/__init__.py +5 -0
  121. tol_sdk-1.8.4/src/tol/validators/interfaces/condition_evaluator.py +102 -0
  122. tol_sdk-1.8.4/src/tol/validators/min_one_valid_value.py +56 -0
  123. tol_sdk-1.8.4/src/tol/validators/mutually_exclusive.py +111 -0
  124. tol_sdk-1.6.24/src/tol/validators/allowed_values.py → tol_sdk-1.8.4/src/tol/validators/regex.py +42 -28
  125. tol_sdk-1.8.4/src/tol/validators/regex_by_value.py +100 -0
  126. tol_sdk-1.8.4/src/tol/validators/specimens_have_same_taxon.py +60 -0
  127. tol_sdk-1.8.4/src/tol/validators/sts_fields.py +229 -0
  128. tol_sdk-1.8.4/src/tol/validators/tolid.py +111 -0
  129. tol_sdk-1.8.4/src/tol/validators/types.py +90 -0
  130. tol_sdk-1.8.4/src/tol/validators/unique_value_check.py +41 -0
  131. tol_sdk-1.8.4/src/tol/validators/unique_values.py +109 -0
  132. tol_sdk-1.8.4/src/tol/validators/unique_whole_organisms.py +109 -0
  133. tol_sdk-1.8.4/src/tol/validators/value_check.py +36 -0
  134. {tol_sdk-1.6.24 → tol_sdk-1.8.4/src/tol_sdk.egg-info}/PKG-INFO +10 -2
  135. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol_sdk.egg-info/SOURCES.txt +42 -20
  136. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol_sdk.egg-info/requires.txt +10 -1
  137. tol_sdk-1.6.24/src/tol/api_base/auth/composite.py +0 -389
  138. tol_sdk-1.6.24/src/tol/api_base/blueprint.py +0 -348
  139. tol_sdk-1.6.24/src/tol/api_base/controller.py +0 -449
  140. tol_sdk-1.6.24/src/tol/api_client/parser.py +0 -211
  141. tol_sdk-1.6.24/src/tol/api_client/view.py +0 -322
  142. tol_sdk-1.6.24/src/tol/bold/client.py +0 -66
  143. tol_sdk-1.6.24/src/tol/core/datasource_utils.py +0 -100
  144. tol_sdk-1.6.24/src/tol/flows/convert_functions/__init__.py +0 -17
  145. tol_sdk-1.6.24/src/tol/flows/convert_functions/convert_benchling_samples_to_data_object.py +0 -10
  146. tol_sdk-1.6.24/src/tol/flows/convert_functions/convert_bioscan_barcoding_run_data_to_data_object.py +0 -9
  147. tol_sdk-1.6.24/src/tol/flows/convert_functions/convert_bold_samples_to_data_object.py +0 -34
  148. tol_sdk-1.6.24/src/tol/flows/convert_functions/convert_elastic_samples_to_barcoding_run_data.py +0 -16
  149. tol_sdk-1.6.24/src/tol/flows/convert_functions/convert_portaldb_sequencing_request_events_to_sequencing_requests.py +0 -13
  150. tol_sdk-1.6.24/src/tol/flows/convert_functions/convert_species_lab_work_status_to_data_object.py +0 -15
  151. tol_sdk-1.6.24/src/tol/flows/convert_functions/convert_specimen_status_to_data_object.py +0 -15
  152. tol_sdk-1.6.24/src/tol/flows/convert_functions/convert_to_data_objects.py +0 -9
  153. tol_sdk-1.6.24/src/tol/flows/convert_functions/convert_tolid_species_to_data_object.py +0 -21
  154. tol_sdk-1.6.24/src/tol/flows/convert_functions/convert_tolid_specimen_to_data_object.py +0 -14
  155. tol_sdk-1.6.24/src/tol/flows/convert_functions/convert_tolqc_run_data_to_data_object.py +0 -29
  156. tol_sdk-1.6.24/src/tol/flows/convert_functions/convert_tolqc_samples_to_data_object.py +0 -20
  157. tol_sdk-1.6.24/src/tol/flows/convert_functions/convert_treeofsex_species_to_data_object.py +0 -54
  158. tol_sdk-1.6.24/src/tol/flows/converters/benchling_extraction_to_elastic_extraction_converter.py +0 -30
  159. tol_sdk-1.6.24/src/tol/flows/converters/benchling_extraction_to_elastic_sequencing_request_converter.py +0 -29
  160. tol_sdk-1.6.24/src/tol/flows/converters/benchling_sequencing_request_to_elastic_sequencing_request_converter.py +0 -38
  161. tol_sdk-1.6.24/src/tol/sources/elastic.py +0 -1029
  162. tol_sdk-1.6.24/src/tol/sql/auth/blueprint.py +0 -442
  163. tol_sdk-1.6.24/src/tol/sql/board/factory.py +0 -341
  164. tol_sdk-1.6.24/src/tol/sql/loader/factory.py +0 -232
  165. tol_sdk-1.6.24/src/tol/sql/sql_converter.py +0 -221
  166. tol_sdk-1.6.24/src/tol/sql/summary/__init__.py +0 -6
  167. tol_sdk-1.6.24/src/tol/sql/summary/factory.py +0 -91
  168. tol_sdk-1.6.24/src/tol/validators/__init__.py +0 -7
  169. tol_sdk-1.6.24/src/tol/validators/unique_values.py +0 -72
  170. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/LICENSE +0 -0
  171. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/MANIFEST.in +0 -0
  172. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/setup.cfg +0 -0
  173. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/certs/cacert.pem +0 -0
  174. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/__init__.py +0 -0
  175. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/auth/__init__.py +0 -0
  176. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/auth/abc/auth.py +0 -0
  177. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/auth/blueprint.py +0 -0
  178. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/auth/config.py +0 -0
  179. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/auth/error.py +0 -0
  180. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/misc/aggregation_body.py +0 -0
  181. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/misc/aggregation_parameters.py +0 -0
  182. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/misc/authenticate.py +0 -0
  183. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/misc/data_body.py +0 -0
  184. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/misc/filter_utils.py +0 -0
  185. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_base/misc/relation_url.py +0 -0
  186. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_client/__init__.py +0 -0
  187. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_client/filter.py +0 -0
  188. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/api_client/validate.py +0 -0
  189. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/barcodes/__init__.py +0 -0
  190. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/barcodes/main.py +0 -0
  191. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/__init__.py +0 -0
  192. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/benchling_converter.py +0 -0
  193. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/benchling_datasource.py +0 -0
  194. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/benchling_warehouse_datasource.py +0 -0
  195. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/__init__.py +0 -0
  196. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/extraction_extraction_type_pooled_dna.sql +0 -0
  197. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/extraction_extraction_type_rna.sql +0 -0
  198. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/pacbio_prep.sql +0 -0
  199. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/pooled_pacbio_prep.sql +0 -0
  200. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/results_extraction_dna.sql +0 -0
  201. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/results_extraction_pooled.sql +0 -0
  202. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/results_extraction_rna.sql +0 -0
  203. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/results_pacbio_prep.sql +0 -0
  204. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/results_pacbio_prep_pooled.sql +0 -0
  205. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/sample.sql +0 -0
  206. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/sequencing_request_sequencing_platform_hic.sql +0 -0
  207. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/sequencing_request_sequencing_platform_rnaseq.sql +0 -0
  208. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/sequencing_request_sequencing_platform_wgs.sql +0 -0
  209. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/benchling/sql/tissue_prep.sql +0 -0
  210. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/board/__init__.py +0 -0
  211. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/board/blueprint.py +0 -0
  212. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/bold/__init__.py +0 -0
  213. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/cli/__init__.py +0 -0
  214. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/converter/__init__.py +0 -0
  215. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/converter/yaml/__init__.py +0 -0
  216. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/converter/yaml/model.py +0 -0
  217. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/converter/yaml/yaml_converter.py +0 -0
  218. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/copo/__init__.py +0 -0
  219. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/copo/client.py +0 -0
  220. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/copo/converter.py +0 -0
  221. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/copo/copo_datasource.py +0 -0
  222. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/copo/factory.py +0 -0
  223. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/copo/parser.py +0 -0
  224. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/attribute_metadata.py +0 -0
  225. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/core_converter.py +0 -0
  226. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/data_loader.py +0 -0
  227. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/data_source_dict.py +0 -0
  228. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/datasource_error.py +0 -0
  229. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/datasource_filter.py +0 -0
  230. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/__init__.py +0 -0
  231. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/_filterable.py +0 -0
  232. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/_writer.py +0 -0
  233. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/aggregator.py +0 -0
  234. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/counter.py +0 -0
  235. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/declare.py +0 -0
  236. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/deleter.py +0 -0
  237. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/enricher.py +0 -0
  238. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/enum.py +0 -0
  239. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/group_statter.py +0 -0
  240. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/inserter.py +0 -0
  241. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/operator_config.py +0 -0
  242. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/statter.py +0 -0
  243. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/summariser.py +0 -0
  244. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/operator/updater.py +0 -0
  245. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/relationship.py +0 -0
  246. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/core/session.py +0 -0
  247. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/elastic/__init__.py +0 -0
  248. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/eln/__init__.py +0 -0
  249. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/eln/auth.py +0 -0
  250. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/eln/eln_datasource.py +0 -0
  251. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/eln/entities.py +0 -0
  252. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/eln/generators.py +0 -0
  253. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/eln/sanitise.py +0 -0
  254. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/ena/__init__.py +0 -0
  255. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/ena/converter.py +0 -0
  256. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/ena/factory.py +0 -0
  257. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/ena/filter.py +0 -0
  258. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/excel/__init__.py +0 -0
  259. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/excel/excel.py +0 -0
  260. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/excel/s3_factory.py +0 -0
  261. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/__init__.py +0 -0
  262. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/benchling_entity_to_benchling_worklist_item_converter_factory.py +0 -0
  263. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/benchling_sample_casm_to_sts_sample_converter.py +0 -0
  264. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/benchling_sample_to_elastic_sample_converter.py +0 -0
  265. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/benchling_tissue_to_sts_sample_converter.py +0 -0
  266. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/bioscan_extra_pantheon_species_to_elastic_sample_update_converter.py +0 -0
  267. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/bioscan_qc_specimen_to_elastic_sample_update_converter.py +0 -0
  268. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/bioscan_qc_uksi_entry_to_elastic_sample_update_converter.py +0 -0
  269. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/bold_sample_to_elastic_sample_update_converter.py +0 -0
  270. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/elastic_object_to_portaldb_object_converter.py +0 -0
  271. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/elastic_sample_to_benchling_tissue_converter.py +0 -0
  272. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/elastic_sample_to_bold_sample_converter.py +0 -0
  273. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/elastic_sample_to_sts_sample_converter.py +0 -0
  274. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/elastic_sequencing_request_to_elastic_run_data_update_converter.py +0 -0
  275. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/elastic_sequencing_request_to_sts_sequencing_request_converter.py +0 -0
  276. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/elastic_species_to_sts_species_converter.py +0 -0
  277. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/elastic_tolid_to_elastic_curation_update_converter.py +0 -0
  278. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/gap_assembly_to_elastic_assembly_analysis_converter.py +0 -0
  279. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/gap_assembly_to_elastic_assembly_converter.py +0 -0
  280. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/genome_notes_genome_note_to_elastic_genome_note_converter.py +0 -0
  281. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/goat_taxon_to_elastic_species_converter.py +0 -0
  282. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/grit_issue_to_elastic_curation_converter.py +0 -0
  283. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/informatics_tolid_to_elastic_tolid_converter.py +0 -0
  284. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/labwhere_location_to_elastic_sample_update_converter.py +0 -0
  285. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/labwhere_location_to_sts_tray_converter.py +0 -0
  286. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/mlwh_extraction_to_elastic_extraction_converter.py +0 -0
  287. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/mlwh_run_data_to_elastic_run_data_converter.py +0 -0
  288. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/mlwh_sequencing_request_to_elastic_sequencing_request_converter.py +0 -0
  289. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/sts_manifest_to_elastic_manifest_converter.py +0 -0
  290. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/sts_project_to_elastic_sample_update_converter.py +0 -0
  291. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/sts_sample_to_casm_benchling_converter.py +0 -0
  292. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/sts_sampleset_to_elastic_sampleset_converter.py +0 -0
  293. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/sts_species_to_elastic_species_converter.py +0 -0
  294. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/tolid_specimen_to_elastic_tolid_converter.py +0 -0
  295. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/tolqc_sample_to_elastic_sequencing_request_converter.py +0 -0
  296. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/treeofsex_species_to_treeofsexwh_species_converter.py +0 -0
  297. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/converters/treeofsex_upload_to_treeofsex_attribute_converter.py +0 -0
  298. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/logger.py +0 -0
  299. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/secrets.py +0 -0
  300. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/flows/sequencing_submissions.py +0 -0
  301. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/gap/__init__.py +0 -0
  302. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/gap/gap_datasource.py +0 -0
  303. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/goat/__init__.py +0 -0
  304. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/goat/converter.py +0 -0
  305. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/goat/factory.py +0 -0
  306. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/goat/filter.py +0 -0
  307. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/google_sheets/__init__.py +0 -0
  308. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/google_sheets/google_sheet_datasource.py +0 -0
  309. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/irods/__init__.py +0 -0
  310. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/irods/irods_datasource.py +0 -0
  311. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/jira/__init__.py +0 -0
  312. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/jira/client.py +0 -0
  313. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/jira/converter.py +0 -0
  314. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/jira/factory.py +0 -0
  315. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/jira/filter.py +0 -0
  316. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/jira/jira_datasource.py +0 -0
  317. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/jira/mapper.py +0 -0
  318. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/jira/parser.py +0 -0
  319. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/jira/sort.py +0 -0
  320. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/json/__init__.py +0 -0
  321. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/json/json_datasource.py +0 -0
  322. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/json/s3_json_datasource.py +0 -0
  323. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/labwhere/__init__.py +0 -0
  324. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/labwhere/client.py +0 -0
  325. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/labwhere/converter.py +0 -0
  326. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/labwhere/factory.py +0 -0
  327. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/labwhere/labwhere_datasource.py +0 -0
  328. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/labwhere/parser.py +0 -0
  329. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/markdown.py +0 -0
  330. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/mlwh/__init__.py +0 -0
  331. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/prefect/__init__.py +0 -0
  332. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/prefect/converter.py +0 -0
  333. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/prefect/factory.py +0 -0
  334. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/prefect/filter.py +0 -0
  335. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/prefect/prefect_datasource.py +0 -0
  336. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/prefect/prefect_object.py +0 -0
  337. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sciops/__init__.py +0 -0
  338. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sciops/configuration.py +0 -0
  339. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sciops/consumer.py +0 -0
  340. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sciops/message_builder.py +0 -0
  341. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sciops/messages.py +0 -0
  342. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sciops/response_processors.py +0 -0
  343. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sciops/sequencing_datasource.py +0 -0
  344. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/services/__init__.py +0 -0
  345. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/__init__.py +0 -0
  346. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/benchling.py +0 -0
  347. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/benchling_warehouse.py +0 -0
  348. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/bioscan.py +0 -0
  349. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/bioscan_extra.py +0 -0
  350. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/bioscan_qc.py +0 -0
  351. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/copo.py +0 -0
  352. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/ena.py +0 -0
  353. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/gap.py +0 -0
  354. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/genome_notes.py +0 -0
  355. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/goat.py +0 -0
  356. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/grit.py +0 -0
  357. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/informatics.py +0 -0
  358. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/labwhere.py +0 -0
  359. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/mlwh.py +0 -0
  360. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/portal.py +0 -0
  361. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/portal_attributes.py +0 -0
  362. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/portaldb.py +0 -0
  363. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/prefect.py +0 -0
  364. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/sciops.py +0 -0
  365. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/sts_legacy.py +0 -0
  366. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/tolid.py +0 -0
  367. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/tolqc.py +0 -0
  368. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/tolqc_legacy.py +0 -0
  369. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/treeofsex.py +0 -0
  370. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/uksi_qc.py.py +0 -0
  371. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sources/workflows.py +0 -0
  372. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/__init__.py +0 -0
  373. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/action/__init__.py +0 -0
  374. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/action/factory.py +0 -0
  375. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/auth/__init__.py +0 -0
  376. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/cast.py +0 -0
  377. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/ds_session.py +0 -0
  378. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/exception.py +0 -0
  379. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/ext.py +0 -0
  380. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/pipeline_step/__init__.py +0 -0
  381. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/session.py +0 -0
  382. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sql/sort.py +0 -0
  383. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/status/__init__.py +0 -0
  384. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/status/status_datasource.py +0 -0
  385. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sts/__init__.py +0 -0
  386. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sts/sts.py +0 -0
  387. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sts/sts_datasource.py +0 -0
  388. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/sts/sts_requests.py +0 -0
  389. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/treeval/__init__.py +0 -0
  390. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/treeval/treeval_datasource.py +0 -0
  391. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol/utils/csv.py +0 -0
  392. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol_sdk.egg-info/dependency_links.txt +0 -0
  393. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/src/tol_sdk.egg-info/entry_points.txt +0 -0
  394. {tol_sdk-1.6.24 → tol_sdk-1.8.4}/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.6.24
3
+ Version: 1.8.4
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
@@ -15,6 +15,7 @@ License-File: LICENSE
15
15
  Requires-Dist: cachetools==5.3.3
16
16
  Requires-Dist: case-converter==1.1.0
17
17
  Requires-Dist: Click==8.1.7
18
+ Requires-Dist: dacite==1.9.2
18
19
  Requires-Dist: more-itertools==10.2.0
19
20
  Requires-Dist: python_dateutil>=2.8.1
20
21
  Requires-Dist: python-dotenv>=1.0.1
@@ -36,7 +37,7 @@ Requires-Dist: atlassian-python-api==3.41.14; extra == "jira"
36
37
  Provides-Extra: json
37
38
  Requires-Dist: minio==7.2.15; extra == "json"
38
39
  Provides-Extra: mysql
39
- Requires-Dist: mysql-connector-python; extra == "mysql"
40
+ Requires-Dist: mysql-connector-python==9.5.0; extra == "mysql"
40
41
  Provides-Extra: postgresql
41
42
  Requires-Dist: SQLAlchemy==2.0.35; extra == "postgresql"
42
43
  Requires-Dist: psycopg2-binary==2.9.9; extra == "postgresql"
@@ -49,6 +50,8 @@ Requires-Dist: openpyxl>=3.0.10; extra == "sheets"
49
50
  Requires-Dist: XlsxWriter==3.1.9; extra == "sheets"
50
51
  Requires-Dist: xlrd==2.0.1; extra == "sheets"
51
52
  Requires-Dist: gspread>=5.12.0; extra == "sheets"
53
+ Provides-Extra: s3
54
+ Requires-Dist: minio==7.2.15; extra == "s3"
52
55
  Provides-Extra: all
53
56
  Requires-Dist: tol-sdk[api-base]; extra == "all"
54
57
  Requires-Dist: tol-sdk[benchling]; extra == "all"
@@ -60,6 +63,10 @@ Requires-Dist: tol-sdk[mysql]; extra == "all"
60
63
  Requires-Dist: tol-sdk[postgresql]; extra == "all"
61
64
  Requires-Dist: tol-sdk[prefect]; extra == "all"
62
65
  Requires-Dist: tol-sdk[sheets]; extra == "all"
66
+ Provides-Extra: docs
67
+ Requires-Dist: sphinx; extra == "docs"
68
+ Requires-Dist: sphinx_rtd_theme; extra == "docs"
69
+ Requires-Dist: sphinx-autobuild; extra == "docs"
63
70
  Dynamic: license-file
64
71
 
65
72
  <!--
@@ -71,4 +78,5 @@ SPDX-License-Identifier: MIT
71
78
  # ToL SDK
72
79
 
73
80
  A Python SDK for ToL services. Full documentation is available:
81
+ https://tol.pages.internal.sanger.ac.uk/platforms/tol-sdk/
74
82
  https://ssg-confluence.internal.sanger.ac.uk/display/TOL/ToL+SDK
@@ -7,4 +7,5 @@ SPDX-License-Identifier: MIT
7
7
  # ToL SDK
8
8
 
9
9
  A Python SDK for ToL services. Full documentation is available:
10
+ https://tol.pages.internal.sanger.ac.uk/platforms/tol-sdk/
10
11
  https://ssg-confluence.internal.sanger.ac.uk/display/TOL/ToL+SDK
@@ -8,7 +8,7 @@ build-backend = "setuptools.build_meta"
8
8
 
9
9
  [project]
10
10
  name = "tol-sdk"
11
- version = "1.6.24"
11
+ version = "1.8.4"
12
12
  description = "SDK for interaction with ToL, Sanger and external services"
13
13
  readme = "README.md"
14
14
  authors = [
@@ -26,6 +26,7 @@ dependencies = [
26
26
  "cachetools == 5.3.3",
27
27
  "case-converter == 1.1.0",
28
28
  "Click == 8.1.7",
29
+ "dacite == 1.9.2",
29
30
  "more-itertools == 10.2.0",
30
31
  "python_dateutil >= 2.8.1",
31
32
  "python-dotenv >= 1.0.1",
@@ -42,7 +43,7 @@ elastic = ["elasticsearch == 7.17.9"]
42
43
  irods = ["python-irodsclient == 3.1.0"]
43
44
  jira = ["atlassian-python-api==3.41.14"]
44
45
  json = ["minio == 7.2.15"]
45
- mysql = ["mysql-connector-python"]
46
+ mysql = ["mysql-connector-python==9.5.0"]
46
47
  postgresql = ["SQLAlchemy == 2.0.35", "psycopg2-binary == 2.9.9"]
47
48
  prefect = ["prefect == 2.20.18", "griffe < 1.0.0"]
48
49
  sheets = [
@@ -52,6 +53,7 @@ sheets = [
52
53
  "xlrd == 2.0.1",
53
54
  "gspread >= 5.12.0"
54
55
  ]
56
+ s3 = ["minio == 7.2.15"]
55
57
  all = [
56
58
  "tol-sdk[api-base]",
57
59
  "tol-sdk[benchling]",
@@ -64,6 +66,11 @@ all = [
64
66
  "tol-sdk[prefect]",
65
67
  "tol-sdk[sheets]"
66
68
  ]
69
+ docs = [
70
+ "sphinx",
71
+ "sphinx_rtd_theme",
72
+ "sphinx-autobuild"
73
+ ]
67
74
 
68
75
  [tool.setuptools.packages.find]
69
76
  where = ["src"]
@@ -73,4 +80,7 @@ where = ["src"]
73
80
  "tol.benchling.sql" = ["*.sql"]
74
81
 
75
82
  [project.scripts]
76
- tol = "tol.cli:cli"
83
+ tol = "tol.cli:cli"
84
+
85
+ [tool.black]
86
+ line-length = 99
@@ -2,5 +2,5 @@
2
2
  #
3
3
  # SPDX-License-Identifier: MIT
4
4
 
5
-
6
- from .factory import create_loader_models # noqa F401
5
+ from .action import Action # noqa
6
+ from .upsert_action import UpsertAction # noqa
@@ -0,0 +1,31 @@
1
+ # SPDX-FileCopyrightText: 2025 Genome Research Ltd.
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+
5
+ from __future__ import annotations
6
+
7
+ from abc import ABC, abstractmethod
8
+ from typing import Any
9
+
10
+ from ..core import DataSource
11
+
12
+
13
+ class Action(ABC):
14
+ """
15
+ The central class for running local actions.
16
+ """
17
+
18
+ @abstractmethod
19
+ def run(
20
+ self,
21
+ datasource: DataSource,
22
+ ids: list[str],
23
+ object_type: str,
24
+ params: dict[str, Any] | None = None
25
+ ) -> tuple[dict[str, bool], int]:
26
+ """
27
+ Run the action on the given IDs and return status in
28
+ format ({'success': True}, 200).
29
+ """
30
+
31
+ pass
@@ -0,0 +1,56 @@
1
+ # SPDX-FileCopyrightText: 2025 Genome Research Ltd.
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+
5
+ from __future__ import annotations
6
+
7
+ from typing import Any
8
+
9
+ from .action import Action
10
+ from ..core import DataSource
11
+
12
+
13
+ class UpsertAction(Action):
14
+ """
15
+ The central class for running local actions.
16
+ """
17
+
18
+ def __init__(self):
19
+ super().__init__()
20
+
21
+ def run(
22
+ self,
23
+ datasource: DataSource,
24
+ ids: list[str],
25
+ object_type: str,
26
+ params: dict[str, Any] | None = None
27
+ ) -> tuple[dict[str, bool], int]:
28
+
29
+ data_objects = self.__convert_to_data_objects(
30
+ datasource=datasource,
31
+ ids=ids,
32
+ object_type=object_type,
33
+ params=params
34
+ )
35
+
36
+ try:
37
+ datasource.upsert_batch(object_type=object_type, objects=data_objects)
38
+ return {'success': True}, 200
39
+ except Exception as e:
40
+ return {'error': str(e)}, 500
41
+
42
+ def __convert_to_data_objects(
43
+ self,
44
+ datasource: DataSource,
45
+ ids: list[str],
46
+ object_type: str,
47
+ params: dict[str, Any] | None = None
48
+ ) -> Any:
49
+ CoreDataObject = datasource.data_object_factory # noqa N806
50
+
51
+ for id_ in ids:
52
+ yield CoreDataObject(
53
+ type_=object_type,
54
+ id_=id_,
55
+ attributes=params
56
+ )
@@ -7,5 +7,6 @@ from .blueprint import ( # noqa
7
7
  custom_blueprint,
8
8
  data_blueprint
9
9
  )
10
+ from .data_upload import data_upload_blueprint # noqa
10
11
  from .pipeline_steps import pipeline_steps_blueprint # noqa
11
12
  from .system import system_blueprint # noqa
@@ -4,6 +4,7 @@
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
+ import importlib
7
8
  import typing
8
9
  from datetime import datetime
9
10
  from typing import Any
@@ -151,31 +152,79 @@ def action_blueprint(
151
152
  else {}
152
153
  )
153
154
 
154
- flow_params = {
155
- 'extra_params': {
155
+ if action.flow_name:
156
+ flow_params = {
157
+ 'extra_params': {
158
+ **params,
159
+ **action_params,
160
+ },
161
+ 'user_id': user_id,
162
+ 'object_type': object_type,
163
+ 'ids': ids
164
+ }
165
+
166
+ flow_run_id, flow_run_name = __insert_flow_run(
167
+ action,
168
+ flow_params,
169
+ user_id
170
+ )
171
+
172
+ user_action_params = {
156
173
  **params,
157
174
  **action_params,
158
- },
159
- 'user_id': user_id,
160
- 'object_type': object_type,
161
- 'ids': ids
162
- }
163
-
164
- flow_run_id, flow_run_name = __insert_flow_run(
165
- action,
166
- flow_params,
167
- user_id
168
- )
175
+ 'ids': ids,
176
+ 'flow_run_id': flow_run_id,
177
+ 'flow_run_name': flow_run_name
178
+ }
169
179
 
170
- user = sql_ds.get_one('user', user_id)
180
+ elif action.class_name:
181
+ # Try to import the class from tol.actions first, then fall back to main.actions
182
+ action_class = None
183
+ try:
184
+ tol_actions_module = importlib.import_module('tol.actions')
185
+ if hasattr(tol_actions_module, action.class_name):
186
+ action_class = getattr(tol_actions_module, action.class_name)
187
+
188
+ if action_class is None:
189
+ main_actions_module = importlib.import_module('main.actions')
190
+ if hasattr(main_actions_module, action.class_name):
191
+ action_class = getattr(main_actions_module, action.class_name)
192
+
193
+ except ImportError:
194
+ raise DataSourceError(
195
+ 'Action Class Import Error',
196
+ 'Class not found in tol.actions or main.actions',
197
+ 500
198
+ )
199
+
200
+ if action_class is None:
201
+ raise DataSourceError(
202
+ 'Action Class Not Found',
203
+ f'Action class "{action.class_name}" not found in tol.actions or main.actions',
204
+ 404
205
+ )
206
+
207
+ class_params = {**action_params, **params}
208
+
209
+ action_instance = action_class()
210
+ status = action_instance.run(ids=ids, params=class_params,
211
+ object_type=object_type, datasource=sql_ds)
212
+
213
+ user_action_params = {
214
+ **params,
215
+ **action_params,
216
+ 'ids': ids,
217
+ 'status': status
218
+ }
171
219
 
172
- user_action_params = {
173
- **params,
174
- **action_params,
175
- 'ids': ids,
176
- 'flow_run_id': flow_run_id,
177
- 'flow_run_name': flow_run_name
178
- }
220
+ else:
221
+ raise DataSourceError(
222
+ 'Invalid Action',
223
+ 'No Actions are defined',
224
+ 400
225
+ )
226
+
227
+ user = sql_ds.get_one('user', user_id)
179
228
 
180
229
  user_action = sql_ds.data_object_factory(
181
230
  'user_action',
@@ -3,3 +3,4 @@
3
3
  # SPDX-License-Identifier: MIT
4
4
 
5
5
  from .auth import AuthManager # noqa F401
6
+ from .authorisation import AuthorisationManager # noqa F401
@@ -0,0 +1,51 @@
1
+ # SPDX-FileCopyrightText: 2025 Genome Research Ltd.
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+ from abc import ABC, abstractmethod
5
+ from typing import Any
6
+
7
+
8
+ class AuthorisationManager(ABC):
9
+ """
10
+ Abstract base class for managing user authorisations and memberships.
11
+
12
+ This class defines the interface for authorisation managers that need to
13
+ retrieve user membership information for access control purposes. Concrete
14
+ implementations should handle the specific logic for querying user memberships
15
+ from various authorisation systems (e.g., LDAP, database, external services).
16
+
17
+ The class follows the ABC (Abstract Base Class) pattern to ensure that all
18
+ concrete implementations provide the required methods for authorisation
19
+ management.
20
+ """
21
+
22
+ @abstractmethod
23
+ def get_user_memberships(self, user: Any) -> list[str]:
24
+ """
25
+ Retrieve the list of group memberships for a given user.
26
+
27
+ This method should be implemented by concrete subclasses to fetch
28
+ the user's membership information from the appropriate authorisation
29
+ source. The memberships are typically used to determine what resources
30
+ or actions the user is authorised to access.
31
+
32
+ Args:
33
+ user (Any): The user object or identifier for which to retrieve
34
+ memberships. The type is flexible to accommodate
35
+ different user representation formats (e.g., user ID,
36
+ user object, username string, etc.).
37
+
38
+ Returns:
39
+ list[str]: A list of group names or membership identifiers that
40
+ the user belongs to. Returns an empty list if the user
41
+ has no memberships or if the user is not found.
42
+
43
+ Raises:
44
+ NotImplementedError: If called on the abstract base class directly
45
+ rather than on a concrete implementation.
46
+
47
+ Note:
48
+ Concrete implementations may raise additional exceptions specific
49
+ to their authorisation backend (e.g., connection errors, authentication
50
+ failures, etc.).
51
+ """
@@ -3,6 +3,7 @@
3
3
  # SPDX-License-Identifier: MIT
4
4
 
5
5
  from functools import wraps
6
+ from inspect import BoundArguments
6
7
  from typing import Any, Callable, Optional, Protocol
7
8
 
8
9
  from .error import ForbiddenError
@@ -21,12 +22,11 @@ class AuthInspector(Protocol):
21
22
  lock down access to a user's objects by their ID).
22
23
  """
23
24
 
24
- # TODO support segementation within `object_type` - e.g. by programme/project
25
-
26
25
  def __call__(
27
26
  self,
28
27
  object_type: str,
29
- method: OperatorMethod
28
+ method: OperatorMethod,
29
+ bound_args: BoundArguments
30
30
  ) -> Optional[AndFilter]:
31
31
  ...
32
32
 
@@ -104,7 +104,8 @@ def basic_auth_inspector(
104
104
 
105
105
  def auth_inspector(
106
106
  __object_type: str,
107
- method: OperatorMethod
107
+ method: OperatorMethod,
108
+ bound_args: BoundArguments | None,
108
109
  ) -> None:
109
110
 
110
111
  if method in NO_AUTH: