UncountablePythonSDK 0.0.91__py3-none-any.whl → 0.0.93__py3-none-any.whl

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 (193) hide show
  1. {UncountablePythonSDK-0.0.91.dist-info → UncountablePythonSDK-0.0.93.dist-info}/METADATA +2 -2
  2. UncountablePythonSDK-0.0.93.dist-info/RECORD +301 -0
  3. {UncountablePythonSDK-0.0.91.dist-info → UncountablePythonSDK-0.0.93.dist-info}/WHEEL +1 -1
  4. examples/set_recipe_metadata_file.py +1 -1
  5. examples/upload_files.py +1 -2
  6. pkgs/argument_parser/__init__.py +3 -0
  7. pkgs/argument_parser/argument_parser.py +52 -23
  8. pkgs/filesystem_utils/__init__.py +1 -0
  9. pkgs/filesystem_utils/_gdrive_session.py +4 -4
  10. pkgs/filesystem_utils/_s3_session.py +2 -1
  11. pkgs/filesystem_utils/_sftp_session.py +2 -3
  12. pkgs/filesystem_utils/file_type_utils.py +10 -10
  13. pkgs/serialization/annotation.py +5 -5
  14. pkgs/serialization/missing_sentry.py +1 -1
  15. pkgs/serialization/serial_alias.py +3 -3
  16. pkgs/serialization/serial_class.py +10 -10
  17. pkgs/serialization/serial_generic.py +1 -1
  18. pkgs/serialization/serial_union.py +10 -10
  19. pkgs/serialization_util/__init__.py +2 -0
  20. pkgs/serialization_util/serialization_helpers.py +1 -4
  21. pkgs/type_spec/actions_registry/__main__.py +0 -4
  22. pkgs/type_spec/builder.py +121 -40
  23. pkgs/type_spec/config.py +10 -5
  24. pkgs/type_spec/emit_open_api.py +2 -2
  25. pkgs/type_spec/emit_open_api_util.py +1 -1
  26. pkgs/type_spec/emit_python.py +145 -63
  27. pkgs/type_spec/emit_typescript.py +57 -10
  28. pkgs/type_spec/load_types.py +1 -2
  29. pkgs/type_spec/open_api_util.py +1 -2
  30. pkgs/type_spec/parts/base.py.prepart +2 -0
  31. pkgs/type_spec/type_info/emit_type_info.py +8 -8
  32. pkgs/type_spec/util.py +5 -7
  33. pkgs/type_spec/value_spec/__main__.py +15 -5
  34. pkgs/type_spec/value_spec/emit_python.py +5 -2
  35. pkgs/type_spec/value_spec/types.py +1 -1
  36. uncountable/core/client.py +16 -15
  37. uncountable/core/file_upload.py +39 -15
  38. uncountable/integration/construct_client.py +3 -3
  39. uncountable/integration/executors/generic_upload_executor.py +1 -1
  40. uncountable/integration/job.py +2 -2
  41. uncountable/integration/queue_runner/command_server/types.py +1 -1
  42. uncountable/integration/queue_runner/worker.py +1 -1
  43. uncountable/integration/server.py +4 -4
  44. uncountable/integration/telemetry.py +11 -0
  45. uncountable/types/__init__.py +0 -1
  46. uncountable/types/api/batch/execute_batch.py +1 -2
  47. uncountable/types/api/batch/execute_batch_load_async.py +0 -1
  48. uncountable/types/api/chemical/convert_chemical_formats.py +0 -1
  49. uncountable/types/api/entity/create_entities.py +3 -4
  50. uncountable/types/api/entity/create_entity.py +4 -5
  51. uncountable/types/api/entity/get_entities_data.py +0 -1
  52. uncountable/types/api/entity/grant_entity_permissions.py +3 -4
  53. uncountable/types/api/entity/list_entities.py +5 -6
  54. uncountable/types/api/entity/lock_entity.py +1 -2
  55. uncountable/types/api/entity/resolve_entity_ids.py +2 -3
  56. uncountable/types/api/entity/set_entity_field_values.py +0 -1
  57. uncountable/types/api/entity/set_values.py +0 -1
  58. uncountable/types/api/entity/transition_entity_phase.py +1 -2
  59. uncountable/types/api/entity/unlock_entity.py +0 -1
  60. uncountable/types/api/equipment/associate_equipment_input.py +0 -1
  61. uncountable/types/api/field_options/upsert_field_options.py +3 -4
  62. uncountable/types/api/files/download_file.py +1 -2
  63. uncountable/types/api/id_source/list_id_source.py +3 -4
  64. uncountable/types/api/id_source/match_id_source.py +1 -2
  65. uncountable/types/api/input_groups/get_input_group_names.py +0 -1
  66. uncountable/types/api/inputs/create_inputs.py +4 -5
  67. uncountable/types/api/inputs/get_input_data.py +5 -6
  68. uncountable/types/api/inputs/get_input_names.py +3 -4
  69. uncountable/types/api/inputs/get_inputs_data.py +0 -1
  70. uncountable/types/api/inputs/set_input_attribute_values.py +2 -3
  71. uncountable/types/api/inputs/set_input_category.py +2 -3
  72. uncountable/types/api/inputs/set_input_subcategories.py +0 -1
  73. uncountable/types/api/inputs/set_intermediate_type.py +1 -2
  74. uncountable/types/api/material_families/update_entity_material_families.py +1 -2
  75. uncountable/types/api/outputs/get_output_data.py +6 -7
  76. uncountable/types/api/outputs/get_output_names.py +2 -3
  77. uncountable/types/api/outputs/resolve_output_conditions.py +2 -3
  78. uncountable/types/api/permissions/set_core_permissions.py +3 -4
  79. uncountable/types/api/project/get_projects.py +3 -4
  80. uncountable/types/api/project/get_projects_data.py +4 -5
  81. uncountable/types/api/recipe_links/create_recipe_link.py +1 -2
  82. uncountable/types/api/recipe_links/remove_recipe_link.py +1 -2
  83. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +3 -4
  84. uncountable/types/api/recipes/add_recipe_to_project.py +0 -1
  85. uncountable/types/api/recipes/archive_recipes.py +1 -2
  86. uncountable/types/api/recipes/associate_recipe_as_input.py +2 -3
  87. uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -1
  88. uncountable/types/api/recipes/clear_recipe_outputs.py +0 -1
  89. uncountable/types/api/recipes/create_recipe.py +6 -7
  90. uncountable/types/api/recipes/create_recipes.py +4 -5
  91. uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -1
  92. uncountable/types/api/recipes/edit_recipe_inputs.py +9 -10
  93. uncountable/types/api/recipes/get_column_calculation_values.py +1 -2
  94. uncountable/types/api/recipes/get_curve.py +2 -3
  95. uncountable/types/api/recipes/get_recipe_calculations.py +3 -4
  96. uncountable/types/api/recipes/get_recipe_links.py +1 -2
  97. uncountable/types/api/recipes/get_recipe_names.py +0 -1
  98. uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -1
  99. uncountable/types/api/recipes/get_recipes_data.py +22 -23
  100. uncountable/types/api/recipes/lock_recipes.py +3 -4
  101. uncountable/types/api/recipes/remove_recipe_from_project.py +0 -1
  102. uncountable/types/api/recipes/set_recipe_inputs.py +6 -7
  103. uncountable/types/api/recipes/set_recipe_metadata.py +0 -1
  104. uncountable/types/api/recipes/set_recipe_output_annotations.py +5 -6
  105. uncountable/types/api/recipes/set_recipe_output_file.py +2 -3
  106. uncountable/types/api/recipes/set_recipe_outputs.py +8 -9
  107. uncountable/types/api/recipes/set_recipe_tags.py +2 -3
  108. uncountable/types/api/recipes/unarchive_recipes.py +0 -1
  109. uncountable/types/api/recipes/unlock_recipes.py +2 -3
  110. uncountable/types/api/triggers/run_trigger.py +1 -2
  111. uncountable/types/api/uploader/invoke_uploader.py +2 -3
  112. uncountable/types/async_batch.py +0 -1
  113. uncountable/types/async_batch_processor.py +23 -24
  114. uncountable/types/async_batch_t.py +5 -6
  115. uncountable/types/async_jobs.py +0 -1
  116. uncountable/types/async_jobs_t.py +1 -2
  117. uncountable/types/auth_retrieval.py +0 -1
  118. uncountable/types/auth_retrieval_t.py +2 -3
  119. uncountable/types/base.py +0 -1
  120. uncountable/types/base_t.py +2 -1
  121. uncountable/types/calculations.py +0 -1
  122. uncountable/types/calculations_t.py +0 -1
  123. uncountable/types/chemical_structure.py +0 -1
  124. uncountable/types/chemical_structure_t.py +3 -4
  125. uncountable/types/client_base.py +65 -66
  126. uncountable/types/client_config.py +0 -1
  127. uncountable/types/client_config_t.py +1 -2
  128. uncountable/types/curves.py +0 -1
  129. uncountable/types/curves_t.py +4 -5
  130. uncountable/types/entity.py +0 -1
  131. uncountable/types/entity_t.py +3 -4
  132. uncountable/types/experiment_groups.py +0 -1
  133. uncountable/types/experiment_groups_t.py +0 -1
  134. uncountable/types/field_values.py +0 -1
  135. uncountable/types/field_values_t.py +6 -7
  136. uncountable/types/fields.py +0 -1
  137. uncountable/types/fields_t.py +0 -1
  138. uncountable/types/generic_upload.py +0 -1
  139. uncountable/types/generic_upload_t.py +7 -8
  140. uncountable/types/id_source.py +0 -1
  141. uncountable/types/id_source_t.py +2 -3
  142. uncountable/types/identifier.py +0 -1
  143. uncountable/types/identifier_t.py +1 -2
  144. uncountable/types/input_attributes.py +0 -1
  145. uncountable/types/input_attributes_t.py +2 -3
  146. uncountable/types/inputs.py +0 -1
  147. uncountable/types/inputs_t.py +2 -3
  148. uncountable/types/integration_server.py +0 -1
  149. uncountable/types/integration_server_t.py +2 -3
  150. uncountable/types/job_definition.py +0 -1
  151. uncountable/types/job_definition_t.py +16 -17
  152. uncountable/types/outputs.py +0 -1
  153. uncountable/types/outputs_t.py +1 -2
  154. uncountable/types/overrides.py +0 -1
  155. uncountable/types/overrides_t.py +0 -1
  156. uncountable/types/permissions.py +0 -1
  157. uncountable/types/permissions_t.py +1 -2
  158. uncountable/types/phases.py +0 -1
  159. uncountable/types/phases_t.py +0 -1
  160. uncountable/types/post_base.py +0 -1
  161. uncountable/types/post_base_t.py +1 -2
  162. uncountable/types/queued_job.py +0 -1
  163. uncountable/types/queued_job_t.py +2 -3
  164. uncountable/types/recipe_identifiers.py +0 -1
  165. uncountable/types/recipe_identifiers_t.py +3 -4
  166. uncountable/types/recipe_inputs.py +0 -1
  167. uncountable/types/recipe_inputs_t.py +1 -2
  168. uncountable/types/recipe_links.py +0 -1
  169. uncountable/types/recipe_links_t.py +2 -3
  170. uncountable/types/recipe_metadata.py +0 -1
  171. uncountable/types/recipe_metadata_t.py +6 -7
  172. uncountable/types/recipe_output_metadata.py +0 -1
  173. uncountable/types/recipe_output_metadata_t.py +0 -1
  174. uncountable/types/recipe_tags.py +0 -1
  175. uncountable/types/recipe_tags_t.py +0 -1
  176. uncountable/types/recipe_workflow_steps.py +0 -1
  177. uncountable/types/recipe_workflow_steps_t.py +2 -3
  178. uncountable/types/recipes.py +0 -1
  179. uncountable/types/recipes_t.py +0 -1
  180. uncountable/types/response.py +0 -1
  181. uncountable/types/response_t.py +0 -1
  182. uncountable/types/secret_retrieval.py +0 -1
  183. uncountable/types/secret_retrieval_t.py +3 -4
  184. uncountable/types/units.py +0 -1
  185. uncountable/types/units_t.py +0 -1
  186. uncountable/types/users.py +0 -1
  187. uncountable/types/users_t.py +0 -1
  188. uncountable/types/webhook_job.py +0 -1
  189. uncountable/types/webhook_job_t.py +0 -1
  190. uncountable/types/workflows.py +0 -1
  191. uncountable/types/workflows_t.py +1 -2
  192. UncountablePythonSDK-0.0.91.dist-info/RECORD +0 -301
  193. {UncountablePythonSDK-0.0.91.dist-info → UncountablePythonSDK-0.0.93.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -7,7 +6,7 @@ from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from pkgs.strenum_compat import StrEnum
9
+ from enum import StrEnum
11
10
  import dataclasses
12
11
  from pkgs.serialization import serial_class
13
12
  from pkgs.serialization import serial_union_annotation
@@ -36,11 +35,11 @@ class GenericRemoteDirectoryScope:
36
35
  failure_archive_path: str
37
36
  recursive: bool
38
37
  prepend_date_on_archive: bool
39
- valid_file_extensions: list[str]
40
- filename_regex: typing.Optional[str] = None
41
- max_files: typing.Optional[int] = None
42
- detection_keyword: typing.Optional[str] = None
43
- delimiter: typing.Optional[str] = None
38
+ valid_file_extensions: list[str] | None = None
39
+ filename_regex: str | None = None
40
+ max_files: int | None = None
41
+ detection_keyword: str | None = None
42
+ delimiter: str | None = None
44
43
 
45
44
 
46
45
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -94,7 +93,7 @@ class UploadDestinationRecipe(UploadDestinationBase):
94
93
 
95
94
  # DO NOT MODIFY -- This file is generated by type_spec
96
95
  UploadDestination = typing.Annotated[
97
- typing.Union[UploadDestinationProject, UploadDestinationMaterialFamily, UploadDestinationRecipe],
96
+ UploadDestinationProject | UploadDestinationMaterialFamily | UploadDestinationRecipe,
98
97
  serial_union_annotation(
99
98
  named_type_path="sdk.generic_upload.UploadDestination",
100
99
  discriminator="type",
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -55,12 +54,12 @@ class IdSourceSpecCustomEntity(IdSourceSpecBase):
55
54
  @dataclasses.dataclass(kw_only=True)
56
55
  class IdSourceSpecFieldOptions(IdSourceSpecBase):
57
56
  set_ref_name: str
58
- subset_ref_name: typing.Optional[str] = None
57
+ subset_ref_name: str | None = None
59
58
 
60
59
 
61
60
  # DO NOT MODIFY -- This file is generated by type_spec
62
61
  IdSourceSpec = typing.Annotated[
63
- typing.Union[IdSourceSpecEntity, IdSourceSpecCustomEntity, IdSourceSpecFieldOptions],
62
+ IdSourceSpecEntity | IdSourceSpecCustomEntity | IdSourceSpecFieldOptions,
64
63
  serial_alias_annotation(
65
64
  named_type_path="sdk.id_source.IdSourceSpec",
66
65
  ),
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -55,7 +54,7 @@ class IdentifierKeyBatchReference:
55
54
 
56
55
  # DO NOT MODIFY -- This file is generated by type_spec
57
56
  IdentifierKey = typing.Annotated[
58
- typing.Union[IdentifierKeyId, IdentifierKeyBatchReference, IdentifierKeyRefName],
57
+ IdentifierKeyId | IdentifierKeyBatchReference | IdentifierKeyRefName,
59
58
  serial_alias_annotation(
60
59
  named_type_path="sdk.identifier.IdentifierKey",
61
60
  ),
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -25,6 +24,6 @@ __all__: list[str] = [
25
24
  @dataclasses.dataclass(kw_only=True)
26
25
  class InputAttributeValue:
27
26
  attribute_id: base_t.ObjectId
28
- quantity_dec: typing.Optional[Decimal] = None
29
- quantity_json: typing.Optional[base_t.JsonValue] = None
27
+ quantity_dec: Decimal | None = None
28
+ quantity_json: base_t.JsonValue | None = None
30
29
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -7,7 +6,7 @@ from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from pkgs.strenum_compat import StrEnum
9
+ from enum import StrEnum
11
10
  import dataclasses
12
11
  from pkgs.serialization import serial_class
13
12
  from pkgs.serialization import serial_string_enum
@@ -78,6 +77,6 @@ class SimpleInput:
78
77
  quantity_type: IngredientQuantityType
79
78
  name: str
80
79
  is_parameter: bool
81
- intermediate_recipe_id: typing.Optional[base_t.ObjectId]
80
+ intermediate_recipe_id: base_t.ObjectId | None
82
81
  input_type: str
83
82
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -7,7 +6,7 @@ from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from pkgs.strenum_compat import StrEnum
9
+ from enum import StrEnum
11
10
  import dataclasses
12
11
  from pkgs.serialization import serial_class
13
12
  from . import auth_retrieval_t
@@ -34,7 +33,7 @@ class IntegrationEnvironment(StrEnum):
34
33
  class EnvironmentConfig:
35
34
  auth_retrieval: auth_retrieval_t.AuthRetrieval
36
35
  base_url: str
37
- client_options: typing.Optional[client_config_t.ClientConfigOptions] = None
36
+ client_options: client_config_t.ClientConfigOptions | None = None
38
37
 
39
38
 
40
39
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -7,7 +6,7 @@ from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from pkgs.strenum_compat import StrEnum
9
+ from enum import StrEnum
11
10
  import dataclasses
12
11
  from pkgs.serialization import serial_class
13
12
  from pkgs.serialization import serial_union_annotation
@@ -117,16 +116,16 @@ class S3CloudProvider(StrEnum):
117
116
  class GenericUploadDataSourceS3(GenericUploadDataSourceBase):
118
117
  type: typing.Literal[GenericUploadDataSourceType.S3] = GenericUploadDataSourceType.S3
119
118
  bucket_name: str
120
- cloud_provider: typing.Optional[S3CloudProvider] = None
121
- endpoint_url: typing.Optional[str] = None
122
- region_name: typing.Optional[str] = None
123
- access_key_id: typing.Optional[str] = None
124
- access_key_secret: typing.Optional[secret_retrieval_t.SecretRetrieval] = None
119
+ cloud_provider: S3CloudProvider | None = None
120
+ endpoint_url: str | None = None
121
+ region_name: str | None = None
122
+ access_key_id: str | None = None
123
+ access_key_secret: secret_retrieval_t.SecretRetrieval | None = None
125
124
 
126
125
 
127
126
  # DO NOT MODIFY -- This file is generated by type_spec
128
127
  GenericUploadDataSource = typing.Annotated[
129
- typing.Union[GenericUploadDataSourceSFTP, GenericUploadDataSourceS3],
128
+ GenericUploadDataSourceSFTP | GenericUploadDataSourceS3,
130
129
  serial_union_annotation(
131
130
  named_type_path="sdk.job_definition.GenericUploadDataSource",
132
131
  discriminator="type",
@@ -153,7 +152,7 @@ class JobExecutorGenericUpload(JobExecutorBase):
153
152
 
154
153
  # DO NOT MODIFY -- This file is generated by type_spec
155
154
  JobExecutor = typing.Annotated[
156
- typing.Union[JobExecutorScript, JobExecutorGenericUpload],
155
+ JobExecutorScript | JobExecutorGenericUpload,
157
156
  serial_union_annotation(
158
157
  named_type_path="sdk.job_definition.JobExecutor",
159
158
  discriminator="type",
@@ -172,7 +171,7 @@ JobExecutor = typing.Annotated[
172
171
  @dataclasses.dataclass(kw_only=True)
173
172
  class JobLoggingSettings:
174
173
  enabled: bool = False
175
- share_with_user_groups: typing.Optional[list[identifier_t.IdentifierKey]] = None
174
+ share_with_user_groups: list[identifier_t.IdentifierKey] | None = None
176
175
 
177
176
 
178
177
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -185,7 +184,7 @@ class JobDefinitionBase:
185
184
  name: str
186
185
  executor: JobExecutor
187
186
  enabled: bool = True
188
- logging_settings: typing.Optional[JobLoggingSettings] = None
187
+ logging_settings: JobLoggingSettings | None = None
189
188
 
190
189
 
191
190
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -212,7 +211,7 @@ class WebhookJobDefinition(JobDefinitionBase):
212
211
 
213
212
  # DO NOT MODIFY -- This file is generated by type_spec
214
213
  JobDefinition = typing.Annotated[
215
- typing.Union[CronJobDefinition, WebhookJobDefinition],
214
+ CronJobDefinition | WebhookJobDefinition,
216
215
  serial_union_annotation(
217
216
  named_type_path="sdk.job_definition.JobDefinition",
218
217
  discriminator="type",
@@ -231,10 +230,10 @@ JobDefinition = typing.Annotated[
231
230
  @dataclasses.dataclass(kw_only=True)
232
231
  class ProfileDefinition:
233
232
  jobs: list[JobDefinition]
234
- auth_retrieval: typing.Optional[auth_retrieval_t.AuthRetrieval] = None
235
- base_url: typing.Optional[str] = None
236
- client_options: typing.Optional[client_config_t.ClientConfigOptions] = None
237
- environments: typing.Optional[dict[integration_server_t.IntegrationEnvironment, integration_server_t.EnvironmentConfig]] = None
233
+ auth_retrieval: auth_retrieval_t.AuthRetrieval | None = None
234
+ base_url: str | None = None
235
+ client_options: client_config_t.ClientConfigOptions | None = None
236
+ environments: dict[integration_server_t.IntegrationEnvironment, integration_server_t.EnvironmentConfig] | None = None
238
237
 
239
238
 
240
239
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -246,7 +245,7 @@ class ProfileMetadata:
246
245
  name: str
247
246
  base_url: str
248
247
  auth_retrieval: auth_retrieval_t.AuthRetrieval
249
- client_options: typing.Optional[client_config_t.ClientConfigOptions]
248
+ client_options: client_config_t.ClientConfigOptions | None
250
249
  jobs: list[JobDefinition]
251
250
 
252
251
 
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -25,6 +24,6 @@ __all__: list[str] = [
25
24
  class SimpleOutput:
26
25
  output_id: base_t.ObjectId
27
26
  name: str
28
- unit: typing.Optional[units_t.SimpleUnit]
27
+ unit: units_t.SimpleUnit | None
29
28
  quantity_type: str
30
29
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -7,7 +6,7 @@ from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from pkgs.strenum_compat import StrEnum
9
+ from enum import StrEnum
11
10
  from pkgs.serialization import serial_string_enum
12
11
 
13
12
  __all__: list[str] = [
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -7,7 +6,7 @@ from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from pkgs.strenum_compat import StrEnum
9
+ from enum import StrEnum
11
10
  from pkgs.serialization import serial_string_enum
12
11
 
13
12
  __all__: list[str] = [
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -7,7 +6,7 @@ from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from pkgs.strenum_compat import StrEnum
9
+ from enum import StrEnum
11
10
  import dataclasses
12
11
  from pkgs.serialization import serial_class
13
12
  from pkgs.serialization import serial_union_annotation
@@ -77,7 +76,7 @@ class InvocationContextWebhook(InvocationContextBase):
77
76
 
78
77
  # DO NOT MODIFY -- This file is generated by type_spec
79
78
  InvocationContext = typing.Annotated[
80
- typing.Union[InvocationContextCron, InvocationContextManual, InvocationContextWebhook],
79
+ InvocationContextCron | InvocationContextManual | InvocationContextWebhook,
81
80
  serial_union_annotation(
82
81
  named_type_path="sdk.queued_job.InvocationContext",
83
82
  discriminator="type",
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -42,8 +41,8 @@ class RecipeIdentifierEditableName:
42
41
  class RecipeIdentifierMetadata:
43
42
  type: typing.Literal["metadata"] = "metadata"
44
43
  recipe_metadata_id: base_t.ObjectId
45
- quantity_dec: typing.Optional[Decimal] = None
46
- quantity_json: typing.Optional[str] = None
44
+ quantity_dec: Decimal | None = None
45
+ quantity_json: str | None = None
47
46
 
48
47
 
49
48
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -59,7 +58,7 @@ class RecipeIdentifierMaterialFamily:
59
58
 
60
59
  # DO NOT MODIFY -- This file is generated by type_spec
61
60
  RecipeIdentifier = typing.Annotated[
62
- typing.Union[RecipeIdentifierEditableName, RecipeIdentifierMetadata, RecipeIdentifierMaterialFamily],
61
+ RecipeIdentifierEditableName | RecipeIdentifierMetadata | RecipeIdentifierMaterialFamily,
63
62
  serial_alias_annotation(
64
63
  named_type_path="sdk.recipe_identifiers.RecipeIdentifier",
65
64
  ),
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -7,7 +6,7 @@ from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from pkgs.strenum_compat import StrEnum
9
+ from enum import StrEnum
11
10
 
12
11
  __all__: list[str] = [
13
12
  "InputValueType",
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -7,7 +6,7 @@ from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from pkgs.strenum_compat import StrEnum
9
+ from enum import StrEnum
11
10
  import dataclasses
12
11
  from pkgs.serialization import serial_class
13
12
  from pkgs.serialization import serial_string_enum
@@ -50,5 +49,5 @@ class RecipeLink:
50
49
  recipe_id_from: base_t.ObjectId
51
50
  recipe_id_to: base_t.ObjectId
52
51
  link_type: str
53
- name: typing.Optional[str]
52
+ name: str | None
54
53
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -27,10 +26,10 @@ __all__: list[str] = [
27
26
  @dataclasses.dataclass(kw_only=True)
28
27
  class MetadataValue:
29
28
  metadata_id: base_t.ObjectId
30
- value_numeric: typing.Optional[Decimal] = None
31
- value_str: typing.Optional[str] = None
32
- value_json: typing.Optional[base_t.JsonValue] = None
33
- value_file_ids: typing.Optional[list[base_t.ObjectId]] = None
29
+ value_numeric: Decimal | None = None
30
+ value_str: str | None = None
31
+ value_json: base_t.JsonValue | None = None
32
+ value_file_ids: list[base_t.ObjectId] | None = None
34
33
 
35
34
 
36
35
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -53,6 +52,6 @@ class SimpleRecipeMetadataField:
53
52
  @dataclasses.dataclass(kw_only=True)
54
53
  class RecipeMetadata:
55
54
  metadata_id: base_t.ObjectId
56
- quantity_dec: typing.Optional[Decimal] = None
57
- quantity_json: typing.Optional[base_t.JsonValue] = None
55
+ quantity_dec: Decimal | None = None
56
+ quantity_json: base_t.JsonValue | None = None
58
57
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -7,7 +6,7 @@ from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from pkgs.strenum_compat import StrEnum
9
+ from enum import StrEnum
11
10
  import dataclasses
12
11
  from pkgs.serialization import serial_class
13
12
  from pkgs.serialization import serial_union_annotation
@@ -81,7 +80,7 @@ class RecipeWorkflowStepIdentifierKey:
81
80
 
82
81
  # DO NOT MODIFY -- This file is generated by type_spec
83
82
  RecipeWorkflowStepIdentifier = typing.Annotated[
84
- typing.Union[RecipeWorkflowStepIdentifierDefault, RecipeWorkflowStepIdentifierWorkflowStep, RecipeWorkflowStepIdentifierKey],
83
+ RecipeWorkflowStepIdentifierDefault | RecipeWorkflowStepIdentifierWorkflowStep | RecipeWorkflowStepIdentifierKey,
85
84
  serial_union_annotation(
86
85
  named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifier",
87
86
  discriminator="type",
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -7,7 +6,7 @@ from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from pkgs.strenum_compat import StrEnum
9
+ from enum import StrEnum
11
10
  import dataclasses
12
11
  from pkgs.serialization import serial_class
13
12
  from pkgs.serialization import serial_union_annotation
@@ -57,12 +56,12 @@ class SecretRetrievalAWS(SecretRetrievalBase):
57
56
  type: typing.Literal[SecretRetrievalType.AWS] = SecretRetrievalType.AWS
58
57
  secret_name: str
59
58
  region: str
60
- sub_key: typing.Optional[str] = None
59
+ sub_key: str | None = None
61
60
 
62
61
 
63
62
  # DO NOT MODIFY -- This file is generated by type_spec
64
63
  SecretRetrieval = typing.Annotated[
65
- typing.Union[SecretRetrievalEnv, SecretRetrievalAWS],
64
+ SecretRetrievalEnv | SecretRetrievalAWS,
66
65
  serial_union_annotation(
67
66
  named_type_path="sdk.secret_retrieval.SecretRetrieval",
68
67
  discriminator="type",
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file