UncountablePythonSDK 0.0.53__tar.gz → 0.0.55__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.

Potentially problematic release.


This version of UncountablePythonSDK might be problematic. Click here for more details.

Files changed (258) hide show
  1. {uncountablepythonsdk-0.0.53/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.55}/PKG-INFO +1 -1
  2. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55/UncountablePythonSDK.egg-info}/PKG-INFO +1 -1
  3. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/examples/edit_recipe_inputs.py +1 -1
  4. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/examples/invoke_uploader.py +4 -1
  5. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/filesystem_utils/_s3_session.py +4 -4
  6. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/integration/executors/generic_upload_executor.py +2 -2
  7. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/uploader/invoke_uploader.py +2 -2
  8. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/async_batch_processor.py +3 -4
  9. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/client_base.py +3 -4
  10. uncountablepythonsdk-0.0.55/uncountable/types/generic_upload.py +15 -0
  11. uncountablepythonsdk-0.0.55/uncountable/types/generic_upload_t.py +106 -0
  12. uncountablepythonsdk-0.0.53/uncountable/types/generic_upload.py +0 -9
  13. uncountablepythonsdk-0.0.53/uncountable/types/generic_upload_t.py +0 -40
  14. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/.github/workflows/documentation.yml +0 -0
  15. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/.github/workflows/publish.yml +0 -0
  16. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/.gitignore +0 -0
  17. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/README.md +0 -0
  18. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/UncountablePythonSDK.egg-info/SOURCES.txt +0 -0
  19. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
  20. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/UncountablePythonSDK.egg-info/requires.txt +0 -0
  21. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
  22. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/docs/.gitignore +0 -0
  23. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/docs/conf.py +0 -0
  24. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/docs/index.md +0 -0
  25. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/docs/justfile +0 -0
  26. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/docs/quickstart.md +0 -0
  27. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/docs/requirements.txt +0 -0
  28. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/docs/static/favicons/android-chrome-192x192.png +0 -0
  29. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/docs/static/favicons/android-chrome-512x512.png +0 -0
  30. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/docs/static/favicons/apple-touch-icon.png +0 -0
  31. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/docs/static/favicons/browserconfig.xml +0 -0
  32. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/docs/static/favicons/favicon-16x16.png +0 -0
  33. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/docs/static/favicons/favicon-32x32.png +0 -0
  34. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/docs/static/favicons/manifest.json +0 -0
  35. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/docs/static/favicons/mstile-150x150.png +0 -0
  36. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/docs/static/favicons/safari-pinned-tab.svg +0 -0
  37. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/docs/static/logo_blue.png +0 -0
  38. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/examples/async_batch.py +0 -0
  39. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/examples/create_entity.py +0 -0
  40. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/examples/upload_files.py +0 -0
  41. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/__init__.py +0 -0
  42. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/argument_parser/__init__.py +0 -0
  43. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/argument_parser/_is_enum.py +0 -0
  44. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/argument_parser/_is_namedtuple.py +0 -0
  45. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/argument_parser/argument_parser.py +0 -0
  46. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/argument_parser/case_convert.py +0 -0
  47. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/filesystem_utils/__init__.py +0 -0
  48. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/filesystem_utils/_gdrive_session.py +0 -0
  49. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/filesystem_utils/_local_session.py +0 -0
  50. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/filesystem_utils/_sftp_session.py +0 -0
  51. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/filesystem_utils/file_type_utils.py +0 -0
  52. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/filesystem_utils/filesystem_session.py +0 -0
  53. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/serialization/__init__.py +0 -0
  54. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/serialization/missing_sentry.py +0 -0
  55. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/serialization/opaque_key.py +0 -0
  56. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/serialization/serial_class.py +0 -0
  57. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/serialization/serial_union.py +0 -0
  58. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/serialization/yaml.py +0 -0
  59. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/serialization_util/__init__.py +0 -0
  60. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
  61. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
  62. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/serialization_util/serialization_helpers.py +0 -0
  63. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/strenum_compat/__init__.py +0 -0
  64. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/strenum_compat/strenum_compat.py +0 -0
  65. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/__init__.py +0 -0
  66. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/__main__.py +0 -0
  67. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/actions_registry/__init__.py +0 -0
  68. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/actions_registry/__main__.py +0 -0
  69. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
  70. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/builder.py +0 -0
  71. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/config.py +0 -0
  72. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/emit_io_ts.py +0 -0
  73. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/emit_open_api.py +0 -0
  74. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/emit_open_api_util.py +0 -0
  75. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/emit_python.py +0 -0
  76. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/emit_typescript.py +0 -0
  77. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/emit_typescript_util.py +0 -0
  78. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/load_types.py +0 -0
  79. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/open_api_util.py +0 -0
  80. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/parts/base.py.prepart +0 -0
  81. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/parts/base.ts.prepart +0 -0
  82. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/test.py +0 -0
  83. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/type_info/__main__.py +0 -0
  84. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/type_info/emit_type_info.py +0 -0
  85. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/util.py +0 -0
  86. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/value_spec/__init__.py +0 -0
  87. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/value_spec/__main__.py +0 -0
  88. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/value_spec/convert_type.py +0 -0
  89. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/value_spec/emit_python.py +0 -0
  90. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pkgs/type_spec/value_spec/types.py +0 -0
  91. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/pyproject.toml +0 -0
  92. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/setup.cfg +0 -0
  93. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/__init__.py +0 -0
  94. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/core/__init__.py +0 -0
  95. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/core/async_batch.py +0 -0
  96. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/core/client.py +0 -0
  97. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/core/file_upload.py +0 -0
  98. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/core/types.py +0 -0
  99. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/core/version.py +0 -0
  100. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/integration/__init__.py +0 -0
  101. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/integration/construct_client.py +0 -0
  102. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/integration/cron.py +0 -0
  103. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/integration/db/__init__.py +0 -0
  104. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/integration/db/connect.py +0 -0
  105. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/integration/entrypoint.py +0 -0
  106. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/integration/executors/__init__.py +0 -0
  107. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/integration/executors/executors.py +0 -0
  108. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/integration/executors/script_executor.py +0 -0
  109. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/integration/job.py +0 -0
  110. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/integration/secret_retrieval/__init__.py +0 -0
  111. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/integration/secret_retrieval/retrieve_secret.py +0 -0
  112. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/integration/server.py +0 -0
  113. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/integration/telemetry.py +0 -0
  114. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/py.typed +0 -0
  115. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/__init__.py +0 -0
  116. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/__init__.py +0 -0
  117. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/batch/__init__.py +0 -0
  118. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/batch/execute_batch.py +0 -0
  119. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
  120. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/chemical/__init__.py +0 -0
  121. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
  122. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/entity/__init__.py +0 -0
  123. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/entity/create_entities.py +0 -0
  124. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/entity/create_entity.py +0 -0
  125. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/entity/get_entities_data.py +0 -0
  126. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/entity/list_entities.py +0 -0
  127. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/entity/lock_entity.py +0 -0
  128. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
  129. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/entity/set_values.py +0 -0
  130. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
  131. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/entity/unlock_entity.py +0 -0
  132. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/equipment/__init__.py +0 -0
  133. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/equipment/associate_equipment_input.py +0 -0
  134. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/field_options/__init__.py +0 -0
  135. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
  136. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/id_source/__init__.py +0 -0
  137. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/id_source/list_id_source.py +0 -0
  138. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/id_source/match_id_source.py +0 -0
  139. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/input_groups/__init__.py +0 -0
  140. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
  141. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/inputs/__init__.py +0 -0
  142. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/inputs/create_inputs.py +0 -0
  143. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/inputs/get_input_data.py +0 -0
  144. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/inputs/get_input_names.py +0 -0
  145. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
  146. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
  147. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/inputs/set_input_category.py +0 -0
  148. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
  149. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/inputs/set_intermediate_type.py +0 -0
  150. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/material_families/__init__.py +0 -0
  151. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
  152. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/outputs/__init__.py +0 -0
  153. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/outputs/get_output_data.py +0 -0
  154. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/outputs/get_output_names.py +0 -0
  155. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
  156. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/permissions/__init__.py +0 -0
  157. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
  158. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/project/__init__.py +0 -0
  159. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/project/get_projects.py +0 -0
  160. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/project/get_projects_data.py +0 -0
  161. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipe_links/__init__.py +0 -0
  162. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
  163. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipe_links/remove_recipe_link.py +0 -0
  164. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
  165. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
  166. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/__init__.py +0 -0
  167. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/add_recipe_to_project.py +0 -0
  168. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/archive_recipes.py +0 -0
  169. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
  170. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
  171. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/create_recipe.py +0 -0
  172. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/create_recipes.py +0 -0
  173. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
  174. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/edit_recipe_inputs.py +0 -0
  175. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/get_curve.py +0 -0
  176. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
  177. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/get_recipe_links.py +0 -0
  178. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
  179. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
  180. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
  181. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/lock_recipes.py +0 -0
  182. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/remove_recipe_from_project.py +0 -0
  183. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
  184. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
  185. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/set_recipe_output_annotations.py +0 -0
  186. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/set_recipe_outputs.py +0 -0
  187. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
  188. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
  189. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/recipes/unlock_recipes.py +0 -0
  190. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/triggers/__init__.py +0 -0
  191. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/triggers/run_trigger.py +0 -0
  192. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/api/uploader/__init__.py +0 -0
  193. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/async_batch.py +0 -0
  194. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/async_batch_t.py +0 -0
  195. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/base.py +0 -0
  196. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/base_t.py +0 -0
  197. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/calculations.py +0 -0
  198. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/calculations_t.py +0 -0
  199. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/chemical_structure.py +0 -0
  200. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/chemical_structure_t.py +0 -0
  201. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/client_config.py +0 -0
  202. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/client_config_t.py +0 -0
  203. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/curves.py +0 -0
  204. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/curves_t.py +0 -0
  205. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/entity.py +0 -0
  206. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/entity_t.py +0 -0
  207. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/experiment_groups.py +0 -0
  208. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/experiment_groups_t.py +0 -0
  209. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/field_values.py +0 -0
  210. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/field_values_t.py +0 -0
  211. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/fields.py +0 -0
  212. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/fields_t.py +0 -0
  213. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/id_source.py +0 -0
  214. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/id_source_t.py +0 -0
  215. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/identifier.py +0 -0
  216. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/identifier_t.py +0 -0
  217. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/input_attributes.py +0 -0
  218. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/input_attributes_t.py +0 -0
  219. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/inputs.py +0 -0
  220. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/inputs_t.py +0 -0
  221. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/job_definition.py +0 -0
  222. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/job_definition_t.py +0 -0
  223. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/outputs.py +0 -0
  224. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/outputs_t.py +0 -0
  225. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/overrides.py +0 -0
  226. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/overrides_t.py +0 -0
  227. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/permissions.py +0 -0
  228. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/permissions_t.py +0 -0
  229. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/phases.py +0 -0
  230. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/phases_t.py +0 -0
  231. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/post_base.py +0 -0
  232. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/post_base_t.py +0 -0
  233. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/recipe_identifiers.py +0 -0
  234. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/recipe_identifiers_t.py +0 -0
  235. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/recipe_inputs.py +0 -0
  236. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/recipe_inputs_t.py +0 -0
  237. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/recipe_links.py +0 -0
  238. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/recipe_links_t.py +0 -0
  239. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/recipe_metadata.py +0 -0
  240. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/recipe_metadata_t.py +0 -0
  241. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/recipe_output_metadata.py +0 -0
  242. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/recipe_output_metadata_t.py +0 -0
  243. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/recipe_tags.py +0 -0
  244. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/recipe_tags_t.py +0 -0
  245. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/recipe_workflow_steps.py +0 -0
  246. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/recipe_workflow_steps_t.py +0 -0
  247. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/recipes.py +0 -0
  248. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/recipes_t.py +0 -0
  249. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/response.py +0 -0
  250. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/response_t.py +0 -0
  251. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/secret_retrieval.py +0 -0
  252. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/secret_retrieval_t.py +0 -0
  253. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/units.py +0 -0
  254. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/units_t.py +0 -0
  255. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/users.py +0 -0
  256. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/users_t.py +0 -0
  257. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/workflows.py +0 -0
  258. {uncountablepythonsdk-0.0.53 → uncountablepythonsdk-0.0.55}/uncountable/types/workflows_t.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.53
3
+ Version: 0.0.55
4
4
  Summary: Uncountable SDK
5
5
  Project-URL: Homepage, https://github.com/uncountableinc/uncountable-python-sdk
6
6
  Project-URL: Repository, https://github.com/uncountableinc/uncountable-python-sdk.git
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.53
3
+ Version: 0.0.55
4
4
  Summary: Uncountable SDK
5
5
  Project-URL: Homepage, https://github.com/uncountableinc/uncountable-python-sdk
6
6
  Project-URL: Repository, https://github.com/uncountableinc/uncountable-python-sdk.git
@@ -29,7 +29,7 @@ edits.append(
29
29
  edit_recipe_inputs_t.RecipeInputEditAddInput(
30
30
  quantity_basis=QuantityBasis.MASS,
31
31
  ingredient_key=IdentifierKeyId(id=1),
32
- value_numeric=Decimal(56.7),
32
+ value_numeric=Decimal("56.7"),
33
33
  )
34
34
  )
35
35
  edits.append(
@@ -1,6 +1,7 @@
1
1
  import os
2
2
 
3
3
  from uncountable.core import AuthDetailsApiKey, Client, MediaFileUpload
4
+ from uncountable.types import generic_upload_t
4
5
  from uncountable.types.identifier_t import IdentifierKeyId
5
6
 
6
7
  client = Client(
@@ -19,5 +20,7 @@ uploaded_file = client.upload_files(
19
20
  client.invoke_uploader(
20
21
  file_id=uploaded_file.file_id,
21
22
  uploader_key=IdentifierKeyId(id=48),
22
- material_family_key=IdentifierKeyId(id=1),
23
+ destination=generic_upload_t.UploadDestinationMaterialFamily(
24
+ material_family_key=IdentifierKeyId(id=7)
25
+ ),
23
26
  )
@@ -53,16 +53,16 @@ class S3Session(FileSystemSession):
53
53
  recursive: bool = False,
54
54
  valid_extensions: list[str] | None = None,
55
55
  ) -> list[FileSystemObject]:
56
- if recursive:
57
- raise NotImplementedError("recursive file listings not implemented for s3")
58
-
59
56
  if not isinstance(dir_path, FileSystemFileReference):
60
57
  raise IncompatibleFileReference()
61
58
 
62
59
  assert self.bucket is not None, "call to list_files on uninitialized s3 session"
63
60
 
64
61
  filesystem_references: list[FileSystemObject] = []
65
- for obj in self.bucket.objects.filter(Prefix=dir_path.filepath):
62
+ prefix = _add_slash(dir_path.filepath)
63
+ for obj in self.bucket.objects.filter(Prefix=prefix):
64
+ if not recursive and (obj.key == prefix or "/" in obj.key[len(prefix) :]):
65
+ continue
66
66
  if valid_extensions is None or any(
67
67
  obj.key.endswith(valid_extension) for valid_extension in valid_extensions
68
68
  ):
@@ -267,12 +267,12 @@ class GenericUploadJob(Job):
267
267
 
268
268
  file_ids = [file.file_id for file in uploaded_files]
269
269
 
270
- for material_family_key in self.upload_strategy.material_family_keys:
270
+ for destination in self.upload_strategy.destinations:
271
271
  for file_id in file_ids:
272
272
  batch_processor.invoke_uploader(
273
273
  file_id=file_id,
274
274
  uploader_key=self.upload_strategy.uploader_key,
275
- material_family_key=material_family_key,
275
+ destination=destination,
276
276
  )
277
277
 
278
278
  return JobResult(success=True)
@@ -10,6 +10,7 @@ from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
11
  from ... import async_batch_t
12
12
  from ... import base_t
13
+ from ... import generic_upload_t
13
14
  from ... import identifier_t
14
15
 
15
16
  __all__: list[str] = [
@@ -28,8 +29,7 @@ ENDPOINT_PATH = "api/external/uploader/invoke_uploader"
28
29
  class Arguments:
29
30
  file_id: base_t.ObjectId
30
31
  uploader_key: identifier_t.IdentifierKey
31
- material_family_key: identifier_t.IdentifierKey
32
- recipe_key: typing.Optional[identifier_t.IdentifierKey] = None
32
+ destination: generic_upload_t.UploadDestination
33
33
 
34
34
 
35
35
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -13,6 +13,7 @@ from uncountable.types import async_batch_t
13
13
  from uncountable.types import base_t
14
14
  import uncountable.types.api.recipes.create_recipe as create_recipe_t
15
15
  import uncountable.types.api.recipes.edit_recipe_inputs as edit_recipe_inputs_t
16
+ from uncountable.types import generic_upload_t
16
17
  from uncountable.types import identifier_t
17
18
  import uncountable.types.api.uploader.invoke_uploader as invoke_uploader_t
18
19
  from uncountable.types import recipe_identifiers_t
@@ -162,8 +163,7 @@ class AsyncBatchProcessorBase(ABC):
162
163
  *,
163
164
  file_id: base_t.ObjectId,
164
165
  uploader_key: identifier_t.IdentifierKey,
165
- material_family_key: identifier_t.IdentifierKey,
166
- recipe_key: typing.Optional[identifier_t.IdentifierKey] = None,
166
+ destination: generic_upload_t.UploadDestination,
167
167
  depends_on: typing.Optional[list[str]] = None,
168
168
  ) -> async_batch_t.QueuedAsyncBatchRequest:
169
169
  """Runs a file through an uploader.
@@ -173,8 +173,7 @@ class AsyncBatchProcessorBase(ABC):
173
173
  args = invoke_uploader_t.Arguments(
174
174
  file_id=file_id,
175
175
  uploader_key=uploader_key,
176
- material_family_key=material_family_key,
177
- recipe_key=recipe_key,
176
+ destination=destination,
178
177
  )
179
178
  json_data = serialize_for_api(args)
180
179
 
@@ -29,6 +29,7 @@ from uncountable.types import entity_t
29
29
  import uncountable.types.api.batch.execute_batch as execute_batch_t
30
30
  import uncountable.types.api.batch.execute_batch_load_async as execute_batch_load_async_t
31
31
  from uncountable.types import field_values_t
32
+ from uncountable.types import generic_upload_t
32
33
  import uncountable.types.api.recipes.get_curve as get_curve_t
33
34
  import uncountable.types.api.entity.get_entities_data as get_entities_data_t
34
35
  import uncountable.types.api.inputs.get_input_data as get_input_data_t
@@ -856,8 +857,7 @@ class ClientMethods(ABC):
856
857
  *,
857
858
  file_id: base_t.ObjectId,
858
859
  uploader_key: identifier_t.IdentifierKey,
859
- material_family_key: identifier_t.IdentifierKey,
860
- recipe_key: typing.Optional[identifier_t.IdentifierKey] = None,
860
+ destination: generic_upload_t.UploadDestination,
861
861
  ) -> invoke_uploader_t.Data:
862
862
  """Runs a file through an uploader.
863
863
 
@@ -865,8 +865,7 @@ class ClientMethods(ABC):
865
865
  args = invoke_uploader_t.Arguments(
866
866
  file_id=file_id,
867
867
  uploader_key=uploader_key,
868
- material_family_key=material_family_key,
869
- recipe_key=recipe_key,
868
+ destination=destination,
870
869
  )
871
870
  api_request = APIRequest(
872
871
  method=invoke_uploader_t.ENDPOINT_METHOD,
@@ -0,0 +1,15 @@
1
+ # flake8: noqa: F821
2
+ # ruff: noqa: E402 Q003
3
+ # fmt: off
4
+ # isort: skip_file
5
+ # DO NOT MODIFY -- This file is generated by type_spec
6
+ # Kept only for SDK backwards compatibility
7
+ from .generic_upload_t import GenericRemoteDirectoryScope as GenericRemoteDirectoryScope
8
+ from .generic_upload_t import UploadDestinationType as UploadDestinationType
9
+ from .generic_upload_t import UploadDestinationBase as UploadDestinationBase
10
+ from .generic_upload_t import UploadDestinationProject as UploadDestinationProject
11
+ from .generic_upload_t import UploadDestinationMaterialFamily as UploadDestinationMaterialFamily
12
+ from .generic_upload_t import UploadDestinationRecipe as UploadDestinationRecipe
13
+ from .generic_upload_t import UploadDestination as UploadDestination
14
+ from .generic_upload_t import GenericUploadStrategy as GenericUploadStrategy
15
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,106 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # flake8: noqa: F821
3
+ # ruff: noqa: E402 Q003
4
+ # fmt: off
5
+ # isort: skip_file
6
+ from __future__ import annotations
7
+ import typing # noqa: F401
8
+ import datetime # noqa: F401
9
+ from decimal import Decimal # noqa: F401
10
+ from pkgs.strenum_compat import StrEnum
11
+ import dataclasses
12
+ from pkgs.serialization import serial_class
13
+ from pkgs.serialization import serial_union_annotation
14
+ from . import identifier_t
15
+
16
+ __all__: list[str] = [
17
+ "GenericRemoteDirectoryScope",
18
+ "GenericUploadStrategy",
19
+ "UploadDestination",
20
+ "UploadDestinationBase",
21
+ "UploadDestinationMaterialFamily",
22
+ "UploadDestinationProject",
23
+ "UploadDestinationRecipe",
24
+ "UploadDestinationType",
25
+ ]
26
+
27
+
28
+ # DO NOT MODIFY -- This file is generated by type_spec
29
+ @dataclasses.dataclass(kw_only=True)
30
+ class GenericRemoteDirectoryScope:
31
+ src_path: str
32
+ success_archive_path: str
33
+ failure_archive_path: str
34
+ recursive: bool
35
+ prepend_date_on_archive: bool
36
+ valid_file_extensions: list[str]
37
+ filename_regex: typing.Optional[str] = None
38
+ max_files: typing.Optional[int] = None
39
+ detection_keyword: typing.Optional[str] = None
40
+ delimiter: typing.Optional[str] = None
41
+
42
+
43
+ # DO NOT MODIFY -- This file is generated by type_spec
44
+ class UploadDestinationType(StrEnum):
45
+ PROJECT = "project"
46
+ MATERIAL_FAMILY = "material_family"
47
+ RECIPE = "recipe"
48
+
49
+
50
+ # DO NOT MODIFY -- This file is generated by type_spec
51
+ @dataclasses.dataclass(kw_only=True)
52
+ class UploadDestinationBase:
53
+ type: UploadDestinationType
54
+
55
+
56
+ # DO NOT MODIFY -- This file is generated by type_spec
57
+ @serial_class(
58
+ parse_require={"type"},
59
+ )
60
+ @dataclasses.dataclass(kw_only=True)
61
+ class UploadDestinationProject(UploadDestinationBase):
62
+ type: typing.Literal[UploadDestinationType.PROJECT] = UploadDestinationType.PROJECT
63
+ project_key: identifier_t.IdentifierKey
64
+
65
+
66
+ # DO NOT MODIFY -- This file is generated by type_spec
67
+ @serial_class(
68
+ parse_require={"type"},
69
+ )
70
+ @dataclasses.dataclass(kw_only=True)
71
+ class UploadDestinationMaterialFamily(UploadDestinationBase):
72
+ type: typing.Literal[UploadDestinationType.MATERIAL_FAMILY] = UploadDestinationType.MATERIAL_FAMILY
73
+ material_family_key: identifier_t.IdentifierKey
74
+
75
+
76
+ # DO NOT MODIFY -- This file is generated by type_spec
77
+ @serial_class(
78
+ parse_require={"type"},
79
+ )
80
+ @dataclasses.dataclass(kw_only=True)
81
+ class UploadDestinationRecipe(UploadDestinationBase):
82
+ type: typing.Literal[UploadDestinationType.RECIPE] = UploadDestinationType.RECIPE
83
+ recipe_key: identifier_t.IdentifierKey
84
+
85
+
86
+ # DO NOT MODIFY -- This file is generated by type_spec
87
+ UploadDestination = typing.Annotated[
88
+ typing.Union[UploadDestinationProject, UploadDestinationMaterialFamily, UploadDestinationRecipe],
89
+ serial_union_annotation(
90
+ discriminator="type",
91
+ discriminator_map={
92
+ "project": UploadDestinationProject,
93
+ "material_family": UploadDestinationMaterialFamily,
94
+ "recipe": UploadDestinationRecipe,
95
+ },
96
+ ),
97
+ ]
98
+
99
+
100
+ # DO NOT MODIFY -- This file is generated by type_spec
101
+ @dataclasses.dataclass(kw_only=True)
102
+ class GenericUploadStrategy:
103
+ uploader_key: identifier_t.IdentifierKey
104
+ destinations: list[UploadDestination]
105
+ skip_moving_files: bool = False
106
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,9 +0,0 @@
1
- # flake8: noqa: F821
2
- # ruff: noqa: E402 Q003
3
- # fmt: off
4
- # isort: skip_file
5
- # DO NOT MODIFY -- This file is generated by type_spec
6
- # Kept only for SDK backwards compatibility
7
- from .generic_upload_t import GenericRemoteDirectoryScope as GenericRemoteDirectoryScope
8
- from .generic_upload_t import GenericUploadStrategy as GenericUploadStrategy
9
- # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,40 +0,0 @@
1
- # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
- # ruff: noqa: E402 Q003
4
- # fmt: off
5
- # isort: skip_file
6
- from __future__ import annotations
7
- import typing # noqa: F401
8
- import datetime # noqa: F401
9
- from decimal import Decimal # noqa: F401
10
- import dataclasses
11
- from . import identifier_t
12
-
13
- __all__: list[str] = [
14
- "GenericRemoteDirectoryScope",
15
- "GenericUploadStrategy",
16
- ]
17
-
18
-
19
- # DO NOT MODIFY -- This file is generated by type_spec
20
- @dataclasses.dataclass(kw_only=True)
21
- class GenericRemoteDirectoryScope:
22
- src_path: str
23
- success_archive_path: str
24
- failure_archive_path: str
25
- recursive: bool
26
- prepend_date_on_archive: bool
27
- valid_file_extensions: list[str]
28
- filename_regex: typing.Optional[str] = None
29
- max_files: typing.Optional[int] = None
30
- detection_keyword: typing.Optional[str] = None
31
- delimiter: typing.Optional[str] = None
32
-
33
-
34
- # DO NOT MODIFY -- This file is generated by type_spec
35
- @dataclasses.dataclass(kw_only=True)
36
- class GenericUploadStrategy:
37
- uploader_key: identifier_t.IdentifierKey
38
- material_family_keys: list[identifier_t.IdentifierKey]
39
- skip_moving_files: bool = False
40
- # DO NOT MODIFY -- This file is generated by type_spec