UncountablePythonSDK 0.0.72__py3-none-any.whl → 0.0.74__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 (117) hide show
  1. {UncountablePythonSDK-0.0.72.dist-info → UncountablePythonSDK-0.0.74.dist-info}/METADATA +1 -1
  2. {UncountablePythonSDK-0.0.72.dist-info → UncountablePythonSDK-0.0.74.dist-info}/RECORD +117 -117
  3. {UncountablePythonSDK-0.0.72.dist-info → UncountablePythonSDK-0.0.74.dist-info}/WHEEL +1 -1
  4. examples/integration-server/jobs/materials_auto/profile.yaml +1 -1
  5. pkgs/argument_parser/__init__.py +1 -0
  6. pkgs/argument_parser/argument_parser.py +13 -1
  7. pkgs/serialization/serial_class.py +18 -0
  8. pkgs/serialization/serial_union.py +3 -0
  9. pkgs/type_spec/builder.py +70 -22
  10. pkgs/type_spec/config.py +5 -0
  11. pkgs/type_spec/emit_python.py +35 -22
  12. pkgs/type_spec/emit_typescript.py +31 -22
  13. pkgs/type_spec/emit_typescript_util.py +0 -2
  14. pkgs/type_spec/load_types.py +3 -2
  15. pkgs/type_spec/type_info/emit_type_info.py +7 -7
  16. pkgs/type_spec/util.py +1 -1
  17. uncountable/core/client.py +2 -2
  18. uncountable/integration/entrypoint.py +1 -9
  19. uncountable/integration/queue_runner/worker.py +9 -5
  20. uncountable/integration/server.py +63 -66
  21. uncountable/types/api/batch/execute_batch.py +8 -0
  22. uncountable/types/api/batch/execute_batch_load_async.py +7 -0
  23. uncountable/types/api/chemical/convert_chemical_formats.py +7 -0
  24. uncountable/types/api/entity/create_entities.py +11 -1
  25. uncountable/types/api/entity/create_entity.py +8 -1
  26. uncountable/types/api/entity/get_entities_data.py +10 -0
  27. uncountable/types/api/entity/list_entities.py +8 -0
  28. uncountable/types/api/entity/lock_entity.py +7 -0
  29. uncountable/types/api/entity/resolve_entity_ids.py +10 -0
  30. uncountable/types/api/entity/set_values.py +7 -0
  31. uncountable/types/api/entity/transition_entity_phase.py +8 -0
  32. uncountable/types/api/entity/unlock_entity.py +7 -0
  33. uncountable/types/api/equipment/associate_equipment_input.py +7 -0
  34. uncountable/types/api/field_options/upsert_field_options.py +10 -0
  35. uncountable/types/api/id_source/list_id_source.py +10 -0
  36. uncountable/types/api/id_source/match_id_source.py +10 -0
  37. uncountable/types/api/input_groups/get_input_group_names.py +10 -0
  38. uncountable/types/api/inputs/create_inputs.py +13 -0
  39. uncountable/types/api/inputs/get_input_data.py +19 -0
  40. uncountable/types/api/inputs/get_input_names.py +10 -0
  41. uncountable/types/api/inputs/get_inputs_data.py +19 -0
  42. uncountable/types/api/inputs/set_input_attribute_values.py +7 -0
  43. uncountable/types/api/inputs/set_input_category.py +7 -0
  44. uncountable/types/api/inputs/set_input_subcategories.py +7 -0
  45. uncountable/types/api/inputs/set_intermediate_type.py +7 -0
  46. uncountable/types/api/material_families/update_entity_material_families.py +7 -0
  47. uncountable/types/api/outputs/get_output_data.py +16 -0
  48. uncountable/types/api/outputs/get_output_names.py +10 -0
  49. uncountable/types/api/outputs/resolve_output_conditions.py +13 -0
  50. uncountable/types/api/permissions/set_core_permissions.py +10 -0
  51. uncountable/types/api/project/get_projects.py +10 -0
  52. uncountable/types/api/project/get_projects_data.py +10 -0
  53. uncountable/types/api/recipe_links/create_recipe_link.py +7 -0
  54. uncountable/types/api/recipe_links/remove_recipe_link.py +7 -0
  55. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +10 -0
  56. uncountable/types/api/recipes/add_recipe_to_project.py +7 -0
  57. uncountable/types/api/recipes/archive_recipes.py +7 -0
  58. uncountable/types/api/recipes/associate_recipe_as_input.py +7 -0
  59. uncountable/types/api/recipes/associate_recipe_as_lot.py +7 -0
  60. uncountable/types/api/recipes/clear_recipe_outputs.py +7 -0
  61. uncountable/types/api/recipes/create_recipe.py +7 -0
  62. uncountable/types/api/recipes/create_recipes.py +13 -0
  63. uncountable/types/api/recipes/disassociate_recipe_as_input.py +7 -0
  64. uncountable/types/api/recipes/edit_recipe_inputs.py +20 -0
  65. uncountable/types/api/recipes/get_curve.py +7 -0
  66. uncountable/types/api/recipes/get_recipe_calculations.py +7 -0
  67. uncountable/types/api/recipes/get_recipe_links.py +7 -0
  68. uncountable/types/api/recipes/get_recipe_names.py +10 -0
  69. uncountable/types/api/recipes/get_recipe_output_metadata.py +7 -0
  70. uncountable/types/api/recipes/get_recipes_data.py +25 -0
  71. uncountable/types/api/recipes/lock_recipes.py +10 -0
  72. uncountable/types/api/recipes/remove_recipe_from_project.py +7 -0
  73. uncountable/types/api/recipes/set_recipe_inputs.py +7 -0
  74. uncountable/types/api/recipes/set_recipe_metadata.py +7 -0
  75. uncountable/types/api/recipes/set_recipe_output_annotations.py +13 -0
  76. uncountable/types/api/recipes/set_recipe_output_file.py +10 -0
  77. uncountable/types/api/recipes/set_recipe_outputs.py +10 -0
  78. uncountable/types/api/recipes/set_recipe_tags.py +12 -0
  79. uncountable/types/api/recipes/unarchive_recipes.py +7 -0
  80. uncountable/types/api/recipes/unlock_recipes.py +7 -0
  81. uncountable/types/api/triggers/run_trigger.py +7 -0
  82. uncountable/types/api/uploader/invoke_uploader.py +9 -1
  83. uncountable/types/async_batch_processor.py +4 -1
  84. uncountable/types/async_batch_t.py +10 -0
  85. uncountable/types/calculations_t.py +4 -0
  86. uncountable/types/chemical_structure_t.py +1 -0
  87. uncountable/types/client_base.py +6 -3
  88. uncountable/types/client_config_t.py +4 -0
  89. uncountable/types/curves_t.py +4 -0
  90. uncountable/types/entity_t.py +8 -0
  91. uncountable/types/experiment_groups_t.py +4 -0
  92. uncountable/types/field_values_t.py +4 -0
  93. uncountable/types/fields_t.py +4 -0
  94. uncountable/types/generic_upload_t.py +13 -0
  95. uncountable/types/id_source_t.py +13 -0
  96. uncountable/types/identifier_t.py +3 -0
  97. uncountable/types/input_attributes_t.py +1 -0
  98. uncountable/types/inputs_t.py +4 -0
  99. uncountable/types/job_definition_t.py +33 -0
  100. uncountable/types/outputs_t.py +4 -0
  101. uncountable/types/overrides_t.py +7 -0
  102. uncountable/types/phases_t.py +4 -0
  103. uncountable/types/queued_job_t.py +16 -0
  104. uncountable/types/recipe_identifiers_t.py +3 -0
  105. uncountable/types/recipe_links_t.py +4 -0
  106. uncountable/types/recipe_metadata_t.py +5 -0
  107. uncountable/types/recipe_output_metadata_t.py +4 -0
  108. uncountable/types/recipe_tags_t.py +4 -0
  109. uncountable/types/recipe_workflow_steps_t.py +7 -0
  110. uncountable/types/recipes_t.py +4 -0
  111. uncountable/types/response_t.py +1 -0
  112. uncountable/types/secret_retrieval_t.py +6 -0
  113. uncountable/types/units_t.py +4 -0
  114. uncountable/types/users_t.py +4 -0
  115. uncountable/types/webhook_job_t.py +4 -0
  116. uncountable/types/workflows_t.py +7 -0
  117. {UncountablePythonSDK-0.0.72.dist-info → UncountablePythonSDK-0.0.74.dist-info}/top_level.txt +0 -0
@@ -9,6 +9,7 @@ import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  from pkgs.strenum_compat import StrEnum
11
11
  import dataclasses
12
+ from pkgs.serialization import serial_class
12
13
  from pkgs.serialization import serial_string_enum
13
14
  from . import base_t
14
15
 
@@ -110,6 +111,7 @@ __all__: list[str] = [
110
111
  "recipe_calculation": "Recipe Calculation",
111
112
  "recipe_check": "Experiment Check",
112
113
  "recipe_export": "Recipe Export",
114
+ "recipe_goal": "Experiment Goal",
113
115
  "recipe_ingredient": "Recipe Ingredient",
114
116
  "recipe_ingredient_actual": "Recipe Ingredient Actual",
115
117
  "recipe_ingredients_compounded": "Recipe Ingredients Compounded",
@@ -122,6 +124,7 @@ __all__: list[str] = [
122
124
  "recipe_workflow_step": "Recipe Workflow Step",
123
125
  "recipe_tag": "Recipe Tag",
124
126
  "recipe_metadata": "Experiment Metadata",
127
+ "recipe_metadata_mapping": "Experiment Metadata Mapping",
125
128
  "metadata_value": "Metadata Value",
126
129
  "review": "Review",
127
130
  "review_entity_user_status": "Review Entity User Status",
@@ -263,6 +266,7 @@ class EntityType(StrEnum):
263
266
  RECIPE_CALCULATION = "recipe_calculation"
264
267
  RECIPE_CHECK = "recipe_check"
265
268
  RECIPE_EXPORT = "recipe_export"
269
+ RECIPE_GOAL = "recipe_goal"
266
270
  RECIPE_INGREDIENT = "recipe_ingredient"
267
271
  RECIPE_INGREDIENT_ACTUAL = "recipe_ingredient_actual"
268
272
  RECIPE_INGREDIENTS_COMPOUNDED = "recipe_ingredients_compounded"
@@ -275,6 +279,7 @@ class EntityType(StrEnum):
275
279
  RECIPE_WORKFLOW_STEP = "recipe_workflow_step"
276
280
  RECIPE_TAG = "recipe_tag"
277
281
  RECIPE_METADATA = "recipe_metadata"
282
+ RECIPE_METADATA_MAPPING = "recipe_metadata_mapping"
278
283
  METADATA_VALUE = "metadata_value"
279
284
  REVIEW = "review"
280
285
  REVIEW_ENTITY_USER_STATUS = "review_entity_user_status"
@@ -327,6 +332,9 @@ class EntityType(StrEnum):
327
332
 
328
333
 
329
334
  # DO NOT MODIFY -- This file is generated by type_spec
335
+ @serial_class(
336
+ named_type_path="sdk.entity.Entity",
337
+ )
330
338
  @dataclasses.dataclass(kw_only=True)
331
339
  class Entity:
332
340
  id: base_t.ObjectId
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
+ from pkgs.serialization import serial_class
11
12
  from . import base_t
12
13
 
13
14
  __all__: list[str] = [
@@ -16,6 +17,9 @@ __all__: list[str] = [
16
17
 
17
18
 
18
19
  # DO NOT MODIFY -- This file is generated by type_spec
20
+ @serial_class(
21
+ named_type_path="sdk.experiment_groups.SimpleExperimentGroup",
22
+ )
19
23
  @dataclasses.dataclass(kw_only=True)
20
24
  class SimpleExperimentGroup:
21
25
  experiment_group_id: base_t.ObjectId
@@ -21,6 +21,7 @@ __all__: list[str] = [
21
21
 
22
22
  # DO NOT MODIFY -- This file is generated by type_spec
23
23
  @serial_class(
24
+ named_type_path="sdk.field_values.FieldRefNameValue",
24
25
  unconverted_values={"value"},
25
26
  )
26
27
  @dataclasses.dataclass(kw_only=True)
@@ -32,6 +33,7 @@ class FieldRefNameValue:
32
33
 
33
34
  # DO NOT MODIFY -- This file is generated by type_spec
34
35
  @serial_class(
36
+ named_type_path="sdk.field_values.FieldRefIdNameValue",
35
37
  unconverted_values={"value"},
36
38
  )
37
39
  @dataclasses.dataclass(kw_only=True)
@@ -44,6 +46,7 @@ class FieldRefIdNameValue:
44
46
 
45
47
  # DO NOT MODIFY -- This file is generated by type_spec
46
48
  @serial_class(
49
+ named_type_path="sdk.field_values.ArgumentValueRefName",
47
50
  unconverted_values={"value"},
48
51
  )
49
52
  @dataclasses.dataclass(kw_only=True)
@@ -55,6 +58,7 @@ class ArgumentValueRefName:
55
58
 
56
59
  # DO NOT MODIFY -- This file is generated by type_spec
57
60
  @serial_class(
61
+ named_type_path="sdk.field_values.ArgumentValueId",
58
62
  unconverted_values={"value"},
59
63
  )
60
64
  @dataclasses.dataclass(kw_only=True)
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
+ from pkgs.serialization import serial_class
11
12
  from . import base_t
12
13
 
13
14
  __all__: list[str] = [
@@ -16,6 +17,9 @@ __all__: list[str] = [
16
17
 
17
18
 
18
19
  # DO NOT MODIFY -- This file is generated by type_spec
20
+ @serial_class(
21
+ named_type_path="sdk.fields.Field",
22
+ )
19
23
  @dataclasses.dataclass(kw_only=True)
20
24
  class Field:
21
25
  id: base_t.ObjectId
@@ -26,6 +26,9 @@ __all__: list[str] = [
26
26
 
27
27
 
28
28
  # DO NOT MODIFY -- This file is generated by type_spec
29
+ @serial_class(
30
+ named_type_path="sdk.generic_upload.GenericRemoteDirectoryScope",
31
+ )
29
32
  @dataclasses.dataclass(kw_only=True)
30
33
  class GenericRemoteDirectoryScope:
31
34
  src_path: str
@@ -48,6 +51,9 @@ class UploadDestinationType(StrEnum):
48
51
 
49
52
 
50
53
  # DO NOT MODIFY -- This file is generated by type_spec
54
+ @serial_class(
55
+ named_type_path="sdk.generic_upload.UploadDestinationBase",
56
+ )
51
57
  @dataclasses.dataclass(kw_only=True)
52
58
  class UploadDestinationBase:
53
59
  type: UploadDestinationType
@@ -55,6 +61,7 @@ class UploadDestinationBase:
55
61
 
56
62
  # DO NOT MODIFY -- This file is generated by type_spec
57
63
  @serial_class(
64
+ named_type_path="sdk.generic_upload.UploadDestinationProject",
58
65
  parse_require={"type"},
59
66
  )
60
67
  @dataclasses.dataclass(kw_only=True)
@@ -65,6 +72,7 @@ class UploadDestinationProject(UploadDestinationBase):
65
72
 
66
73
  # DO NOT MODIFY -- This file is generated by type_spec
67
74
  @serial_class(
75
+ named_type_path="sdk.generic_upload.UploadDestinationMaterialFamily",
68
76
  parse_require={"type"},
69
77
  )
70
78
  @dataclasses.dataclass(kw_only=True)
@@ -75,6 +83,7 @@ class UploadDestinationMaterialFamily(UploadDestinationBase):
75
83
 
76
84
  # DO NOT MODIFY -- This file is generated by type_spec
77
85
  @serial_class(
86
+ named_type_path="sdk.generic_upload.UploadDestinationRecipe",
78
87
  parse_require={"type"},
79
88
  )
80
89
  @dataclasses.dataclass(kw_only=True)
@@ -87,6 +96,7 @@ class UploadDestinationRecipe(UploadDestinationBase):
87
96
  UploadDestination = typing.Annotated[
88
97
  typing.Union[UploadDestinationProject, UploadDestinationMaterialFamily, UploadDestinationRecipe],
89
98
  serial_union_annotation(
99
+ named_type_path="sdk.generic_upload.UploadDestination",
90
100
  discriminator="type",
91
101
  discriminator_map={
92
102
  "project": UploadDestinationProject,
@@ -98,6 +108,9 @@ UploadDestination = typing.Annotated[
98
108
 
99
109
 
100
110
  # DO NOT MODIFY -- This file is generated by type_spec
111
+ @serial_class(
112
+ named_type_path="sdk.generic_upload.GenericUploadStrategy",
113
+ )
101
114
  @dataclasses.dataclass(kw_only=True)
102
115
  class GenericUploadStrategy:
103
116
  uploader_key: identifier_t.IdentifierKey
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
+ from pkgs.serialization import serial_class
11
12
  from . import entity_t
12
13
 
13
14
  __all__: list[str] = [
@@ -20,24 +21,36 @@ __all__: list[str] = [
20
21
 
21
22
 
22
23
  # DO NOT MODIFY -- This file is generated by type_spec
24
+ @serial_class(
25
+ named_type_path="sdk.id_source.IdSourceSpecBase",
26
+ )
23
27
  @dataclasses.dataclass(kw_only=True)
24
28
  class IdSourceSpecBase:
25
29
  pass
26
30
 
27
31
 
28
32
  # DO NOT MODIFY -- This file is generated by type_spec
33
+ @serial_class(
34
+ named_type_path="sdk.id_source.IdSourceSpecEntity",
35
+ )
29
36
  @dataclasses.dataclass(kw_only=True)
30
37
  class IdSourceSpecEntity(IdSourceSpecBase):
31
38
  entity_type: entity_t.EntityType
32
39
 
33
40
 
34
41
  # DO NOT MODIFY -- This file is generated by type_spec
42
+ @serial_class(
43
+ named_type_path="sdk.id_source.IdSourceSpecCustomEntity",
44
+ )
35
45
  @dataclasses.dataclass(kw_only=True)
36
46
  class IdSourceSpecCustomEntity(IdSourceSpecBase):
37
47
  definition_ref_name: str
38
48
 
39
49
 
40
50
  # DO NOT MODIFY -- This file is generated by type_spec
51
+ @serial_class(
52
+ named_type_path="sdk.id_source.IdSourceSpecFieldOptions",
53
+ )
41
54
  @dataclasses.dataclass(kw_only=True)
42
55
  class IdSourceSpecFieldOptions(IdSourceSpecBase):
43
56
  set_ref_name: str
@@ -21,6 +21,7 @@ __all__: list[str] = [
21
21
 
22
22
  # DO NOT MODIFY -- This file is generated by type_spec
23
23
  @serial_class(
24
+ named_type_path="sdk.identifier.IdentifierKeyId",
24
25
  parse_require={"type"},
25
26
  )
26
27
  @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
@@ -31,6 +32,7 @@ class IdentifierKeyId:
31
32
 
32
33
  # DO NOT MODIFY -- This file is generated by type_spec
33
34
  @serial_class(
35
+ named_type_path="sdk.identifier.IdentifierKeyRefName",
34
36
  parse_require={"type"},
35
37
  )
36
38
  @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
@@ -41,6 +43,7 @@ class IdentifierKeyRefName:
41
43
 
42
44
  # DO NOT MODIFY -- This file is generated by type_spec
43
45
  @serial_class(
46
+ named_type_path="sdk.identifier.IdentifierKeyBatchReference",
44
47
  parse_require={"type"},
45
48
  )
46
49
  @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
@@ -18,6 +18,7 @@ __all__: list[str] = [
18
18
 
19
19
  # DO NOT MODIFY -- This file is generated by type_spec
20
20
  @serial_class(
21
+ named_type_path="sdk.input_attributes.InputAttributeValue",
21
22
  unconverted_values={"quantity_json"},
22
23
  to_string_values={"quantity_dec"},
23
24
  )
@@ -9,6 +9,7 @@ import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  from pkgs.strenum_compat import StrEnum
11
11
  import dataclasses
12
+ from pkgs.serialization import serial_class
12
13
  from pkgs.serialization import serial_string_enum
13
14
  from . import base_t
14
15
 
@@ -68,6 +69,9 @@ class IngredientBehavior(StrEnum):
68
69
 
69
70
 
70
71
  # DO NOT MODIFY -- This file is generated by type_spec
72
+ @serial_class(
73
+ named_type_path="sdk.inputs.SimpleInput",
74
+ )
71
75
  @dataclasses.dataclass(kw_only=True)
72
76
  class SimpleInput:
73
77
  input_id: base_t.ObjectId
@@ -68,6 +68,9 @@ class GenericUploadDataSourceType(StrEnum):
68
68
 
69
69
 
70
70
  # DO NOT MODIFY -- This file is generated by type_spec
71
+ @serial_class(
72
+ named_type_path="sdk.job_definition.JobExecutorBase",
73
+ )
71
74
  @dataclasses.dataclass(kw_only=True)
72
75
  class JobExecutorBase:
73
76
  type: JobExecutorType
@@ -75,6 +78,7 @@ class JobExecutorBase:
75
78
 
76
79
  # DO NOT MODIFY -- This file is generated by type_spec
77
80
  @serial_class(
81
+ named_type_path="sdk.job_definition.JobExecutorScript",
78
82
  parse_require={"type"},
79
83
  )
80
84
  @dataclasses.dataclass(kw_only=True)
@@ -84,6 +88,9 @@ class JobExecutorScript(JobExecutorBase):
84
88
 
85
89
 
86
90
  # DO NOT MODIFY -- This file is generated by type_spec
91
+ @serial_class(
92
+ named_type_path="sdk.job_definition.GenericUploadDataSourceBase",
93
+ )
87
94
  @dataclasses.dataclass(kw_only=True)
88
95
  class GenericUploadDataSourceBase:
89
96
  type: GenericUploadDataSourceType
@@ -91,6 +98,7 @@ class GenericUploadDataSourceBase:
91
98
 
92
99
  # DO NOT MODIFY -- This file is generated by type_spec
93
100
  @serial_class(
101
+ named_type_path="sdk.job_definition.GenericUploadDataSourceSFTP",
94
102
  parse_require={"type"},
95
103
  )
96
104
  @dataclasses.dataclass(kw_only=True)
@@ -109,6 +117,7 @@ class S3CloudProvider(StrEnum):
109
117
 
110
118
  # DO NOT MODIFY -- This file is generated by type_spec
111
119
  @serial_class(
120
+ named_type_path="sdk.job_definition.GenericUploadDataSourceS3",
112
121
  parse_require={"type"},
113
122
  )
114
123
  @dataclasses.dataclass(kw_only=True)
@@ -126,6 +135,7 @@ class GenericUploadDataSourceS3(GenericUploadDataSourceBase):
126
135
  GenericUploadDataSource = typing.Annotated[
127
136
  typing.Union[GenericUploadDataSourceSFTP, GenericUploadDataSourceS3],
128
137
  serial_union_annotation(
138
+ named_type_path="sdk.job_definition.GenericUploadDataSource",
129
139
  discriminator="type",
130
140
  discriminator_map={
131
141
  "sftp": GenericUploadDataSourceSFTP,
@@ -137,6 +147,7 @@ GenericUploadDataSource = typing.Annotated[
137
147
 
138
148
  # DO NOT MODIFY -- This file is generated by type_spec
139
149
  @serial_class(
150
+ named_type_path="sdk.job_definition.JobExecutorGenericUpload",
140
151
  parse_require={"type"},
141
152
  )
142
153
  @dataclasses.dataclass(kw_only=True)
@@ -151,6 +162,7 @@ class JobExecutorGenericUpload(JobExecutorBase):
151
162
  JobExecutor = typing.Annotated[
152
163
  typing.Union[JobExecutorScript, JobExecutorGenericUpload],
153
164
  serial_union_annotation(
165
+ named_type_path="sdk.job_definition.JobExecutor",
154
166
  discriminator="type",
155
167
  discriminator_map={
156
168
  "script": JobExecutorScript,
@@ -161,6 +173,9 @@ JobExecutor = typing.Annotated[
161
173
 
162
174
 
163
175
  # DO NOT MODIFY -- This file is generated by type_spec
176
+ @serial_class(
177
+ named_type_path="sdk.job_definition.JobDefinitionBase",
178
+ )
164
179
  @dataclasses.dataclass(kw_only=True)
165
180
  class JobDefinitionBase:
166
181
  id: str
@@ -171,6 +186,7 @@ class JobDefinitionBase:
171
186
 
172
187
  # DO NOT MODIFY -- This file is generated by type_spec
173
188
  @serial_class(
189
+ named_type_path="sdk.job_definition.CronJobDefinition",
174
190
  parse_require={"type"},
175
191
  )
176
192
  @dataclasses.dataclass(kw_only=True)
@@ -181,6 +197,7 @@ class CronJobDefinition(JobDefinitionBase):
181
197
 
182
198
  # DO NOT MODIFY -- This file is generated by type_spec
183
199
  @serial_class(
200
+ named_type_path="sdk.job_definition.WebhookJobDefinition",
184
201
  parse_require={"type"},
185
202
  )
186
203
  @dataclasses.dataclass(kw_only=True)
@@ -193,6 +210,7 @@ class WebhookJobDefinition(JobDefinitionBase):
193
210
  JobDefinition = typing.Annotated[
194
211
  typing.Union[CronJobDefinition, WebhookJobDefinition],
195
212
  serial_union_annotation(
213
+ named_type_path="sdk.job_definition.JobDefinition",
196
214
  discriminator="type",
197
215
  discriminator_map={
198
216
  "cron": CronJobDefinition,
@@ -203,6 +221,9 @@ JobDefinition = typing.Annotated[
203
221
 
204
222
 
205
223
  # DO NOT MODIFY -- This file is generated by type_spec
224
+ @serial_class(
225
+ named_type_path="sdk.job_definition.AuthRetrievalBase",
226
+ )
206
227
  @dataclasses.dataclass(kw_only=True)
207
228
  class AuthRetrievalBase:
208
229
  type: AuthRetrievalType
@@ -210,6 +231,7 @@ class AuthRetrievalBase:
210
231
 
211
232
  # DO NOT MODIFY -- This file is generated by type_spec
212
233
  @serial_class(
234
+ named_type_path="sdk.job_definition.AuthRetrievalOAuth",
213
235
  parse_require={"type"},
214
236
  )
215
237
  @dataclasses.dataclass(kw_only=True)
@@ -220,6 +242,7 @@ class AuthRetrievalOAuth(AuthRetrievalBase):
220
242
 
221
243
  # DO NOT MODIFY -- This file is generated by type_spec
222
244
  @serial_class(
245
+ named_type_path="sdk.job_definition.AuthRetrievalBasic",
223
246
  parse_require={"type"},
224
247
  )
225
248
  @dataclasses.dataclass(kw_only=True)
@@ -233,6 +256,7 @@ class AuthRetrievalBasic(AuthRetrievalBase):
233
256
  AuthRetrieval = typing.Annotated[
234
257
  typing.Union[AuthRetrievalOAuth, AuthRetrievalBasic],
235
258
  serial_union_annotation(
259
+ named_type_path="sdk.job_definition.AuthRetrieval",
236
260
  discriminator="type",
237
261
  discriminator_map={
238
262
  "oauth": AuthRetrievalOAuth,
@@ -243,6 +267,9 @@ AuthRetrieval = typing.Annotated[
243
267
 
244
268
 
245
269
  # DO NOT MODIFY -- This file is generated by type_spec
270
+ @serial_class(
271
+ named_type_path="sdk.job_definition.ProfileDefinition",
272
+ )
246
273
  @dataclasses.dataclass(kw_only=True)
247
274
  class ProfileDefinition:
248
275
  auth_retrieval: AuthRetrieval
@@ -252,6 +279,9 @@ class ProfileDefinition:
252
279
 
253
280
 
254
281
  # DO NOT MODIFY -- This file is generated by type_spec
282
+ @serial_class(
283
+ named_type_path="sdk.job_definition.ProfileMetadata",
284
+ )
255
285
  @dataclasses.dataclass(kw_only=True)
256
286
  class ProfileMetadata:
257
287
  name: str
@@ -261,6 +291,9 @@ class ProfileMetadata:
261
291
 
262
292
 
263
293
  # DO NOT MODIFY -- This file is generated by type_spec
294
+ @serial_class(
295
+ named_type_path="sdk.job_definition.JobResult",
296
+ )
264
297
  @dataclasses.dataclass(kw_only=True)
265
298
  class JobResult:
266
299
  success: bool
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
+ from pkgs.serialization import serial_class
11
12
  from . import base_t
12
13
  from . import units_t
13
14
 
@@ -17,6 +18,9 @@ __all__: list[str] = [
17
18
 
18
19
 
19
20
  # DO NOT MODIFY -- This file is generated by type_spec
21
+ @serial_class(
22
+ named_type_path="sdk.outputs.SimpleOutput",
23
+ )
20
24
  @dataclasses.dataclass(kw_only=True)
21
25
  class SimpleOutput:
22
26
  output_id: base_t.ObjectId
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
+ from pkgs.serialization import serial_class
11
12
  from . import secret_retrieval_t
12
13
 
13
14
  __all__: list[str] = [
@@ -18,6 +19,9 @@ __all__: list[str] = [
18
19
 
19
20
 
20
21
  # DO NOT MODIFY -- This file is generated by type_spec
22
+ @serial_class(
23
+ named_type_path="sdk.overrides.SecretRetrievalOverride",
24
+ )
21
25
  @dataclasses.dataclass(kw_only=True)
22
26
  class SecretRetrievalOverride:
23
27
  profile_name: str
@@ -30,6 +34,9 @@ SecretRetrievalOverrides = list[SecretRetrievalOverride]
30
34
 
31
35
 
32
36
  # DO NOT MODIFY -- This file is generated by type_spec
37
+ @serial_class(
38
+ named_type_path="sdk.overrides.Overrides",
39
+ )
33
40
  @dataclasses.dataclass(kw_only=True)
34
41
  class Overrides:
35
42
  secrets: SecretRetrievalOverrides
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
+ from pkgs.serialization import serial_class
11
12
  from . import base_t
12
13
 
13
14
  __all__: list[str] = [
@@ -16,6 +17,9 @@ __all__: list[str] = [
16
17
 
17
18
 
18
19
  # DO NOT MODIFY -- This file is generated by type_spec
20
+ @serial_class(
21
+ named_type_path="sdk.phases.Phase",
22
+ )
19
23
  @dataclasses.dataclass(kw_only=True)
20
24
  class Phase:
21
25
  id: base_t.ObjectId
@@ -35,6 +35,9 @@ class InvocationContextType(StrEnum):
35
35
 
36
36
 
37
37
  # DO NOT MODIFY -- This file is generated by type_spec
38
+ @serial_class(
39
+ named_type_path="sdk.queued_job.InvocationContextBase",
40
+ )
38
41
  @dataclasses.dataclass(kw_only=True)
39
42
  class InvocationContextBase:
40
43
  type: InvocationContextType
@@ -42,6 +45,7 @@ class InvocationContextBase:
42
45
 
43
46
  # DO NOT MODIFY -- This file is generated by type_spec
44
47
  @serial_class(
48
+ named_type_path="sdk.queued_job.InvocationContextCron",
45
49
  parse_require={"type"},
46
50
  )
47
51
  @dataclasses.dataclass(kw_only=True)
@@ -51,6 +55,7 @@ class InvocationContextCron(InvocationContextBase):
51
55
 
52
56
  # DO NOT MODIFY -- This file is generated by type_spec
53
57
  @serial_class(
58
+ named_type_path="sdk.queued_job.InvocationContextManual",
54
59
  parse_require={"type"},
55
60
  )
56
61
  @dataclasses.dataclass(kw_only=True)
@@ -60,6 +65,7 @@ class InvocationContextManual(InvocationContextBase):
60
65
 
61
66
  # DO NOT MODIFY -- This file is generated by type_spec
62
67
  @serial_class(
68
+ named_type_path="sdk.queued_job.InvocationContextWebhook",
63
69
  unconverted_values={"webhook_payload"},
64
70
  parse_require={"type"},
65
71
  )
@@ -73,6 +79,7 @@ class InvocationContextWebhook(InvocationContextBase):
73
79
  InvocationContext = typing.Annotated[
74
80
  typing.Union[InvocationContextCron, InvocationContextManual, InvocationContextWebhook],
75
81
  serial_union_annotation(
82
+ named_type_path="sdk.queued_job.InvocationContext",
76
83
  discriminator="type",
77
84
  discriminator_map={
78
85
  "cron": InvocationContextCron,
@@ -84,12 +91,18 @@ InvocationContext = typing.Annotated[
84
91
 
85
92
 
86
93
  # DO NOT MODIFY -- This file is generated by type_spec
94
+ @serial_class(
95
+ named_type_path="sdk.queued_job.QueuedJobPayload",
96
+ )
87
97
  @dataclasses.dataclass(kw_only=True)
88
98
  class QueuedJobPayload:
89
99
  invocation_context: InvocationContext
90
100
 
91
101
 
92
102
  # DO NOT MODIFY -- This file is generated by type_spec
103
+ @serial_class(
104
+ named_type_path="sdk.queued_job.QueuedJobResult",
105
+ )
93
106
  @dataclasses.dataclass(kw_only=True)
94
107
  class QueuedJobResult:
95
108
  queued_job_uuid: str
@@ -97,6 +110,9 @@ class QueuedJobResult:
97
110
 
98
111
 
99
112
  # DO NOT MODIFY -- This file is generated by type_spec
113
+ @serial_class(
114
+ named_type_path="sdk.queued_job.QueuedJob",
115
+ )
100
116
  @dataclasses.dataclass(kw_only=True)
101
117
  class QueuedJob:
102
118
  queued_job_uuid: str
@@ -22,6 +22,7 @@ __all__: list[str] = [
22
22
 
23
23
  # DO NOT MODIFY -- This file is generated by type_spec
24
24
  @serial_class(
25
+ named_type_path="sdk.recipe_identifiers.RecipeIdentifierEditableName",
25
26
  parse_require={"type"},
26
27
  )
27
28
  @dataclasses.dataclass(kw_only=True)
@@ -32,6 +33,7 @@ class RecipeIdentifierEditableName:
32
33
 
33
34
  # DO NOT MODIFY -- This file is generated by type_spec
34
35
  @serial_class(
36
+ named_type_path="sdk.recipe_identifiers.RecipeIdentifierMetadata",
35
37
  to_string_values={"quantity_dec"},
36
38
  parse_require={"type"},
37
39
  )
@@ -45,6 +47,7 @@ class RecipeIdentifierMetadata:
45
47
 
46
48
  # DO NOT MODIFY -- This file is generated by type_spec
47
49
  @serial_class(
50
+ named_type_path="sdk.recipe_identifiers.RecipeIdentifierMaterialFamily",
48
51
  parse_require={"type"},
49
52
  )
50
53
  @dataclasses.dataclass(kw_only=True)
@@ -9,6 +9,7 @@ import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  from pkgs.strenum_compat import StrEnum
11
11
  import dataclasses
12
+ from pkgs.serialization import serial_class
12
13
  from pkgs.serialization import serial_string_enum
13
14
  from . import base_t
14
15
 
@@ -41,6 +42,9 @@ class RecipeLinkType(StrEnum):
41
42
 
42
43
 
43
44
  # DO NOT MODIFY -- This file is generated by type_spec
45
+ @serial_class(
46
+ named_type_path="sdk.recipe_links.RecipeLink",
47
+ )
44
48
  @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
45
49
  class RecipeLink:
46
50
  recipe_id_from: base_t.ObjectId
@@ -20,6 +20,7 @@ __all__: list[str] = [
20
20
 
21
21
  # DO NOT MODIFY -- This file is generated by type_spec
22
22
  @serial_class(
23
+ named_type_path="sdk.recipe_metadata.MetadataValue",
23
24
  unconverted_values={"value_json"},
24
25
  to_string_values={"value_numeric"},
25
26
  )
@@ -33,6 +34,9 @@ class MetadataValue:
33
34
 
34
35
 
35
36
  # DO NOT MODIFY -- This file is generated by type_spec
37
+ @serial_class(
38
+ named_type_path="sdk.recipe_metadata.SimpleRecipeMetadataField",
39
+ )
36
40
  @dataclasses.dataclass(kw_only=True)
37
41
  class SimpleRecipeMetadataField:
38
42
  metadata_id: base_t.ObjectId
@@ -42,6 +46,7 @@ class SimpleRecipeMetadataField:
42
46
 
43
47
  # DO NOT MODIFY -- This file is generated by type_spec
44
48
  @serial_class(
49
+ named_type_path="sdk.recipe_metadata.RecipeMetadata",
45
50
  unconverted_values={"quantity_json"},
46
51
  to_string_values={"quantity_dec"},
47
52
  )
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
+ from pkgs.serialization import serial_class
11
12
  from . import base_t
12
13
 
13
14
  __all__: list[str] = [
@@ -16,6 +17,9 @@ __all__: list[str] = [
16
17
 
17
18
 
18
19
  # DO NOT MODIFY -- This file is generated by type_spec
20
+ @serial_class(
21
+ named_type_path="sdk.recipe_output_metadata.RecipeOutputMetadataField",
22
+ )
19
23
  @dataclasses.dataclass(kw_only=True)
20
24
  class RecipeOutputMetadataField:
21
25
  id: base_t.ObjectId
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
+ from pkgs.serialization import serial_class
11
12
  from . import base_t
12
13
 
13
14
  __all__: list[str] = [
@@ -16,6 +17,9 @@ __all__: list[str] = [
16
17
 
17
18
 
18
19
  # DO NOT MODIFY -- This file is generated by type_spec
20
+ @serial_class(
21
+ named_type_path="sdk.recipe_tags.SimpleRecipeTag",
22
+ )
19
23
  @dataclasses.dataclass(kw_only=True)
20
24
  class SimpleRecipeTag:
21
25
  recipe_tag_id: base_t.ObjectId