UncountablePythonSDK 0.0.111__py3-none-any.whl → 0.0.112__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 (132) hide show
  1. docs/conf.py +2 -2
  2. docs/justfile +1 -1
  3. examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +35 -0
  4. examples/integration-server/jobs/materials_auto/profile.yaml +9 -0
  5. examples/integration-server/pyproject.toml +2 -2
  6. pkgs/argument_parser/argument_parser.py +6 -3
  7. pkgs/type_spec/emit_python.py +9 -3
  8. pkgs/type_spec/emit_typescript_util.py +16 -1
  9. pkgs/type_spec/parts/base.py.prepart +4 -0
  10. pkgs/type_spec/ui_entry_actions/__init__.py +4 -0
  11. pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +294 -0
  12. pkgs/type_spec/value_spec/convert_type.py +13 -0
  13. uncountable/core/client.py +7 -4
  14. uncountable/integration/executors/generic_upload_executor.py +3 -2
  15. uncountable/integration/job.py +24 -1
  16. uncountable/integration/queue_runner/datastore/datastore_sqlite.py +3 -2
  17. uncountable/integration/scheduler.py +4 -3
  18. uncountable/types/__init__.py +2 -0
  19. uncountable/types/api/batch/execute_batch.py +4 -4
  20. uncountable/types/api/batch/execute_batch_load_async.py +2 -2
  21. uncountable/types/api/chemical/convert_chemical_formats.py +3 -3
  22. uncountable/types/api/condition_parameters/upsert_condition_match.py +4 -3
  23. uncountable/types/api/entity/create_entities.py +3 -3
  24. uncountable/types/api/entity/create_entity.py +3 -3
  25. uncountable/types/api/entity/create_or_update_entity.py +3 -2
  26. uncountable/types/api/entity/get_entities_data.py +3 -3
  27. uncountable/types/api/entity/grant_entity_permissions.py +3 -2
  28. uncountable/types/api/entity/list_entities.py +4 -4
  29. uncountable/types/api/entity/lock_entity.py +3 -2
  30. uncountable/types/api/entity/lookup_entity.py +5 -5
  31. uncountable/types/api/entity/resolve_entity_ids.py +3 -3
  32. uncountable/types/api/entity/set_entity_field_values.py +3 -2
  33. uncountable/types/api/entity/set_values.py +3 -2
  34. uncountable/types/api/entity/transition_entity_phase.py +5 -4
  35. uncountable/types/api/entity/unlock_entity.py +3 -2
  36. uncountable/types/api/equipment/associate_equipment_input.py +2 -2
  37. uncountable/types/api/field_options/upsert_field_options.py +4 -3
  38. uncountable/types/api/files/download_file.py +4 -3
  39. uncountable/types/api/id_source/list_id_source.py +3 -3
  40. uncountable/types/api/id_source/match_id_source.py +3 -3
  41. uncountable/types/api/input_groups/get_input_group_names.py +3 -3
  42. uncountable/types/api/inputs/create_inputs.py +4 -4
  43. uncountable/types/api/inputs/get_input_data.py +6 -6
  44. uncountable/types/api/inputs/get_input_names.py +3 -3
  45. uncountable/types/api/inputs/get_inputs_data.py +6 -6
  46. uncountable/types/api/inputs/set_input_attribute_values.py +3 -3
  47. uncountable/types/api/inputs/set_input_category.py +3 -2
  48. uncountable/types/api/inputs/set_input_subcategories.py +3 -2
  49. uncountable/types/api/inputs/set_intermediate_type.py +3 -2
  50. uncountable/types/api/material_families/update_entity_material_families.py +2 -2
  51. uncountable/types/api/outputs/get_output_data.py +6 -6
  52. uncountable/types/api/outputs/get_output_names.py +3 -3
  53. uncountable/types/api/outputs/resolve_output_conditions.py +5 -5
  54. uncountable/types/api/permissions/set_core_permissions.py +7 -6
  55. uncountable/types/api/project/get_projects.py +3 -3
  56. uncountable/types/api/project/get_projects_data.py +3 -3
  57. uncountable/types/api/recipe_links/create_recipe_link.py +3 -2
  58. uncountable/types/api/recipe_links/remove_recipe_link.py +3 -2
  59. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +3 -3
  60. uncountable/types/api/recipes/add_recipe_to_project.py +3 -2
  61. uncountable/types/api/recipes/add_time_series_data.py +4 -3
  62. uncountable/types/api/recipes/archive_recipes.py +3 -2
  63. uncountable/types/api/recipes/associate_recipe_as_input.py +3 -2
  64. uncountable/types/api/recipes/associate_recipe_as_lot.py +3 -2
  65. uncountable/types/api/recipes/clear_recipe_outputs.py +3 -2
  66. uncountable/types/api/recipes/create_recipe.py +2 -2
  67. uncountable/types/api/recipes/create_recipes.py +4 -4
  68. uncountable/types/api/recipes/disassociate_recipe_as_input.py +3 -2
  69. uncountable/types/api/recipes/edit_recipe_inputs.py +17 -16
  70. uncountable/types/api/recipes/get_column_calculation_values.py +3 -3
  71. uncountable/types/api/recipes/get_curve.py +2 -2
  72. uncountable/types/api/recipes/get_recipe_calculations.py +3 -3
  73. uncountable/types/api/recipes/get_recipe_links.py +2 -2
  74. uncountable/types/api/recipes/get_recipe_names.py +3 -3
  75. uncountable/types/api/recipes/get_recipe_output_metadata.py +3 -3
  76. uncountable/types/api/recipes/get_recipes_data.py +11 -11
  77. uncountable/types/api/recipes/lock_recipes.py +4 -3
  78. uncountable/types/api/recipes/remove_recipe_from_project.py +3 -2
  79. uncountable/types/api/recipes/set_recipe_inputs.py +3 -3
  80. uncountable/types/api/recipes/set_recipe_metadata.py +3 -2
  81. uncountable/types/api/recipes/set_recipe_output_annotations.py +6 -6
  82. uncountable/types/api/recipes/set_recipe_output_file.py +3 -3
  83. uncountable/types/api/recipes/set_recipe_outputs.py +4 -4
  84. uncountable/types/api/recipes/set_recipe_tags.py +6 -6
  85. uncountable/types/api/recipes/unarchive_recipes.py +3 -2
  86. uncountable/types/api/recipes/unlock_recipes.py +3 -2
  87. uncountable/types/api/runsheet/__init__.py +1 -0
  88. uncountable/types/api/runsheet/complete_async_upload.py +41 -0
  89. uncountable/types/api/triggers/run_trigger.py +3 -2
  90. uncountable/types/api/uploader/invoke_uploader.py +2 -2
  91. uncountable/types/async_batch_processor.py +34 -0
  92. uncountable/types/async_batch_t.py +6 -5
  93. uncountable/types/auth_retrieval_t.py +4 -3
  94. uncountable/types/base_t.py +4 -0
  95. uncountable/types/calculations_t.py +1 -1
  96. uncountable/types/chemical_structure_t.py +2 -1
  97. uncountable/types/client_base.py +21 -0
  98. uncountable/types/client_config_t.py +2 -1
  99. uncountable/types/curves_t.py +2 -2
  100. uncountable/types/data_t.py +7 -6
  101. uncountable/types/entity_t.py +3 -3
  102. uncountable/types/experiment_groups_t.py +1 -1
  103. uncountable/types/field_values_t.py +20 -20
  104. uncountable/types/fields_t.py +1 -1
  105. uncountable/types/generic_upload_t.py +7 -6
  106. uncountable/types/id_source_t.py +5 -4
  107. uncountable/types/identifier_t.py +3 -3
  108. uncountable/types/input_attributes_t.py +1 -1
  109. uncountable/types/inputs_t.py +1 -1
  110. uncountable/types/integration_server_t.py +2 -1
  111. uncountable/types/job_definition_t.py +14 -13
  112. uncountable/types/outputs_t.py +1 -1
  113. uncountable/types/overrides_t.py +3 -2
  114. uncountable/types/phases_t.py +1 -1
  115. uncountable/types/queued_job_t.py +7 -7
  116. uncountable/types/recipe_identifiers_t.py +3 -3
  117. uncountable/types/recipe_links_t.py +1 -1
  118. uncountable/types/recipe_metadata_t.py +3 -3
  119. uncountable/types/recipe_output_metadata_t.py +1 -1
  120. uncountable/types/recipe_tags_t.py +1 -1
  121. uncountable/types/recipe_workflow_steps_t.py +5 -4
  122. uncountable/types/recipes_t.py +2 -1
  123. uncountable/types/response_t.py +2 -1
  124. uncountable/types/secret_retrieval_t.py +4 -3
  125. uncountable/types/units_t.py +1 -1
  126. uncountable/types/users_t.py +1 -1
  127. uncountable/types/webhook_job_t.py +4 -3
  128. uncountable/types/workflows_t.py +2 -2
  129. {uncountablepythonsdk-0.0.111.dist-info → uncountablepythonsdk-0.0.112.dist-info}/METADATA +2 -1
  130. {uncountablepythonsdk-0.0.111.dist-info → uncountablepythonsdk-0.0.112.dist-info}/RECORD +132 -127
  131. {uncountablepythonsdk-0.0.111.dist-info → uncountablepythonsdk-0.0.112.dist-info}/WHEEL +1 -1
  132. {uncountablepythonsdk-0.0.111.dist-info → uncountablepythonsdk-0.0.112.dist-info}/top_level.txt +0 -0
@@ -8,6 +8,7 @@ import datetime # noqa: F401
8
8
  from decimal import Decimal # noqa: F401
9
9
  import dataclasses
10
10
  from pkgs.serialization import serial_class
11
+ from . import base_t
11
12
 
12
13
  __all__: list[str] = [
13
14
  "CielabColor",
@@ -24,7 +25,7 @@ __all__: list[str] = [
24
25
  named_type_path="sdk.data.RgbColor",
25
26
  unconverted_keys={"B", "G", "R"},
26
27
  )
27
- @dataclasses.dataclass(kw_only=True)
28
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
28
29
  class RgbColor:
29
30
  R: Decimal
30
31
  G: Decimal
@@ -36,7 +37,7 @@ class RgbColor:
36
37
  named_type_path="sdk.data.CielabColor",
37
38
  unconverted_keys={"L", "a", "b"},
38
39
  )
39
- @dataclasses.dataclass(kw_only=True)
40
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
40
41
  class CielabColor:
41
42
  L: Decimal
42
43
  a: Decimal
@@ -48,7 +49,7 @@ class CielabColor:
48
49
  named_type_path="sdk.data.XyzColor",
49
50
  unconverted_keys={"X", "Y", "Z"},
50
51
  )
51
- @dataclasses.dataclass(kw_only=True)
52
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
52
53
  class XyzColor:
53
54
  X: Decimal
54
55
  Y: Decimal
@@ -60,7 +61,7 @@ class XyzColor:
60
61
  named_type_path="sdk.data.LChColor",
61
62
  unconverted_keys={"C", "L", "h"},
62
63
  )
63
- @dataclasses.dataclass(kw_only=True)
64
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
64
65
  class LChColor:
65
66
  L: Decimal
66
67
  C: Decimal
@@ -72,7 +73,7 @@ class LChColor:
72
73
  named_type_path="sdk.data.HslColor",
73
74
  unconverted_keys={"L", "h", "s"},
74
75
  )
75
- @dataclasses.dataclass(kw_only=True)
76
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
76
77
  class HslColor:
77
78
  h: Decimal
78
79
  s: Decimal
@@ -84,7 +85,7 @@ class HslColor:
84
85
  named_type_path="sdk.data.RecipeOutputColor",
85
86
  unconverted_keys={"CIELAB", "LCH", "RGB", "XYZ"},
86
87
  )
87
- @dataclasses.dataclass(kw_only=True)
88
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
88
89
  class RecipeOutputColor:
89
90
  RGB: RgbColor
90
91
  CIELAB: CielabColor
@@ -390,7 +390,7 @@ class EntityType(StrEnum):
390
390
 
391
391
  # DO NOT MODIFY -- This file is generated by type_spec
392
392
  LimitedEntityType = typing.Annotated[
393
- typing.Literal[EntityType.LAB_REQUEST] | typing.Literal[EntityType.APPROVAL] | typing.Literal[EntityType.CUSTOM_ENTITY] | typing.Literal[EntityType.INGREDIENT_ATTRIBUTE] | typing.Literal[EntityType.INVENTORY_AMOUNT] | typing.Literal[EntityType.TASK] | typing.Literal[EntityType.PROJECT] | typing.Literal[EntityType.EQUIPMENT] | typing.Literal[EntityType.INV_LOCAL_LOCATIONS] | typing.Literal[EntityType.FIELD_OPTION_SET] | typing.Literal[EntityType.WEBHOOK] | typing.Literal[EntityType.SPECS] | typing.Literal[EntityType.GOAL] | typing.Literal[EntityType.INGREDIENT_TAG_MAP] | typing.Literal[EntityType.INGREDIENT_TAG] | typing.Literal[EntityType.CONDITION_PARAMETER] | typing.Literal[EntityType.OUTPUT] | typing.Literal[EntityType.OUTPUT_CONDITION_PARAMETER] | typing.Literal[EntityType.ASYNC_JOB] | typing.Literal[EntityType.CONSTRAINT] | typing.Literal[EntityType.INGREDIENT_CATEGORY_ALL] | typing.Literal[EntityType.TIME_SERIES_SEGMENT] | typing.Literal[EntityType.EQUIPMENT_MAINTENANCE] | typing.Literal[EntityType.MAINTENANCE_SCHEDULE] | typing.Literal[EntityType.CONDITION_PARAMETER_RULE],
393
+ typing.Literal[EntityType.LAB_REQUEST] | typing.Literal[EntityType.APPROVAL] | typing.Literal[EntityType.CUSTOM_ENTITY] | typing.Literal[EntityType.INGREDIENT_ATTRIBUTE] | typing.Literal[EntityType.INVENTORY_AMOUNT] | typing.Literal[EntityType.TASK] | typing.Literal[EntityType.PROJECT] | typing.Literal[EntityType.EQUIPMENT] | typing.Literal[EntityType.INV_LOCAL_LOCATIONS] | typing.Literal[EntityType.FIELD_OPTION_SET] | typing.Literal[EntityType.WEBHOOK] | typing.Literal[EntityType.SPECS] | typing.Literal[EntityType.GOAL] | typing.Literal[EntityType.INGREDIENT_TAG_MAP] | typing.Literal[EntityType.INGREDIENT_TAG] | typing.Literal[EntityType.CONDITION_PARAMETER] | typing.Literal[EntityType.OUTPUT] | typing.Literal[EntityType.OUTPUT_CONDITION_PARAMETER] | typing.Literal[EntityType.ASYNC_JOB] | typing.Literal[EntityType.CONSTRAINT] | typing.Literal[EntityType.INGREDIENT_CATEGORY_ALL] | typing.Literal[EntityType.TIME_SERIES_SEGMENT] | typing.Literal[EntityType.EQUIPMENT_MAINTENANCE] | typing.Literal[EntityType.MAINTENANCE_SCHEDULE] | typing.Literal[EntityType.CONDITION_PARAMETER_RULE] | typing.Literal[EntityType.INGREDIENT],
394
394
  serial_alias_annotation(
395
395
  named_type_path="sdk.entity.LimitedEntityType",
396
396
  ),
@@ -419,7 +419,7 @@ GrantableEntityPermissionType = typing.Annotated[
419
419
  @serial_class(
420
420
  named_type_path="sdk.entity.Entity",
421
421
  )
422
- @dataclasses.dataclass(kw_only=True)
422
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
423
423
  class Entity:
424
424
  id: base_t.ObjectId
425
425
  type: EntityType
@@ -429,7 +429,7 @@ class Entity:
429
429
  @serial_class(
430
430
  named_type_path="sdk.entity.EntityIdentifier",
431
431
  )
432
- @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
432
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
433
433
  class EntityIdentifier:
434
434
  identifier_key: identifier_t.IdentifierKey
435
435
  type: EntityType
@@ -19,7 +19,7 @@ __all__: list[str] = [
19
19
  @serial_class(
20
20
  named_type_path="sdk.experiment_groups.SimpleExperimentGroup",
21
21
  )
22
- @dataclasses.dataclass(kw_only=True)
22
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
23
23
  class SimpleExperimentGroup:
24
24
  experiment_group_id: base_t.ObjectId
25
25
  name: str
@@ -46,7 +46,7 @@ __all__: list[str] = [
46
46
  named_type_path="sdk.field_values.FieldRefNameValue",
47
47
  unconverted_values={"value"},
48
48
  )
49
- @dataclasses.dataclass(kw_only=True)
49
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
50
50
  class FieldRefNameValue:
51
51
  field_ref_name: str
52
52
  value: base_t.JsonValue
@@ -58,7 +58,7 @@ class FieldRefNameValue:
58
58
  named_type_path="sdk.field_values.FieldRefIdNameValue",
59
59
  unconverted_values={"value"},
60
60
  )
61
- @dataclasses.dataclass(kw_only=True)
61
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
62
62
  class FieldRefIdNameValue:
63
63
  field_id: base_t.ObjectId
64
64
  field_ref_name: str
@@ -71,7 +71,7 @@ class FieldRefIdNameValue:
71
71
  named_type_path="sdk.field_values.ArgumentValueRefName",
72
72
  unconverted_values={"value"},
73
73
  )
74
- @dataclasses.dataclass(kw_only=True)
74
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
75
75
  class ArgumentValueRefName:
76
76
  field_ref_name: str
77
77
  value: base_t.JsonValue
@@ -83,7 +83,7 @@ class ArgumentValueRefName:
83
83
  named_type_path="sdk.field_values.ArgumentValueId",
84
84
  unconverted_values={"value"},
85
85
  )
86
- @dataclasses.dataclass(kw_only=True)
86
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
87
87
  class ArgumentValueId:
88
88
  field_id: base_t.ObjectId
89
89
  value: base_t.JsonValue
@@ -112,7 +112,7 @@ class FieldValueType(StrEnum):
112
112
  @serial_class(
113
113
  named_type_path="sdk.field_values.FieldValueBase",
114
114
  )
115
- @dataclasses.dataclass(kw_only=True)
115
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
116
116
  class FieldValueBase:
117
117
  type: FieldValueType
118
118
 
@@ -122,7 +122,7 @@ class FieldValueBase:
122
122
  named_type_path="sdk.field_values.FieldValueFiles",
123
123
  parse_require={"type"},
124
124
  )
125
- @dataclasses.dataclass(kw_only=True)
125
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
126
126
  class FieldValueFiles(FieldValueBase):
127
127
  type: typing.Literal[FieldValueType.FILES] = FieldValueType.FILES
128
128
  file_ids: list[base_t.ObjectId]
@@ -139,7 +139,7 @@ class ValueResolution(StrEnum):
139
139
  named_type_path="sdk.field_values.FieldValueFieldOption",
140
140
  parse_require={"type"},
141
141
  )
142
- @dataclasses.dataclass(kw_only=True)
142
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
143
143
  class FieldValueFieldOption(FieldValueBase):
144
144
  type: typing.Literal[FieldValueType.FIELD_OPTION] = FieldValueType.FIELD_OPTION
145
145
  value: str
@@ -151,7 +151,7 @@ class FieldValueFieldOption(FieldValueBase):
151
151
  named_type_path="sdk.field_values.FieldValueFieldOptions",
152
152
  parse_require={"type"},
153
153
  )
154
- @dataclasses.dataclass(kw_only=True)
154
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
155
155
  class FieldValueFieldOptions(FieldValueBase):
156
156
  type: typing.Literal[FieldValueType.FIELD_OPTIONS] = FieldValueType.FIELD_OPTIONS
157
157
  value: list[str]
@@ -163,7 +163,7 @@ class FieldValueFieldOptions(FieldValueBase):
163
163
  named_type_path="sdk.field_values.FieldValueId",
164
164
  parse_require={"type"},
165
165
  )
166
- @dataclasses.dataclass(kw_only=True)
166
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
167
167
  class FieldValueId(FieldValueBase):
168
168
  type: typing.Literal[FieldValueType.ID] = FieldValueType.ID
169
169
  entity_type: entity_t.EntityType
@@ -175,7 +175,7 @@ class FieldValueId(FieldValueBase):
175
175
  named_type_path="sdk.field_values.FieldValueIds",
176
176
  parse_require={"type"},
177
177
  )
178
- @dataclasses.dataclass(kw_only=True)
178
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
179
179
  class FieldValueIds(FieldValueBase):
180
180
  type: typing.Literal[FieldValueType.IDS] = FieldValueType.IDS
181
181
  entity_type: entity_t.EntityType
@@ -187,7 +187,7 @@ class FieldValueIds(FieldValueBase):
187
187
  named_type_path="sdk.field_values.FieldValueText",
188
188
  parse_require={"type"},
189
189
  )
190
- @dataclasses.dataclass(kw_only=True)
190
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
191
191
  class FieldValueText(FieldValueBase):
192
192
  type: typing.Literal[FieldValueType.TEXT] = FieldValueType.TEXT
193
193
  value: str
@@ -198,7 +198,7 @@ class FieldValueText(FieldValueBase):
198
198
  named_type_path="sdk.field_values.FieldValueTexts",
199
199
  parse_require={"type"},
200
200
  )
201
- @dataclasses.dataclass(kw_only=True)
201
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
202
202
  class FieldValueTexts(FieldValueBase):
203
203
  type: typing.Literal[FieldValueType.TEXTS] = FieldValueType.TEXTS
204
204
  value: list[str]
@@ -209,7 +209,7 @@ class FieldValueTexts(FieldValueBase):
209
209
  named_type_path="sdk.field_values.FieldValueBoolean",
210
210
  parse_require={"type"},
211
211
  )
212
- @dataclasses.dataclass(kw_only=True)
212
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
213
213
  class FieldValueBoolean(FieldValueBase):
214
214
  type: typing.Literal[FieldValueType.BOOLEAN] = FieldValueType.BOOLEAN
215
215
  value: bool
@@ -221,7 +221,7 @@ class FieldValueBoolean(FieldValueBase):
221
221
  to_string_values={"value"},
222
222
  parse_require={"type"},
223
223
  )
224
- @dataclasses.dataclass(kw_only=True)
224
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
225
225
  class FieldValueNumeric(FieldValueBase):
226
226
  type: typing.Literal[FieldValueType.NUMERIC] = FieldValueType.NUMERIC
227
227
  value: Decimal
@@ -232,7 +232,7 @@ class FieldValueNumeric(FieldValueBase):
232
232
  named_type_path="sdk.field_values.FieldValueBatchReference",
233
233
  parse_require={"type"},
234
234
  )
235
- @dataclasses.dataclass(kw_only=True)
235
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
236
236
  class FieldValueBatchReference(FieldValueBase):
237
237
  type: typing.Literal[FieldValueType.BATCH_REFERENCE] = FieldValueType.BATCH_REFERENCE
238
238
  reference_key: identifier_t.IdentifierKeyBatchReference
@@ -244,7 +244,7 @@ class FieldValueBatchReference(FieldValueBase):
244
244
  named_type_path="sdk.field_values.FieldValueNull",
245
245
  parse_require={"type"},
246
246
  )
247
- @dataclasses.dataclass(kw_only=True)
247
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
248
248
  class FieldValueNull(FieldValueBase):
249
249
  type: typing.Literal[FieldValueType.NULL_VALUE] = FieldValueType.NULL_VALUE
250
250
 
@@ -254,7 +254,7 @@ class FieldValueNull(FieldValueBase):
254
254
  named_type_path="sdk.field_values.FieldValueNotes",
255
255
  parse_require={"type"},
256
256
  )
257
- @dataclasses.dataclass(kw_only=True)
257
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
258
258
  class FieldValueNotes(FieldValueBase):
259
259
  type: typing.Literal[FieldValueType.NOTES] = FieldValueType.NOTES
260
260
  value: str
@@ -265,7 +265,7 @@ class FieldValueNotes(FieldValueBase):
265
265
  named_type_path="sdk.field_values.FieldValueDate",
266
266
  parse_require={"type"},
267
267
  )
268
- @dataclasses.dataclass(kw_only=True)
268
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
269
269
  class FieldValueDate(FieldValueBase):
270
270
  type: typing.Literal[FieldValueType.DATE] = FieldValueType.DATE
271
271
  value: datetime.date
@@ -276,7 +276,7 @@ class FieldValueDate(FieldValueBase):
276
276
  named_type_path="sdk.field_values.FieldValueDatetime",
277
277
  parse_require={"type"},
278
278
  )
279
- @dataclasses.dataclass(kw_only=True)
279
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
280
280
  class FieldValueDatetime(FieldValueBase):
281
281
  type: typing.Literal[FieldValueType.DATETIME] = FieldValueType.DATETIME
282
282
  value: datetime.datetime
@@ -295,7 +295,7 @@ FieldValue = typing.Annotated[
295
295
  @serial_class(
296
296
  named_type_path="sdk.field_values.FieldArgumentValue",
297
297
  )
298
- @dataclasses.dataclass(kw_only=True)
298
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
299
299
  class FieldArgumentValue:
300
300
  field_key: identifier_t.IdentifierKey
301
301
  value: FieldValue
@@ -19,7 +19,7 @@ __all__: list[str] = [
19
19
  @serial_class(
20
20
  named_type_path="sdk.fields.Field",
21
21
  )
22
- @dataclasses.dataclass(kw_only=True)
22
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
23
23
  class Field:
24
24
  id: base_t.ObjectId
25
25
  name: str
@@ -10,6 +10,7 @@ from enum import StrEnum
10
10
  import dataclasses
11
11
  from pkgs.serialization import serial_class
12
12
  from pkgs.serialization import serial_union_annotation
13
+ from . import base_t
13
14
  from . import identifier_t
14
15
 
15
16
  __all__: list[str] = [
@@ -28,7 +29,7 @@ __all__: list[str] = [
28
29
  @serial_class(
29
30
  named_type_path="sdk.generic_upload.GenericRemoteDirectoryScope",
30
31
  )
31
- @dataclasses.dataclass(kw_only=True)
32
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
32
33
  class GenericRemoteDirectoryScope:
33
34
  src_path: str
34
35
  success_archive_path: str
@@ -53,7 +54,7 @@ class UploadDestinationType(StrEnum):
53
54
  @serial_class(
54
55
  named_type_path="sdk.generic_upload.UploadDestinationBase",
55
56
  )
56
- @dataclasses.dataclass(kw_only=True)
57
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
57
58
  class UploadDestinationBase:
58
59
  type: UploadDestinationType
59
60
 
@@ -63,7 +64,7 @@ class UploadDestinationBase:
63
64
  named_type_path="sdk.generic_upload.UploadDestinationProject",
64
65
  parse_require={"type"},
65
66
  )
66
- @dataclasses.dataclass(kw_only=True)
67
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
67
68
  class UploadDestinationProject(UploadDestinationBase):
68
69
  type: typing.Literal[UploadDestinationType.PROJECT] = UploadDestinationType.PROJECT
69
70
  project_key: identifier_t.IdentifierKey
@@ -74,7 +75,7 @@ class UploadDestinationProject(UploadDestinationBase):
74
75
  named_type_path="sdk.generic_upload.UploadDestinationMaterialFamily",
75
76
  parse_require={"type"},
76
77
  )
77
- @dataclasses.dataclass(kw_only=True)
78
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
78
79
  class UploadDestinationMaterialFamily(UploadDestinationBase):
79
80
  type: typing.Literal[UploadDestinationType.MATERIAL_FAMILY] = UploadDestinationType.MATERIAL_FAMILY
80
81
  material_family_key: identifier_t.IdentifierKey
@@ -85,7 +86,7 @@ class UploadDestinationMaterialFamily(UploadDestinationBase):
85
86
  named_type_path="sdk.generic_upload.UploadDestinationRecipe",
86
87
  parse_require={"type"},
87
88
  )
88
- @dataclasses.dataclass(kw_only=True)
89
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
89
90
  class UploadDestinationRecipe(UploadDestinationBase):
90
91
  type: typing.Literal[UploadDestinationType.RECIPE] = UploadDestinationType.RECIPE
91
92
  recipe_key: identifier_t.IdentifierKey
@@ -110,7 +111,7 @@ UploadDestination = typing.Annotated[
110
111
  @serial_class(
111
112
  named_type_path="sdk.generic_upload.GenericUploadStrategy",
112
113
  )
113
- @dataclasses.dataclass(kw_only=True)
114
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
114
115
  class GenericUploadStrategy:
115
116
  uploader_key: identifier_t.IdentifierKey
116
117
  destinations: list[UploadDestination]
@@ -9,6 +9,7 @@ from decimal import Decimal # noqa: F401
9
9
  import dataclasses
10
10
  from pkgs.serialization import serial_class
11
11
  from pkgs.serialization import serial_alias_annotation
12
+ from . import base_t
12
13
  from . import entity_t
13
14
 
14
15
  __all__: list[str] = [
@@ -24,7 +25,7 @@ __all__: list[str] = [
24
25
  @serial_class(
25
26
  named_type_path="sdk.id_source.IdSourceSpecBase",
26
27
  )
27
- @dataclasses.dataclass(kw_only=True)
28
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
28
29
  class IdSourceSpecBase:
29
30
  pass
30
31
 
@@ -33,7 +34,7 @@ class IdSourceSpecBase:
33
34
  @serial_class(
34
35
  named_type_path="sdk.id_source.IdSourceSpecEntity",
35
36
  )
36
- @dataclasses.dataclass(kw_only=True)
37
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
37
38
  class IdSourceSpecEntity(IdSourceSpecBase):
38
39
  entity_type: entity_t.EntityType
39
40
 
@@ -42,7 +43,7 @@ class IdSourceSpecEntity(IdSourceSpecBase):
42
43
  @serial_class(
43
44
  named_type_path="sdk.id_source.IdSourceSpecCustomEntity",
44
45
  )
45
- @dataclasses.dataclass(kw_only=True)
46
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
46
47
  class IdSourceSpecCustomEntity(IdSourceSpecBase):
47
48
  definition_ref_name: str
48
49
 
@@ -51,7 +52,7 @@ class IdSourceSpecCustomEntity(IdSourceSpecBase):
51
52
  @serial_class(
52
53
  named_type_path="sdk.id_source.IdSourceSpecFieldOptions",
53
54
  )
54
- @dataclasses.dataclass(kw_only=True)
55
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
55
56
  class IdSourceSpecFieldOptions(IdSourceSpecBase):
56
57
  set_ref_name: str
57
58
  subset_ref_name: str | None = None
@@ -24,7 +24,7 @@ __all__: list[str] = [
24
24
  named_type_path="sdk.identifier.IdentifierKeyId",
25
25
  parse_require={"type"},
26
26
  )
27
- @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
27
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
28
28
  class IdentifierKeyId:
29
29
  type: typing.Literal["id"] = "id"
30
30
  id: base_t.ObjectId
@@ -35,7 +35,7 @@ class IdentifierKeyId:
35
35
  named_type_path="sdk.identifier.IdentifierKeyRefName",
36
36
  parse_require={"type"},
37
37
  )
38
- @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
38
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
39
39
  class IdentifierKeyRefName:
40
40
  type: typing.Literal["ref_name"] = "ref_name"
41
41
  ref_name: str
@@ -46,7 +46,7 @@ class IdentifierKeyRefName:
46
46
  named_type_path="sdk.identifier.IdentifierKeyBatchReference",
47
47
  parse_require={"type"},
48
48
  )
49
- @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
49
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
50
50
  class IdentifierKeyBatchReference:
51
51
  type: typing.Literal["batch_reference"] = "batch_reference"
52
52
  reference: str
@@ -21,7 +21,7 @@ __all__: list[str] = [
21
21
  unconverted_values={"quantity_json"},
22
22
  to_string_values={"quantity_dec"},
23
23
  )
24
- @dataclasses.dataclass(kw_only=True)
24
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
25
25
  class InputAttributeValue:
26
26
  attribute_id: base_t.ObjectId
27
27
  quantity_dec: Decimal | None = None
@@ -71,7 +71,7 @@ class IngredientBehavior(StrEnum):
71
71
  @serial_class(
72
72
  named_type_path="sdk.inputs.SimpleInput",
73
73
  )
74
- @dataclasses.dataclass(kw_only=True)
74
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
75
75
  class SimpleInput:
76
76
  input_id: base_t.ObjectId
77
77
  quantity_type: IngredientQuantityType
@@ -10,6 +10,7 @@ from enum import StrEnum
10
10
  import dataclasses
11
11
  from pkgs.serialization import serial_class
12
12
  from . import auth_retrieval_t
13
+ from . import base_t
13
14
  from . import client_config_t
14
15
 
15
16
  __all__: list[str] = [
@@ -29,7 +30,7 @@ class IntegrationEnvironment(StrEnum):
29
30
  @serial_class(
30
31
  named_type_path="sdk.integration_server.EnvironmentConfig",
31
32
  )
32
- @dataclasses.dataclass(kw_only=True)
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
33
34
  class EnvironmentConfig:
34
35
  auth_retrieval: auth_retrieval_t.AuthRetrieval
35
36
  base_url: str
@@ -11,6 +11,7 @@ import dataclasses
11
11
  from pkgs.serialization import serial_class
12
12
  from pkgs.serialization import serial_union_annotation
13
13
  from . import auth_retrieval_t
14
+ from . import base_t
14
15
  from . import client_config_t
15
16
  from . import generic_upload_t
16
17
  from . import identifier_t
@@ -63,7 +64,7 @@ class GenericUploadDataSourceType(StrEnum):
63
64
  @serial_class(
64
65
  named_type_path="sdk.job_definition.JobExecutorBase",
65
66
  )
66
- @dataclasses.dataclass(kw_only=True)
67
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
67
68
  class JobExecutorBase:
68
69
  type: JobExecutorType
69
70
 
@@ -73,7 +74,7 @@ class JobExecutorBase:
73
74
  named_type_path="sdk.job_definition.JobExecutorScript",
74
75
  parse_require={"type"},
75
76
  )
76
- @dataclasses.dataclass(kw_only=True)
77
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
77
78
  class JobExecutorScript(JobExecutorBase):
78
79
  type: typing.Literal[JobExecutorType.SCRIPT] = JobExecutorType.SCRIPT
79
80
  import_path: str
@@ -83,7 +84,7 @@ class JobExecutorScript(JobExecutorBase):
83
84
  @serial_class(
84
85
  named_type_path="sdk.job_definition.GenericUploadDataSourceBase",
85
86
  )
86
- @dataclasses.dataclass(kw_only=True)
87
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
87
88
  class GenericUploadDataSourceBase:
88
89
  type: GenericUploadDataSourceType
89
90
 
@@ -93,7 +94,7 @@ class GenericUploadDataSourceBase:
93
94
  named_type_path="sdk.job_definition.GenericUploadDataSourceSFTP",
94
95
  parse_require={"type"},
95
96
  )
96
- @dataclasses.dataclass(kw_only=True)
97
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
97
98
  class GenericUploadDataSourceSFTP(GenericUploadDataSourceBase):
98
99
  type: typing.Literal[GenericUploadDataSourceType.SFTP] = GenericUploadDataSourceType.SFTP
99
100
  host: str
@@ -113,7 +114,7 @@ class S3CloudProvider(StrEnum):
113
114
  named_type_path="sdk.job_definition.GenericUploadDataSourceS3",
114
115
  parse_require={"type"},
115
116
  )
116
- @dataclasses.dataclass(kw_only=True)
117
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
117
118
  class GenericUploadDataSourceS3(GenericUploadDataSourceBase):
118
119
  type: typing.Literal[GenericUploadDataSourceType.S3] = GenericUploadDataSourceType.S3
119
120
  bucket_name: str
@@ -143,7 +144,7 @@ GenericUploadDataSource = typing.Annotated[
143
144
  named_type_path="sdk.job_definition.JobExecutorGenericUpload",
144
145
  parse_require={"type"},
145
146
  )
146
- @dataclasses.dataclass(kw_only=True)
147
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
147
148
  class JobExecutorGenericUpload(JobExecutorBase):
148
149
  type: typing.Literal[JobExecutorType.GENERIC_UPLOAD] = JobExecutorType.GENERIC_UPLOAD
149
150
  data_source: GenericUploadDataSource
@@ -169,7 +170,7 @@ JobExecutor = typing.Annotated[
169
170
  @serial_class(
170
171
  named_type_path="sdk.job_definition.JobLoggingSettings",
171
172
  )
172
- @dataclasses.dataclass(kw_only=True)
173
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
173
174
  class JobLoggingSettings:
174
175
  enabled: bool = False
175
176
  share_with_user_groups: list[identifier_t.IdentifierKey] | None = None
@@ -179,7 +180,7 @@ class JobLoggingSettings:
179
180
  @serial_class(
180
181
  named_type_path="sdk.job_definition.JobDefinitionBase",
181
182
  )
182
- @dataclasses.dataclass(kw_only=True)
183
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
183
184
  class JobDefinitionBase:
184
185
  id: str
185
186
  name: str
@@ -193,7 +194,7 @@ class JobDefinitionBase:
193
194
  named_type_path="sdk.job_definition.CronJobDefinition",
194
195
  parse_require={"type"},
195
196
  )
196
- @dataclasses.dataclass(kw_only=True)
197
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
197
198
  class CronJobDefinition(JobDefinitionBase):
198
199
  type: typing.Literal[JobDefinitionType.CRON] = JobDefinitionType.CRON
199
200
  cron_spec: str
@@ -204,7 +205,7 @@ class CronJobDefinition(JobDefinitionBase):
204
205
  named_type_path="sdk.job_definition.WebhookJobDefinition",
205
206
  parse_require={"type"},
206
207
  )
207
- @dataclasses.dataclass(kw_only=True)
208
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
208
209
  class WebhookJobDefinition(JobDefinitionBase):
209
210
  type: typing.Literal[JobDefinitionType.WEBHOOK] = JobDefinitionType.WEBHOOK
210
211
  signature_key_secret: secret_retrieval_t.SecretRetrieval
@@ -228,7 +229,7 @@ JobDefinition = typing.Annotated[
228
229
  @serial_class(
229
230
  named_type_path="sdk.job_definition.ProfileDefinition",
230
231
  )
231
- @dataclasses.dataclass(kw_only=True)
232
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
232
233
  class ProfileDefinition:
233
234
  jobs: list[JobDefinition]
234
235
  auth_retrieval: auth_retrieval_t.AuthRetrieval | None = None
@@ -241,7 +242,7 @@ class ProfileDefinition:
241
242
  @serial_class(
242
243
  named_type_path="sdk.job_definition.ProfileMetadata",
243
244
  )
244
- @dataclasses.dataclass(kw_only=True)
245
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
245
246
  class ProfileMetadata:
246
247
  name: str
247
248
  base_url: str
@@ -254,7 +255,7 @@ class ProfileMetadata:
254
255
  @serial_class(
255
256
  named_type_path="sdk.job_definition.JobResult",
256
257
  )
257
- @dataclasses.dataclass(kw_only=True)
258
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
258
259
  class JobResult:
259
260
  success: bool
260
261
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -20,7 +20,7 @@ __all__: list[str] = [
20
20
  @serial_class(
21
21
  named_type_path="sdk.outputs.SimpleOutput",
22
22
  )
23
- @dataclasses.dataclass(kw_only=True)
23
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
24
24
  class SimpleOutput:
25
25
  output_id: base_t.ObjectId
26
26
  name: str
@@ -9,6 +9,7 @@ from decimal import Decimal # noqa: F401
9
9
  import dataclasses
10
10
  from pkgs.serialization import serial_class
11
11
  from pkgs.serialization import serial_alias_annotation
12
+ from . import base_t
12
13
  from . import secret_retrieval_t
13
14
 
14
15
  __all__: list[str] = [
@@ -22,7 +23,7 @@ __all__: list[str] = [
22
23
  @serial_class(
23
24
  named_type_path="sdk.overrides.SecretRetrievalOverride",
24
25
  )
25
- @dataclasses.dataclass(kw_only=True)
26
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
26
27
  class SecretRetrievalOverride:
27
28
  profile_name: str
28
29
  secret_retrieval: secret_retrieval_t.SecretRetrieval
@@ -42,7 +43,7 @@ SecretRetrievalOverrides = typing.Annotated[
42
43
  @serial_class(
43
44
  named_type_path="sdk.overrides.Overrides",
44
45
  )
45
- @dataclasses.dataclass(kw_only=True)
46
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
46
47
  class Overrides:
47
48
  secrets: SecretRetrievalOverrides
48
49
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -19,7 +19,7 @@ __all__: list[str] = [
19
19
  @serial_class(
20
20
  named_type_path="sdk.phases.Phase",
21
21
  )
22
- @dataclasses.dataclass(kw_only=True)
22
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
23
23
  class Phase:
24
24
  id: base_t.ObjectId
25
25
  name: str