UncountablePythonSDK 0.0.92__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 (177) hide show
  1. {UncountablePythonSDK-0.0.92.dist-info → UncountablePythonSDK-0.0.93.dist-info}/METADATA +1 -1
  2. UncountablePythonSDK-0.0.93.dist-info/RECORD +301 -0
  3. pkgs/argument_parser/argument_parser.py +7 -7
  4. pkgs/filesystem_utils/_s3_session.py +2 -1
  5. pkgs/serialization/annotation.py +3 -3
  6. pkgs/serialization/missing_sentry.py +1 -1
  7. pkgs/serialization/serial_alias.py +2 -2
  8. pkgs/serialization/serial_class.py +1 -1
  9. pkgs/serialization/serial_generic.py +1 -1
  10. pkgs/serialization/serial_union.py +3 -3
  11. pkgs/serialization_util/serialization_helpers.py +1 -4
  12. pkgs/type_spec/actions_registry/__main__.py +0 -4
  13. pkgs/type_spec/builder.py +25 -21
  14. pkgs/type_spec/config.py +2 -5
  15. pkgs/type_spec/emit_open_api.py +1 -1
  16. pkgs/type_spec/emit_python.py +44 -28
  17. pkgs/type_spec/emit_typescript.py +13 -6
  18. pkgs/type_spec/parts/base.py.prepart +2 -0
  19. pkgs/type_spec/util.py +3 -5
  20. pkgs/type_spec/value_spec/__main__.py +15 -5
  21. pkgs/type_spec/value_spec/emit_python.py +5 -2
  22. pkgs/type_spec/value_spec/types.py +1 -1
  23. uncountable/core/client.py +3 -3
  24. uncountable/core/file_upload.py +5 -0
  25. uncountable/integration/job.py +2 -2
  26. uncountable/integration/queue_runner/command_server/types.py +1 -1
  27. uncountable/integration/server.py +4 -4
  28. uncountable/types/__init__.py +0 -1
  29. uncountable/types/api/batch/execute_batch.py +1 -2
  30. uncountable/types/api/batch/execute_batch_load_async.py +0 -1
  31. uncountable/types/api/chemical/convert_chemical_formats.py +0 -1
  32. uncountable/types/api/entity/create_entities.py +1 -2
  33. uncountable/types/api/entity/create_entity.py +2 -3
  34. uncountable/types/api/entity/get_entities_data.py +0 -1
  35. uncountable/types/api/entity/grant_entity_permissions.py +0 -1
  36. uncountable/types/api/entity/list_entities.py +3 -4
  37. uncountable/types/api/entity/lock_entity.py +0 -1
  38. uncountable/types/api/entity/resolve_entity_ids.py +2 -3
  39. uncountable/types/api/entity/set_entity_field_values.py +0 -1
  40. uncountable/types/api/entity/set_values.py +0 -1
  41. uncountable/types/api/entity/transition_entity_phase.py +1 -2
  42. uncountable/types/api/entity/unlock_entity.py +0 -1
  43. uncountable/types/api/equipment/associate_equipment_input.py +0 -1
  44. uncountable/types/api/field_options/upsert_field_options.py +0 -1
  45. uncountable/types/api/files/download_file.py +1 -2
  46. uncountable/types/api/id_source/list_id_source.py +3 -4
  47. uncountable/types/api/id_source/match_id_source.py +1 -2
  48. uncountable/types/api/input_groups/get_input_group_names.py +0 -1
  49. uncountable/types/api/inputs/create_inputs.py +2 -3
  50. uncountable/types/api/inputs/get_input_data.py +5 -6
  51. uncountable/types/api/inputs/get_input_names.py +3 -4
  52. uncountable/types/api/inputs/get_inputs_data.py +0 -1
  53. uncountable/types/api/inputs/set_input_attribute_values.py +0 -1
  54. uncountable/types/api/inputs/set_input_category.py +1 -2
  55. uncountable/types/api/inputs/set_input_subcategories.py +0 -1
  56. uncountable/types/api/inputs/set_intermediate_type.py +1 -2
  57. uncountable/types/api/material_families/update_entity_material_families.py +1 -2
  58. uncountable/types/api/outputs/get_output_data.py +2 -3
  59. uncountable/types/api/outputs/get_output_names.py +0 -1
  60. uncountable/types/api/outputs/resolve_output_conditions.py +0 -1
  61. uncountable/types/api/permissions/set_core_permissions.py +1 -2
  62. uncountable/types/api/project/get_projects.py +3 -4
  63. uncountable/types/api/project/get_projects_data.py +4 -5
  64. uncountable/types/api/recipe_links/create_recipe_link.py +1 -2
  65. uncountable/types/api/recipe_links/remove_recipe_link.py +1 -2
  66. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +3 -4
  67. uncountable/types/api/recipes/add_recipe_to_project.py +0 -1
  68. uncountable/types/api/recipes/archive_recipes.py +0 -1
  69. uncountable/types/api/recipes/associate_recipe_as_input.py +0 -1
  70. uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -1
  71. uncountable/types/api/recipes/clear_recipe_outputs.py +0 -1
  72. uncountable/types/api/recipes/create_recipe.py +1 -2
  73. uncountable/types/api/recipes/create_recipes.py +1 -2
  74. uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -1
  75. uncountable/types/api/recipes/edit_recipe_inputs.py +3 -4
  76. uncountable/types/api/recipes/get_column_calculation_values.py +0 -1
  77. uncountable/types/api/recipes/get_curve.py +0 -1
  78. uncountable/types/api/recipes/get_recipe_calculations.py +0 -1
  79. uncountable/types/api/recipes/get_recipe_links.py +1 -2
  80. uncountable/types/api/recipes/get_recipe_names.py +0 -1
  81. uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -1
  82. uncountable/types/api/recipes/get_recipes_data.py +13 -14
  83. uncountable/types/api/recipes/lock_recipes.py +1 -2
  84. uncountable/types/api/recipes/remove_recipe_from_project.py +0 -1
  85. uncountable/types/api/recipes/set_recipe_inputs.py +1 -2
  86. uncountable/types/api/recipes/set_recipe_metadata.py +0 -1
  87. uncountable/types/api/recipes/set_recipe_output_annotations.py +2 -3
  88. uncountable/types/api/recipes/set_recipe_output_file.py +0 -1
  89. uncountable/types/api/recipes/set_recipe_outputs.py +3 -4
  90. uncountable/types/api/recipes/set_recipe_tags.py +2 -3
  91. uncountable/types/api/recipes/unarchive_recipes.py +0 -1
  92. uncountable/types/api/recipes/unlock_recipes.py +1 -2
  93. uncountable/types/api/triggers/run_trigger.py +0 -1
  94. uncountable/types/api/uploader/invoke_uploader.py +0 -1
  95. uncountable/types/async_batch.py +0 -1
  96. uncountable/types/async_batch_processor.py +1 -2
  97. uncountable/types/async_batch_t.py +1 -2
  98. uncountable/types/async_jobs.py +0 -1
  99. uncountable/types/async_jobs_t.py +1 -2
  100. uncountable/types/auth_retrieval.py +0 -1
  101. uncountable/types/auth_retrieval_t.py +2 -3
  102. uncountable/types/base.py +0 -1
  103. uncountable/types/base_t.py +2 -1
  104. uncountable/types/calculations.py +0 -1
  105. uncountable/types/calculations_t.py +0 -1
  106. uncountable/types/chemical_structure.py +0 -1
  107. uncountable/types/chemical_structure_t.py +0 -1
  108. uncountable/types/client_base.py +29 -30
  109. uncountable/types/client_config.py +0 -1
  110. uncountable/types/client_config_t.py +1 -2
  111. uncountable/types/curves.py +0 -1
  112. uncountable/types/curves_t.py +2 -3
  113. uncountable/types/entity.py +0 -1
  114. uncountable/types/entity_t.py +3 -4
  115. uncountable/types/experiment_groups.py +0 -1
  116. uncountable/types/experiment_groups_t.py +0 -1
  117. uncountable/types/field_values.py +0 -1
  118. uncountable/types/field_values_t.py +6 -7
  119. uncountable/types/fields.py +0 -1
  120. uncountable/types/fields_t.py +0 -1
  121. uncountable/types/generic_upload.py +0 -1
  122. uncountable/types/generic_upload_t.py +2 -3
  123. uncountable/types/id_source.py +0 -1
  124. uncountable/types/id_source_t.py +1 -2
  125. uncountable/types/identifier.py +0 -1
  126. uncountable/types/identifier_t.py +1 -2
  127. uncountable/types/input_attributes.py +0 -1
  128. uncountable/types/input_attributes_t.py +0 -1
  129. uncountable/types/inputs.py +0 -1
  130. uncountable/types/inputs_t.py +2 -3
  131. uncountable/types/integration_server.py +0 -1
  132. uncountable/types/integration_server_t.py +1 -2
  133. uncountable/types/job_definition.py +0 -1
  134. uncountable/types/job_definition_t.py +5 -6
  135. uncountable/types/outputs.py +0 -1
  136. uncountable/types/outputs_t.py +1 -2
  137. uncountable/types/overrides.py +0 -1
  138. uncountable/types/overrides_t.py +0 -1
  139. uncountable/types/permissions.py +0 -1
  140. uncountable/types/permissions_t.py +1 -2
  141. uncountable/types/phases.py +0 -1
  142. uncountable/types/phases_t.py +0 -1
  143. uncountable/types/post_base.py +0 -1
  144. uncountable/types/post_base_t.py +1 -2
  145. uncountable/types/queued_job.py +0 -1
  146. uncountable/types/queued_job_t.py +2 -3
  147. uncountable/types/recipe_identifiers.py +0 -1
  148. uncountable/types/recipe_identifiers_t.py +1 -2
  149. uncountable/types/recipe_inputs.py +0 -1
  150. uncountable/types/recipe_inputs_t.py +1 -2
  151. uncountable/types/recipe_links.py +0 -1
  152. uncountable/types/recipe_links_t.py +2 -3
  153. uncountable/types/recipe_metadata.py +0 -1
  154. uncountable/types/recipe_metadata_t.py +0 -1
  155. uncountable/types/recipe_output_metadata.py +0 -1
  156. uncountable/types/recipe_output_metadata_t.py +0 -1
  157. uncountable/types/recipe_tags.py +0 -1
  158. uncountable/types/recipe_tags_t.py +0 -1
  159. uncountable/types/recipe_workflow_steps.py +0 -1
  160. uncountable/types/recipe_workflow_steps_t.py +2 -3
  161. uncountable/types/recipes.py +0 -1
  162. uncountable/types/recipes_t.py +0 -1
  163. uncountable/types/response.py +0 -1
  164. uncountable/types/response_t.py +0 -1
  165. uncountable/types/secret_retrieval.py +0 -1
  166. uncountable/types/secret_retrieval_t.py +2 -3
  167. uncountable/types/units.py +0 -1
  168. uncountable/types/units_t.py +0 -1
  169. uncountable/types/users.py +0 -1
  170. uncountable/types/users_t.py +0 -1
  171. uncountable/types/webhook_job.py +0 -1
  172. uncountable/types/webhook_job_t.py +0 -1
  173. uncountable/types/workflows.py +0 -1
  174. uncountable/types/workflows_t.py +1 -2
  175. UncountablePythonSDK-0.0.92.dist-info/RECORD +0 -301
  176. {UncountablePythonSDK-0.0.92.dist-info → UncountablePythonSDK-0.0.93.dist-info}/WHEEL +0 -0
  177. {UncountablePythonSDK-0.0.92.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
@@ -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
@@ -32,8 +31,8 @@ ENDPOINT_PATH = "api/external/id_source/list_id_source"
32
31
  class Arguments:
33
32
  spec: id_source_t.IdSourceSpec
34
33
  search_label: str
35
- offset: typing.Optional[int] | None = None
36
- limit: typing.Optional[int] | None = None
34
+ offset: int | None = None
35
+ limit: int | None = None
37
36
 
38
37
 
39
38
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -42,7 +41,7 @@ class Arguments:
42
41
  )
43
42
  @dataclasses.dataclass(kw_only=True)
44
43
  class IdName:
45
- id: typing.Union[base_t.ObjectId, str]
44
+ id: base_t.ObjectId | str
46
45
  name: str
47
46
 
48
47
 
@@ -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
@@ -41,7 +40,7 @@ class Arguments:
41
40
  @dataclasses.dataclass(kw_only=True)
42
41
  class Match:
43
42
  name: str
44
- ids: list[typing.Union[base_t.ObjectId, str]]
43
+ ids: list[base_t.ObjectId | str]
45
44
 
46
45
 
47
46
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -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,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
@@ -43,8 +42,8 @@ class Arguments:
43
42
  class InputToCreate:
44
43
  name: str
45
44
  material_family_ids: list[base_t.ObjectId]
46
- quantity_type: typing.Union[typing.Literal[inputs_t.IngredientQuantityType.NUMERIC], typing.Literal[inputs_t.IngredientQuantityType.TEXT]]
47
- type: typing.Union[typing.Literal[inputs_t.IngredientType.INGREDIENT], typing.Literal[inputs_t.IngredientType.PROCESS_PARAMETER]]
45
+ quantity_type: typing.Literal[inputs_t.IngredientQuantityType.NUMERIC] | typing.Literal[inputs_t.IngredientQuantityType.TEXT]
46
+ type: typing.Literal[inputs_t.IngredientType.INGREDIENT] | typing.Literal[inputs_t.IngredientType.PROCESS_PARAMETER]
48
47
  attributes: list[input_attributes_t.InputAttributeValue] | None = None
49
48
  category_id: base_t.ObjectId | None = None
50
49
 
@@ -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
@@ -34,10 +33,10 @@ ENDPOINT_PATH = "api/external/inputs/external_get_input_data"
34
33
  @dataclasses.dataclass(kw_only=True)
35
34
  class Arguments:
36
35
  material_family_id: base_t.ObjectId
37
- input_ids: typing.Optional[list[base_t.ObjectId]]
38
- is_parameter: typing.Optional[bool]
39
- offset: typing.Optional[int] | None = None
40
- limit: typing.Optional[int] | None = None
36
+ input_ids: list[base_t.ObjectId] | None
37
+ is_parameter: bool | None
38
+ offset: int | None = None
39
+ limit: int | None = None
41
40
 
42
41
 
43
42
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -82,7 +81,7 @@ class FullInput:
82
81
  quantity_type: str
83
82
  is_parameter: bool
84
83
  attributes: list[input_attributes_t.InputAttributeValue]
85
- global_category_id: typing.Optional[base_t.ObjectId]
84
+ global_category_id: base_t.ObjectId | None
86
85
  subcategory_ids: list[base_t.ObjectId]
87
86
 
88
87
 
@@ -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
@@ -30,9 +29,9 @@ ENDPOINT_PATH = "api/external/inputs/external_get_input_names"
30
29
  @dataclasses.dataclass(kw_only=True)
31
30
  class Arguments:
32
31
  material_family_id: base_t.ObjectId
33
- is_parameter: typing.Optional[bool]
34
- offset: typing.Optional[int] | None = None
35
- limit: typing.Optional[int] | None = None
32
+ is_parameter: bool | None
33
+ offset: int | None = None
34
+ limit: int | None = None
36
35
 
37
36
 
38
37
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -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,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,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
@@ -30,7 +29,7 @@ ENDPOINT_PATH = "api/external/inputs/external_set_input_category"
30
29
  @dataclasses.dataclass(kw_only=True)
31
30
  class Arguments:
32
31
  input_key: identifier_t.IdentifierKey
33
- category_id: typing.Optional[int]
32
+ category_id: int | None
34
33
  material_family_ids: list[int] | None = None
35
34
 
36
35
 
@@ -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,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 identifier_t
@@ -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
@@ -33,7 +32,7 @@ ENDPOINT_PATH = "api/external/material_families/external_update_entity_material_
33
32
  @dataclasses.dataclass(kw_only=True)
34
33
  class Arguments:
35
34
  entity_key: identifier_t.IdentifierKey
36
- entity_type: typing.Union[typing.Literal[entity_t.EntityType.RECIPE_METADATA], typing.Literal[entity_t.EntityType.INGREDIENT], typing.Literal[entity_t.EntityType.OUTPUT], typing.Literal[entity_t.EntityType.CONDITION_PARAMETER], typing.Literal[entity_t.EntityType.INGREDIENT_ATTRIBUTE]]
35
+ entity_type: typing.Literal[entity_t.EntityType.RECIPE_METADATA] | typing.Literal[entity_t.EntityType.INGREDIENT] | typing.Literal[entity_t.EntityType.OUTPUT] | typing.Literal[entity_t.EntityType.CONDITION_PARAMETER] | typing.Literal[entity_t.EntityType.INGREDIENT_ATTRIBUTE]
37
36
  material_family_ids: list[base_t.ObjectId]
38
37
  update_type: post_base_t.UpdateType
39
38
 
@@ -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
@@ -83,8 +82,8 @@ class FullOutput:
83
82
  name: str
84
83
  quantity_type: str
85
84
  attributes: list[OutputAttrVal]
86
- global_category_id: typing.Optional[base_t.ObjectId]
87
- unit_id: typing.Optional[base_t.ObjectId]
85
+ global_category_id: base_t.ObjectId | None
86
+ unit_id: base_t.ObjectId | None
88
87
 
89
88
 
90
89
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -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,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,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
@@ -75,7 +74,7 @@ class PermissionsScopeAllMaterialFamilies:
75
74
 
76
75
  # DO NOT MODIFY -- This file is generated by type_spec
77
76
  PermissionsScope = typing.Annotated[
78
- typing.Union[PermissionsScopeProject, PermissionsScopeRecipe, PermissionsScopeMaterialFamily, PermissionsScopeAllMaterialFamilies],
77
+ PermissionsScopeProject | PermissionsScopeRecipe | PermissionsScopeMaterialFamily | PermissionsScopeAllMaterialFamilies,
79
78
  serial_alias_annotation(
80
79
  named_type_path="sdk.api.permissions.set_core_permissions.PermissionsScope",
81
80
  ),
@@ -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
@@ -31,7 +30,7 @@ ENDPOINT_PATH = "api/external/project/external_get_projects"
31
30
  @dataclasses.dataclass(kw_only=True)
32
31
  class Arguments:
33
32
  all_material_families: bool
34
- material_family_id: typing.Optional[base_t.ObjectId]
33
+ material_family_id: base_t.ObjectId | None
35
34
 
36
35
 
37
36
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -43,8 +42,8 @@ class Project:
43
42
  id: base_t.ObjectId
44
43
  name: str
45
44
  material_family_id: base_t.ObjectId
46
- project_owner_id: typing.Optional[base_t.ObjectId]
47
- phase_id: typing.Optional[base_t.ObjectId]
45
+ project_owner_id: base_t.ObjectId | None
46
+ phase_id: base_t.ObjectId | None
48
47
 
49
48
 
50
49
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -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
@@ -33,8 +32,8 @@ ENDPOINT_PATH = "api/external/project/external_get_projects_data"
33
32
  @dataclasses.dataclass(kw_only=True)
34
33
  class Arguments:
35
34
  project_ids: list[base_t.ObjectId]
36
- offset: typing.Optional[int] | None = None
37
- limit: typing.Optional[int] | None = None
35
+ offset: int | None = None
36
+ limit: int | None = None
38
37
 
39
38
 
40
39
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -46,8 +45,8 @@ class ProjectDetailed:
46
45
  id: base_t.ObjectId
47
46
  name: str
48
47
  material_family_id: base_t.ObjectId
49
- project_owner_id: typing.Optional[base_t.ObjectId]
50
- phase_id: typing.Optional[base_t.ObjectId]
48
+ project_owner_id: base_t.ObjectId | None
49
+ phase_id: base_t.ObjectId | None
51
50
  values: list[field_values_t.ArgumentValueId]
52
51
 
53
52
 
@@ -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
@@ -32,7 +31,7 @@ ENDPOINT_PATH = "api/external/recipe_links/create_recipe_link"
32
31
  class Arguments:
33
32
  recipe_from_key: identifier_t.IdentifierKey
34
33
  recipe_to_key: identifier_t.IdentifierKey
35
- link_type: typing.Union[typing.Literal[recipe_links_t.RecipeLinkType.CHILD], typing.Literal[recipe_links_t.RecipeLinkType.CONTROL], typing.Literal[recipe_links_t.RecipeLinkType.USER_LINK]]
34
+ link_type: typing.Literal[recipe_links_t.RecipeLinkType.CHILD] | typing.Literal[recipe_links_t.RecipeLinkType.CONTROL] | typing.Literal[recipe_links_t.RecipeLinkType.USER_LINK]
36
35
  name: str
37
36
 
38
37
 
@@ -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
@@ -32,7 +31,7 @@ ENDPOINT_PATH = "api/external/recipe_links/remove_recipe_link"
32
31
  class Arguments:
33
32
  recipe_from_key: identifier_t.IdentifierKey
34
33
  recipe_to_key: identifier_t.IdentifierKey
35
- link_type: typing.Union[typing.Literal[recipe_links_t.RecipeLinkType.CHILD], typing.Literal[recipe_links_t.RecipeLinkType.CONTROL], typing.Literal[recipe_links_t.RecipeLinkType.USER_LINK]]
34
+ link_type: typing.Literal[recipe_links_t.RecipeLinkType.CHILD] | typing.Literal[recipe_links_t.RecipeLinkType.CONTROL] | typing.Literal[recipe_links_t.RecipeLinkType.USER_LINK]
36
35
 
37
36
 
38
37
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -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
@@ -30,9 +29,9 @@ ENDPOINT_PATH = "api/external/recipe_metadata/external_get_recipe_metadata_data"
30
29
  @dataclasses.dataclass(kw_only=True)
31
30
  class Arguments:
32
31
  material_family_id: base_t.ObjectId
33
- recipe_metadata_ids: typing.Optional[list[base_t.ObjectId]]
34
- offset: typing.Optional[int] | None = None
35
- limit: typing.Optional[int] | None = None
32
+ recipe_metadata_ids: list[base_t.ObjectId] | None
33
+ offset: int | None = None
34
+ limit: int | None = None
36
35
 
37
36
 
38
37
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -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,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,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,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,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,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
@@ -35,7 +34,7 @@ class Arguments:
35
34
  workflow_id: base_t.ObjectId
36
35
  name: str | None = None
37
36
  project_id: base_t.ObjectId | None = None
38
- workflow_variant_id: typing.Optional[base_t.ObjectId] | None = None
37
+ workflow_variant_id: base_t.ObjectId | None = None
39
38
  recipe_metadata: list[recipe_metadata_t.MetadataValue] | None = None
40
39
  identifiers: recipe_identifiers_t.RecipeIdentifiers | None = None
41
40
  definition_key: identifier_t.IdentifierKey | None = None
@@ -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
@@ -33,7 +32,7 @@ ENDPOINT_PATH = "api/external/recipes/external_create_recipes"
33
32
  class CreateRecipeDefinition:
34
33
  workflow_id: base_t.ObjectId
35
34
  name: str | None = None
36
- workflow_variant_id: typing.Optional[base_t.ObjectId] | None = None
35
+ workflow_variant_id: base_t.ObjectId | None = None
37
36
  recipe_metadata: list[recipe_metadata_t.MetadataValue] | None = None
38
37
 
39
38
 
@@ -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,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
@@ -181,7 +180,7 @@ class RecipeInputEditUpdateAnnotations(RecipeInputEditInputBase):
181
180
  class RecipeInputEditSetRole(RecipeInputEditBase):
182
181
  type: typing.Literal[RecipeInputEditType.SET_ROLE] = RecipeInputEditType.SET_ROLE
183
182
  ingredient_key: identifier_t.IdentifierKey
184
- ingredient_role_key: typing.Optional[identifier_t.IdentifierKey]
183
+ ingredient_role_key: identifier_t.IdentifierKey | None
185
184
 
186
185
 
187
186
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -243,7 +242,7 @@ class RecipeInputEditPlaceholder(RecipeInputEditBase):
243
242
 
244
243
  # DO NOT MODIFY -- This file is generated by type_spec
245
244
  RecipeInputEdit = typing.Annotated[
246
- typing.Union[RecipeInputEditClearInputs, RecipeInputEditUpsertInput, RecipeInputEditAddInput, RecipeInputEditUpdateAnnotations, RecipeInputEditSetLot, RecipeInputEditChangeBasisViewed, RecipeInputEditAddInstructions, RecipeInputEditSetRole, RecipeInputEditPlaceholder],
245
+ RecipeInputEditClearInputs | RecipeInputEditUpsertInput | RecipeInputEditAddInput | RecipeInputEditUpdateAnnotations | RecipeInputEditSetLot | RecipeInputEditChangeBasisViewed | RecipeInputEditAddInstructions | RecipeInputEditSetRole | RecipeInputEditPlaceholder,
247
246
  serial_union_annotation(
248
247
  named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEdit",
249
248
  discriminator="type",
@@ -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,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,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,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
@@ -31,7 +30,7 @@ ENDPOINT_PATH = "api/external/recipes/external_get_recipe_links"
31
30
  class Arguments:
32
31
  recipe_ids: list[base_t.ObjectId]
33
32
  depth: int = 1
34
- link_types: typing.Optional[list[recipe_links_t.RecipeLinkType]]
33
+ link_types: list[recipe_links_t.RecipeLinkType] | None
35
34
 
36
35
 
37
36
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -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,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,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
@@ -43,10 +42,10 @@ ENDPOINT_PATH = "api/external/recipes/external_get_recipes_data"
43
42
  )
44
43
  @dataclasses.dataclass(kw_only=True)
45
44
  class Arguments:
46
- recipe_ids: typing.Optional[list[base_t.ObjectId]] | None = None
47
- project_id: typing.Optional[base_t.ObjectId] | None = None
48
- offset: typing.Optional[int] | None = None
49
- limit: typing.Optional[int] | None = None
45
+ recipe_ids: list[base_t.ObjectId] | None = None
46
+ project_id: base_t.ObjectId | None = None
47
+ offset: int | None = None
48
+ limit: int | None = None
50
49
 
51
50
 
52
51
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -61,8 +60,8 @@ class RecipeOutput:
61
60
  output_id: base_t.ObjectId
62
61
  replicate_num: int
63
62
  quantity_json: base_t.JsonValue
64
- curve_id: typing.Optional[base_t.ObjectId]
65
- output_condition_id: typing.Optional[base_t.ObjectId]
63
+ curve_id: base_t.ObjectId | None
64
+ output_condition_id: base_t.ObjectId | None
66
65
  quantity_dec: Decimal | None = None
67
66
 
68
67
 
@@ -100,13 +99,13 @@ class SimpleOutputCondition:
100
99
  class RecipeInput:
101
100
  id: base_t.ObjectId
102
101
  input_id: base_t.ObjectId
103
- input_lot_recipe_id: typing.Optional[base_t.ObjectId]
102
+ input_lot_recipe_id: base_t.ObjectId | None
104
103
  recipe_step_id: base_t.ObjectId
105
104
  quantity_json: base_t.JsonValue
106
- curve_id: typing.Optional[base_t.ObjectId]
105
+ curve_id: base_t.ObjectId | None
107
106
  actual_quantity_json: base_t.JsonValue
108
107
  behavior: str
109
- ingredient_role_id: typing.Optional[base_t.ObjectId]
108
+ ingredient_role_id: base_t.ObjectId | None
110
109
  quantity_dec: Decimal | None = None
111
110
  actual_quantity_dec: Decimal | None = None
112
111
 
@@ -117,7 +116,7 @@ class RecipeInput:
117
116
  )
118
117
  @dataclasses.dataclass(kw_only=True)
119
118
  class RecipeStep:
120
- name: typing.Optional[str]
119
+ name: str | None
121
120
  recipe_step_id: base_t.ObjectId
122
121
  recipe_step_number: int
123
122
  instructions: str | None = None
@@ -129,7 +128,7 @@ class RecipeStep:
129
128
  )
130
129
  @dataclasses.dataclass(kw_only=True)
131
130
  class RecipeStepGroup:
132
- name: typing.Optional[str]
131
+ name: str | None
133
132
  recipe_steps: list[RecipeStep]
134
133
 
135
134
 
@@ -152,7 +151,7 @@ class RecipeWorkflowStep:
152
151
  @dataclasses.dataclass(kw_only=True)
153
152
  class RecipeStepRelationship:
154
153
  step_relationship_id: base_t.ObjectId
155
- name: typing.Optional[str]
154
+ name: str | None
156
155
  source_recipe_workflow_step_id: base_t.ObjectId
157
156
  target_recipe_step_id: base_t.ObjectId
158
157
  quantity_dec: Decimal | None = None
@@ -169,7 +168,7 @@ class Recipe:
169
168
  create_datetime: str
170
169
  last_modified_datetime: str
171
170
  name: str
172
- notes: typing.Optional[str]
171
+ notes: str | None
173
172
  workflow_id: base_t.ObjectId
174
173
  metadata: list[recipe_metadata_t.RecipeMetadata]
175
174
  inputs: list[RecipeInput]
@@ -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 identifier_t
@@ -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,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
@@ -32,7 +31,7 @@ ENDPOINT_PATH = "api/external/recipes/external_set_recipe_inputs"
32
31
  class RecipeInputValue:
33
32
  recipe_id: base_t.ObjectId
34
33
  input_id: base_t.ObjectId
35
- recipe_step_id: typing.Optional[base_t.ObjectId] | None = None
34
+ recipe_step_id: base_t.ObjectId | None = None
36
35
  value_numeric: Decimal | None = None
37
36
  value_str: str | None = None
38
37
  set_actual_value: bool | None = None
@@ -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