UncountablePythonSDK 0.0.110__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 (136) hide show
  1. docs/conf.py +2 -2
  2. docs/justfile +1 -1
  3. examples/create_ingredient_sdk.py +34 -0
  4. examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +35 -0
  5. examples/integration-server/jobs/materials_auto/profile.yaml +9 -0
  6. examples/integration-server/pyproject.toml +2 -2
  7. pkgs/argument_parser/argument_parser.py +9 -6
  8. pkgs/type_spec/builder.py +19 -2
  9. pkgs/type_spec/emit_python.py +9 -3
  10. pkgs/type_spec/emit_typescript_util.py +16 -1
  11. pkgs/type_spec/parts/base.py.prepart +4 -0
  12. pkgs/type_spec/type_info/emit_type_info.py +12 -3
  13. pkgs/type_spec/ui_entry_actions/__init__.py +4 -0
  14. pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +294 -0
  15. pkgs/type_spec/value_spec/convert_type.py +13 -0
  16. uncountable/core/client.py +7 -4
  17. uncountable/integration/executors/generic_upload_executor.py +3 -2
  18. uncountable/integration/job.py +24 -1
  19. uncountable/integration/queue_runner/datastore/datastore_sqlite.py +3 -2
  20. uncountable/integration/scheduler.py +4 -3
  21. uncountable/types/__init__.py +4 -0
  22. uncountable/types/api/batch/execute_batch.py +4 -4
  23. uncountable/types/api/batch/execute_batch_load_async.py +2 -2
  24. uncountable/types/api/chemical/convert_chemical_formats.py +3 -3
  25. uncountable/types/api/condition_parameters/__init__.py +1 -0
  26. uncountable/types/api/condition_parameters/upsert_condition_match.py +72 -0
  27. uncountable/types/api/entity/create_entities.py +3 -3
  28. uncountable/types/api/entity/create_entity.py +3 -3
  29. uncountable/types/api/entity/create_or_update_entity.py +3 -2
  30. uncountable/types/api/entity/get_entities_data.py +3 -3
  31. uncountable/types/api/entity/grant_entity_permissions.py +3 -2
  32. uncountable/types/api/entity/list_entities.py +4 -4
  33. uncountable/types/api/entity/lock_entity.py +3 -2
  34. uncountable/types/api/entity/lookup_entity.py +5 -5
  35. uncountable/types/api/entity/resolve_entity_ids.py +3 -3
  36. uncountable/types/api/entity/set_entity_field_values.py +3 -2
  37. uncountable/types/api/entity/set_values.py +3 -2
  38. uncountable/types/api/entity/transition_entity_phase.py +5 -4
  39. uncountable/types/api/entity/unlock_entity.py +3 -2
  40. uncountable/types/api/equipment/associate_equipment_input.py +2 -2
  41. uncountable/types/api/field_options/upsert_field_options.py +4 -3
  42. uncountable/types/api/files/download_file.py +4 -3
  43. uncountable/types/api/id_source/list_id_source.py +3 -3
  44. uncountable/types/api/id_source/match_id_source.py +3 -3
  45. uncountable/types/api/input_groups/get_input_group_names.py +3 -3
  46. uncountable/types/api/inputs/create_inputs.py +6 -4
  47. uncountable/types/api/inputs/get_input_data.py +6 -6
  48. uncountable/types/api/inputs/get_input_names.py +3 -3
  49. uncountable/types/api/inputs/get_inputs_data.py +6 -6
  50. uncountable/types/api/inputs/set_input_attribute_values.py +3 -3
  51. uncountable/types/api/inputs/set_input_category.py +3 -2
  52. uncountable/types/api/inputs/set_input_subcategories.py +3 -2
  53. uncountable/types/api/inputs/set_intermediate_type.py +3 -2
  54. uncountable/types/api/material_families/update_entity_material_families.py +2 -2
  55. uncountable/types/api/outputs/get_output_data.py +6 -6
  56. uncountable/types/api/outputs/get_output_names.py +3 -3
  57. uncountable/types/api/outputs/resolve_output_conditions.py +5 -5
  58. uncountable/types/api/permissions/set_core_permissions.py +7 -6
  59. uncountable/types/api/project/get_projects.py +3 -3
  60. uncountable/types/api/project/get_projects_data.py +3 -3
  61. uncountable/types/api/recipe_links/create_recipe_link.py +3 -2
  62. uncountable/types/api/recipe_links/remove_recipe_link.py +3 -2
  63. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +3 -3
  64. uncountable/types/api/recipes/add_recipe_to_project.py +3 -2
  65. uncountable/types/api/recipes/add_time_series_data.py +4 -3
  66. uncountable/types/api/recipes/archive_recipes.py +3 -2
  67. uncountable/types/api/recipes/associate_recipe_as_input.py +3 -2
  68. uncountable/types/api/recipes/associate_recipe_as_lot.py +3 -2
  69. uncountable/types/api/recipes/clear_recipe_outputs.py +3 -2
  70. uncountable/types/api/recipes/create_recipe.py +2 -2
  71. uncountable/types/api/recipes/create_recipes.py +4 -4
  72. uncountable/types/api/recipes/disassociate_recipe_as_input.py +3 -2
  73. uncountable/types/api/recipes/edit_recipe_inputs.py +18 -16
  74. uncountable/types/api/recipes/get_column_calculation_values.py +3 -3
  75. uncountable/types/api/recipes/get_curve.py +2 -2
  76. uncountable/types/api/recipes/get_recipe_calculations.py +3 -3
  77. uncountable/types/api/recipes/get_recipe_links.py +2 -2
  78. uncountable/types/api/recipes/get_recipe_names.py +3 -3
  79. uncountable/types/api/recipes/get_recipe_output_metadata.py +3 -3
  80. uncountable/types/api/recipes/get_recipes_data.py +11 -11
  81. uncountable/types/api/recipes/lock_recipes.py +4 -3
  82. uncountable/types/api/recipes/remove_recipe_from_project.py +3 -2
  83. uncountable/types/api/recipes/set_recipe_inputs.py +3 -3
  84. uncountable/types/api/recipes/set_recipe_metadata.py +3 -2
  85. uncountable/types/api/recipes/set_recipe_output_annotations.py +6 -6
  86. uncountable/types/api/recipes/set_recipe_output_file.py +3 -3
  87. uncountable/types/api/recipes/set_recipe_outputs.py +4 -4
  88. uncountable/types/api/recipes/set_recipe_tags.py +6 -6
  89. uncountable/types/api/recipes/unarchive_recipes.py +3 -2
  90. uncountable/types/api/recipes/unlock_recipes.py +3 -2
  91. uncountable/types/api/runsheet/__init__.py +1 -0
  92. uncountable/types/api/runsheet/complete_async_upload.py +41 -0
  93. uncountable/types/api/triggers/run_trigger.py +3 -2
  94. uncountable/types/api/uploader/invoke_uploader.py +2 -2
  95. uncountable/types/async_batch_processor.py +74 -0
  96. uncountable/types/async_batch_t.py +7 -5
  97. uncountable/types/auth_retrieval_t.py +4 -3
  98. uncountable/types/base_t.py +4 -0
  99. uncountable/types/calculations_t.py +1 -1
  100. uncountable/types/chemical_structure_t.py +2 -1
  101. uncountable/types/client_base.py +48 -0
  102. uncountable/types/client_config_t.py +2 -1
  103. uncountable/types/curves_t.py +2 -2
  104. uncountable/types/data_t.py +22 -21
  105. uncountable/types/entity_t.py +9 -3
  106. uncountable/types/experiment_groups_t.py +1 -1
  107. uncountable/types/field_values_t.py +20 -20
  108. uncountable/types/fields_t.py +1 -1
  109. uncountable/types/generic_upload_t.py +7 -6
  110. uncountable/types/id_source_t.py +5 -4
  111. uncountable/types/identifier_t.py +3 -3
  112. uncountable/types/input_attributes_t.py +1 -1
  113. uncountable/types/inputs_t.py +1 -1
  114. uncountable/types/integration_server_t.py +2 -1
  115. uncountable/types/job_definition_t.py +14 -13
  116. uncountable/types/outputs_t.py +1 -1
  117. uncountable/types/overrides_t.py +3 -2
  118. uncountable/types/phases_t.py +1 -1
  119. uncountable/types/queued_job_t.py +7 -7
  120. uncountable/types/recipe_identifiers_t.py +3 -3
  121. uncountable/types/recipe_links_t.py +1 -1
  122. uncountable/types/recipe_metadata_t.py +3 -3
  123. uncountable/types/recipe_output_metadata_t.py +1 -1
  124. uncountable/types/recipe_tags_t.py +1 -1
  125. uncountable/types/recipe_workflow_steps_t.py +5 -4
  126. uncountable/types/recipes_t.py +2 -1
  127. uncountable/types/response_t.py +2 -1
  128. uncountable/types/secret_retrieval_t.py +4 -3
  129. uncountable/types/units_t.py +1 -1
  130. uncountable/types/users_t.py +1 -1
  131. uncountable/types/webhook_job_t.py +4 -3
  132. uncountable/types/workflows_t.py +2 -2
  133. {uncountablepythonsdk-0.0.110.dist-info → uncountablepythonsdk-0.0.112.dist-info}/METADATA +2 -1
  134. {uncountablepythonsdk-0.0.110.dist-info → uncountablepythonsdk-0.0.112.dist-info}/RECORD +136 -128
  135. {uncountablepythonsdk-0.0.110.dist-info → uncountablepythonsdk-0.0.112.dist-info}/WHEEL +1 -1
  136. {uncountablepythonsdk-0.0.110.dist-info → uncountablepythonsdk-0.0.112.dist-info}/top_level.txt +0 -0
@@ -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
  from ... import identifier_t
14
15
  from ... import response_t
@@ -32,7 +33,7 @@ ENDPOINT_PATH = "api/external/entity/transition_entity_phase"
32
33
  named_type_path="sdk.api.entity.transition_entity_phase.TransitionIdentifierPhases",
33
34
  parse_require={"type"},
34
35
  )
35
- @dataclasses.dataclass(kw_only=True)
36
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
36
37
  class TransitionIdentifierPhases:
37
38
  type: typing.Literal["phases"] = "phases"
38
39
  phase_from_key: identifier_t.IdentifierKey
@@ -44,7 +45,7 @@ class TransitionIdentifierPhases:
44
45
  named_type_path="sdk.api.entity.transition_entity_phase.TransitionIdentifierTransition",
45
46
  parse_require={"type"},
46
47
  )
47
- @dataclasses.dataclass(kw_only=True)
48
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
48
49
  class TransitionIdentifierTransition:
49
50
  type: typing.Literal["transition"] = "transition"
50
51
  transition_key: identifier_t.IdentifierKey
@@ -63,7 +64,7 @@ TransitionIdentifier = typing.Annotated[
63
64
  @serial_class(
64
65
  named_type_path="sdk.api.entity.transition_entity_phase.Arguments",
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 Arguments:
68
69
  entity: entity_t.Entity
69
70
  transition: TransitionIdentifier
@@ -73,7 +74,7 @@ class Arguments:
73
74
  @serial_class(
74
75
  named_type_path="sdk.api.entity.transition_entity_phase.Data",
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 Data(response_t.Response):
78
79
  pass
79
80
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -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 ... import async_batch_t
12
+ from ... import base_t
12
13
  from ... import entity_t
13
14
  from ... import identifier_t
14
15
 
@@ -27,7 +28,7 @@ ENDPOINT_PATH = "api/external/entity/external_unlock_entity"
27
28
  @serial_class(
28
29
  named_type_path="sdk.api.entity.unlock_entity.Arguments",
29
30
  )
30
- @dataclasses.dataclass(kw_only=True)
31
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
31
32
  class Arguments:
32
33
  entity_key: identifier_t.IdentifierKey
33
34
  entity_type: entity_t.EntityType
@@ -37,7 +38,7 @@ class Arguments:
37
38
  @serial_class(
38
39
  named_type_path="sdk.api.entity.unlock_entity.Data",
39
40
  )
40
- @dataclasses.dataclass(kw_only=True)
41
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
41
42
  class Data(async_batch_t.AsyncBatchActionReturn):
42
43
  pass
43
44
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -27,7 +27,7 @@ ENDPOINT_PATH = "api/external/equipment/associate_equipment_input"
27
27
  @serial_class(
28
28
  named_type_path="sdk.api.equipment.associate_equipment_input.Arguments",
29
29
  )
30
- @dataclasses.dataclass(kw_only=True)
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
31
31
  class Arguments:
32
32
  equipment_key: identifier_t.IdentifierKey
33
33
  material_family_ids: list[base_t.ObjectId]
@@ -37,7 +37,7 @@ class Arguments:
37
37
  @serial_class(
38
38
  named_type_path="sdk.api.equipment.associate_equipment_input.Data",
39
39
  )
40
- @dataclasses.dataclass(kw_only=True)
40
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
41
41
  class Data(async_batch_t.AsyncBatchActionReturn):
42
42
  pass
43
43
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -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
  from ... import identifier_t
12
13
 
13
14
  __all__: list[str] = [
@@ -26,7 +27,7 @@ ENDPOINT_PATH = "api/external/field_options/upsert_field_options"
26
27
  @serial_class(
27
28
  named_type_path="sdk.api.field_options.upsert_field_options.FieldOption",
28
29
  )
29
- @dataclasses.dataclass(kw_only=True)
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
30
31
  class FieldOption:
31
32
  option_id: str
32
33
  option_value: str | None = None
@@ -38,7 +39,7 @@ class FieldOption:
38
39
  @serial_class(
39
40
  named_type_path="sdk.api.field_options.upsert_field_options.Arguments",
40
41
  )
41
- @dataclasses.dataclass(kw_only=True)
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
42
43
  class Arguments:
43
44
  option_set_key: identifier_t.IdentifierKey
44
45
  field_options: list[FieldOption]
@@ -48,7 +49,7 @@ class Arguments:
48
49
  @serial_class(
49
50
  named_type_path="sdk.api.field_options.upsert_field_options.Data",
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 Data:
53
54
  pass
54
55
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -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 entity_t
14
15
  from ... import identifier_t
15
16
 
@@ -36,7 +37,7 @@ class FileDownloadQueryType(StrEnum):
36
37
  @serial_class(
37
38
  named_type_path="sdk.api.files.download_file.FileDownloadQueryBase",
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 FileDownloadQueryBase:
41
42
  type: FileDownloadQueryType
42
43
 
@@ -46,7 +47,7 @@ class FileDownloadQueryBase:
46
47
  named_type_path="sdk.api.files.download_file.FileDownloadQueryEntityField",
47
48
  parse_require={"type"},
48
49
  )
49
- @dataclasses.dataclass(kw_only=True)
50
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
50
51
  class FileDownloadQueryEntityField(FileDownloadQueryBase):
51
52
  type: typing.Literal[FileDownloadQueryType.ENTITY_FIELD] = FileDownloadQueryType.ENTITY_FIELD
52
53
  entity: entity_t.EntityIdentifier
@@ -70,7 +71,7 @@ FileDownloadQuery = typing.Annotated[
70
71
  @serial_class(
71
72
  named_type_path="sdk.api.files.download_file.Arguments",
72
73
  )
73
- @dataclasses.dataclass(kw_only=True)
74
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
74
75
  class Arguments:
75
76
  file_query: FileDownloadQuery
76
77
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -27,7 +27,7 @@ ENDPOINT_PATH = "api/external/id_source/list_id_source"
27
27
  @serial_class(
28
28
  named_type_path="sdk.api.id_source.list_id_source.Arguments",
29
29
  )
30
- @dataclasses.dataclass(kw_only=True)
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
31
31
  class Arguments:
32
32
  spec: id_source_t.IdSourceSpec
33
33
  search_label: str
@@ -39,7 +39,7 @@ class Arguments:
39
39
  @serial_class(
40
40
  named_type_path="sdk.api.id_source.list_id_source.IdName",
41
41
  )
42
- @dataclasses.dataclass(kw_only=True)
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
43
43
  class IdName:
44
44
  id: base_t.ObjectId | str
45
45
  name: str
@@ -49,7 +49,7 @@ class IdName:
49
49
  @serial_class(
50
50
  named_type_path="sdk.api.id_source.list_id_source.Data",
51
51
  )
52
- @dataclasses.dataclass(kw_only=True)
52
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
53
53
  class Data:
54
54
  results: list[IdName]
55
55
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -27,7 +27,7 @@ ENDPOINT_PATH = "api/external/id_source/match_id_source"
27
27
  @serial_class(
28
28
  named_type_path="sdk.api.id_source.match_id_source.Arguments",
29
29
  )
30
- @dataclasses.dataclass(kw_only=True)
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
31
31
  class Arguments:
32
32
  spec: id_source_t.IdSourceSpec
33
33
  names: list[str]
@@ -37,7 +37,7 @@ class Arguments:
37
37
  @serial_class(
38
38
  named_type_path="sdk.api.id_source.match_id_source.Match",
39
39
  )
40
- @dataclasses.dataclass(kw_only=True)
40
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
41
41
  class Match:
42
42
  name: str
43
43
  ids: list[base_t.ObjectId | str]
@@ -47,7 +47,7 @@ class Match:
47
47
  @serial_class(
48
48
  named_type_path="sdk.api.id_source.match_id_source.Data",
49
49
  )
50
- @dataclasses.dataclass(kw_only=True)
50
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
51
51
  class Data:
52
52
  results: list[Match]
53
53
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -26,7 +26,7 @@ ENDPOINT_PATH = "api/external/input_groups/external_get_input_group_names"
26
26
  @serial_class(
27
27
  named_type_path="sdk.api.input_groups.get_input_group_names.Arguments",
28
28
  )
29
- @dataclasses.dataclass(kw_only=True)
29
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
30
30
  class Arguments:
31
31
  material_family_id: base_t.ObjectId
32
32
 
@@ -35,7 +35,7 @@ class Arguments:
35
35
  @serial_class(
36
36
  named_type_path="sdk.api.input_groups.get_input_group_names.SimpleInputGroup",
37
37
  )
38
- @dataclasses.dataclass(kw_only=True)
38
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
39
39
  class SimpleInputGroup:
40
40
  input_group_id: base_t.ObjectId
41
41
  name: str
@@ -45,7 +45,7 @@ class SimpleInputGroup:
45
45
  @serial_class(
46
46
  named_type_path="sdk.api.input_groups.get_input_group_names.Data",
47
47
  )
48
- @dataclasses.dataclass(kw_only=True)
48
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
49
49
  class Data:
50
50
  input_groups: list[SimpleInputGroup]
51
51
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -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 ... import base_t
12
+ from ... import field_values_t
12
13
  from ... import input_attributes_t
13
14
  from ... import inputs_t
14
15
 
@@ -29,7 +30,7 @@ ENDPOINT_PATH = "api/external/inputs/external_create_inputs"
29
30
  @serial_class(
30
31
  named_type_path="sdk.api.inputs.create_inputs.Arguments",
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 Arguments:
34
35
  inputs_to_create: list[InputToCreate]
35
36
 
@@ -38,7 +39,7 @@ class Arguments:
38
39
  @serial_class(
39
40
  named_type_path="sdk.api.inputs.create_inputs.InputToCreate",
40
41
  )
41
- @dataclasses.dataclass(kw_only=True)
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
42
43
  class InputToCreate:
43
44
  name: str
44
45
  material_family_ids: list[base_t.ObjectId]
@@ -46,13 +47,14 @@ class InputToCreate:
46
47
  type: typing.Literal[inputs_t.IngredientType.INGREDIENT] | typing.Literal[inputs_t.IngredientType.PROCESS_PARAMETER]
47
48
  attributes: list[input_attributes_t.InputAttributeValue] | None = None
48
49
  category_id: base_t.ObjectId | None = None
50
+ field_values: list[field_values_t.FieldRefNameValue] | None = None
49
51
 
50
52
 
51
53
  # DO NOT MODIFY -- This file is generated by type_spec
52
54
  @serial_class(
53
55
  named_type_path="sdk.api.inputs.create_inputs.InputSimple",
54
56
  )
55
- @dataclasses.dataclass(kw_only=True)
57
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
56
58
  class InputSimple:
57
59
  input_id: base_t.ObjectId
58
60
 
@@ -61,7 +63,7 @@ class InputSimple:
61
63
  @serial_class(
62
64
  named_type_path="sdk.api.inputs.create_inputs.Data",
63
65
  )
64
- @dataclasses.dataclass(kw_only=True)
66
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
65
67
  class Data:
66
68
  inputs: list[InputSimple]
67
69
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -30,7 +30,7 @@ ENDPOINT_PATH = "api/external/inputs/external_get_input_data"
30
30
  @serial_class(
31
31
  named_type_path="sdk.api.inputs.get_input_data.Arguments",
32
32
  )
33
- @dataclasses.dataclass(kw_only=True)
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
34
34
  class Arguments:
35
35
  material_family_id: base_t.ObjectId
36
36
  input_ids: list[base_t.ObjectId] | None
@@ -43,7 +43,7 @@ class Arguments:
43
43
  @serial_class(
44
44
  named_type_path="sdk.api.inputs.get_input_data.SimpleInputAttr",
45
45
  )
46
- @dataclasses.dataclass(kw_only=True)
46
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
47
47
  class SimpleInputAttr:
48
48
  attribute_id: base_t.ObjectId
49
49
  name: str
@@ -54,7 +54,7 @@ class SimpleInputAttr:
54
54
  @serial_class(
55
55
  named_type_path="sdk.api.inputs.get_input_data.SimpleInputGlobalCategory",
56
56
  )
57
- @dataclasses.dataclass(kw_only=True)
57
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
58
58
  class SimpleInputGlobalCategory:
59
59
  category_id: base_t.ObjectId
60
60
  name: str
@@ -64,7 +64,7 @@ class SimpleInputGlobalCategory:
64
64
  @serial_class(
65
65
  named_type_path="sdk.api.inputs.get_input_data.SimpleInputSubcategory",
66
66
  )
67
- @dataclasses.dataclass(kw_only=True)
67
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
68
68
  class SimpleInputSubcategory:
69
69
  subcategory_id: base_t.ObjectId
70
70
  name: str
@@ -74,7 +74,7 @@ class SimpleInputSubcategory:
74
74
  @serial_class(
75
75
  named_type_path="sdk.api.inputs.get_input_data.FullInput",
76
76
  )
77
- @dataclasses.dataclass(kw_only=True)
77
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
78
78
  class FullInput:
79
79
  input_id: base_t.ObjectId
80
80
  name: str
@@ -89,7 +89,7 @@ class FullInput:
89
89
  @serial_class(
90
90
  named_type_path="sdk.api.inputs.get_input_data.Data",
91
91
  )
92
- @dataclasses.dataclass(kw_only=True)
92
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
93
93
  class Data:
94
94
  inputs: list[FullInput]
95
95
  attrs: list[SimpleInputAttr]
@@ -26,7 +26,7 @@ ENDPOINT_PATH = "api/external/inputs/external_get_input_names"
26
26
  @serial_class(
27
27
  named_type_path="sdk.api.inputs.get_input_names.Arguments",
28
28
  )
29
- @dataclasses.dataclass(kw_only=True)
29
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
30
30
  class Arguments:
31
31
  material_family_id: base_t.ObjectId
32
32
  is_parameter: bool | None
@@ -38,7 +38,7 @@ class Arguments:
38
38
  @serial_class(
39
39
  named_type_path="sdk.api.inputs.get_input_names.InputWithName",
40
40
  )
41
- @dataclasses.dataclass(kw_only=True)
41
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
42
42
  class InputWithName:
43
43
  input_id: base_t.ObjectId
44
44
  name: str
@@ -48,7 +48,7 @@ class InputWithName:
48
48
  @serial_class(
49
49
  named_type_path="sdk.api.inputs.get_input_names.Data",
50
50
  )
51
- @dataclasses.dataclass(kw_only=True)
51
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
52
52
  class Data:
53
53
  inputs: list[InputWithName]
54
54
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -30,7 +30,7 @@ ENDPOINT_PATH = "api/external/inputs/external_get_inputs_data"
30
30
  @serial_class(
31
31
  named_type_path="sdk.api.inputs.get_inputs_data.Arguments",
32
32
  )
33
- @dataclasses.dataclass(kw_only=True)
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
34
34
  class Arguments:
35
35
  input_ids: list[base_t.ObjectId]
36
36
 
@@ -39,7 +39,7 @@ class Arguments:
39
39
  @serial_class(
40
40
  named_type_path="sdk.api.inputs.get_inputs_data.AttributeDetails",
41
41
  )
42
- @dataclasses.dataclass(kw_only=True)
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
43
43
  class AttributeDetails:
44
44
  attribute_id: base_t.ObjectId
45
45
  name: str
@@ -50,7 +50,7 @@ class AttributeDetails:
50
50
  @serial_class(
51
51
  named_type_path="sdk.api.inputs.get_inputs_data.InputTag",
52
52
  )
53
- @dataclasses.dataclass(kw_only=True)
53
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
54
54
  class InputTag:
55
55
  tag_id: base_t.ObjectId
56
56
  tag_name: str
@@ -60,7 +60,7 @@ class InputTag:
60
60
  @serial_class(
61
61
  named_type_path="sdk.api.inputs.get_inputs_data.InputCategory",
62
62
  )
63
- @dataclasses.dataclass(kw_only=True)
63
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
64
64
  class InputCategory:
65
65
  material_family_id: base_t.ObjectId
66
66
  category_id: base_t.ObjectId
@@ -71,7 +71,7 @@ class InputCategory:
71
71
  @serial_class(
72
72
  named_type_path="sdk.api.inputs.get_inputs_data.InputDetails",
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 InputDetails:
76
76
  input_id: base_t.ObjectId
77
77
  name: str
@@ -86,7 +86,7 @@ class InputDetails:
86
86
  @serial_class(
87
87
  named_type_path="sdk.api.inputs.get_inputs_data.Data",
88
88
  )
89
- @dataclasses.dataclass(kw_only=True)
89
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
90
90
  class Data:
91
91
  input_details: list[InputDetails]
92
92
  input_attributes: list[AttributeDetails]
@@ -27,7 +27,7 @@ ENDPOINT_PATH = "api/external/inputs/external_set_input_attribute_values"
27
27
  @serial_class(
28
28
  named_type_path="sdk.api.inputs.set_input_attribute_values.Arguments",
29
29
  )
30
- @dataclasses.dataclass(kw_only=True)
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
31
31
  class Arguments:
32
32
  attribute_values: list[InputAttributeValue]
33
33
 
@@ -38,7 +38,7 @@ class Arguments:
38
38
  unconverted_values={"quantity_json"},
39
39
  to_string_values={"quantity_dec"},
40
40
  )
41
- @dataclasses.dataclass(kw_only=True)
41
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
42
42
  class InputAttributeValue:
43
43
  input_id: base_t.ObjectId
44
44
  attribute_id: base_t.ObjectId
@@ -50,7 +50,7 @@ class InputAttributeValue:
50
50
  @serial_class(
51
51
  named_type_path="sdk.api.inputs.set_input_attribute_values.Data",
52
52
  )
53
- @dataclasses.dataclass(kw_only=True)
53
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
54
54
  class Data(response_t.Response):
55
55
  pass
56
56
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -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
  from ... import identifier_t
12
13
  from ... import response_t
13
14
 
@@ -26,7 +27,7 @@ ENDPOINT_PATH = "api/external/inputs/external_set_input_category"
26
27
  @serial_class(
27
28
  named_type_path="sdk.api.inputs.set_input_category.Arguments",
28
29
  )
29
- @dataclasses.dataclass(kw_only=True)
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
30
31
  class Arguments:
31
32
  input_key: identifier_t.IdentifierKey
32
33
  category_id: int | None
@@ -37,7 +38,7 @@ class Arguments:
37
38
  @serial_class(
38
39
  named_type_path="sdk.api.inputs.set_input_category.Data",
39
40
  )
40
- @dataclasses.dataclass(kw_only=True)
41
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
41
42
  class Data(response_t.Response):
42
43
  pass
43
44
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -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
  from ... import identifier_t
12
13
  from ... import post_base_t
13
14
  from ... import response_t
@@ -27,7 +28,7 @@ ENDPOINT_PATH = "api/external/inputs/external_set_input_subcategories"
27
28
  @serial_class(
28
29
  named_type_path="sdk.api.inputs.set_input_subcategories.Arguments",
29
30
  )
30
- @dataclasses.dataclass(kw_only=True)
31
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
31
32
  class Arguments:
32
33
  input_key: identifier_t.IdentifierKey
33
34
  subcategory_ids: list[int]
@@ -38,7 +39,7 @@ class Arguments:
38
39
  @serial_class(
39
40
  named_type_path="sdk.api.inputs.set_input_subcategories.Data",
40
41
  )
41
- @dataclasses.dataclass(kw_only=True)
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
42
43
  class Data(response_t.Response):
43
44
  pass
44
45
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -9,6 +9,7 @@ from decimal import Decimal # noqa: F401
9
9
  from enum import StrEnum
10
10
  import dataclasses
11
11
  from pkgs.serialization import serial_class
12
+ from ... import base_t
12
13
  from ... import identifier_t
13
14
 
14
15
  __all__: list[str] = [
@@ -33,7 +34,7 @@ class IntermediateType(StrEnum):
33
34
  @serial_class(
34
35
  named_type_path="sdk.api.inputs.set_intermediate_type.Arguments",
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 Arguments:
38
39
  input_key: identifier_t.IdentifierKey
39
40
  intermediate_type: IntermediateType
@@ -43,7 +44,7 @@ class Arguments:
43
44
  @serial_class(
44
45
  named_type_path="sdk.api.inputs.set_intermediate_type.Data",
45
46
  )
46
- @dataclasses.dataclass(kw_only=True)
47
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
47
48
  class Data:
48
49
  pass
49
50
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -29,7 +29,7 @@ ENDPOINT_PATH = "api/external/material_families/external_update_entity_material_
29
29
  @serial_class(
30
30
  named_type_path="sdk.api.material_families.update_entity_material_families.Arguments",
31
31
  )
32
- @dataclasses.dataclass(kw_only=True)
32
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
33
33
  class Arguments:
34
34
  entity_key: identifier_t.IdentifierKey
35
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] | typing.Literal[entity_t.EntityType.INGREDIENT_CATEGORY_ALL]
@@ -41,7 +41,7 @@ class Arguments:
41
41
  @serial_class(
42
42
  named_type_path="sdk.api.material_families.update_entity_material_families.Data",
43
43
  )
44
- @dataclasses.dataclass(kw_only=True)
44
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
45
45
  class Data(response_t.Response):
46
46
  pass
47
47
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -30,7 +30,7 @@ ENDPOINT_PATH = "api/external/outputs/external_get_output_data"
30
30
  @serial_class(
31
31
  named_type_path="sdk.api.outputs.get_output_data.Arguments",
32
32
  )
33
- @dataclasses.dataclass(kw_only=True)
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
34
34
  class Arguments:
35
35
  material_family_id: base_t.ObjectId
36
36
  output_ids: list[base_t.ObjectId] | None = None
@@ -44,7 +44,7 @@ class Arguments:
44
44
  unconverted_values={"quantity_json"},
45
45
  to_string_values={"quantity_dec"},
46
46
  )
47
- @dataclasses.dataclass(kw_only=True)
47
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
48
48
  class OutputAttrVal:
49
49
  attribute_id: base_t.ObjectId
50
50
  quantity_json: base_t.JsonValue
@@ -55,7 +55,7 @@ class OutputAttrVal:
55
55
  @serial_class(
56
56
  named_type_path="sdk.api.outputs.get_output_data.SimpleOutputAttr",
57
57
  )
58
- @dataclasses.dataclass(kw_only=True)
58
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
59
59
  class SimpleOutputAttr:
60
60
  attribute_id: base_t.ObjectId
61
61
  name: str
@@ -66,7 +66,7 @@ class SimpleOutputAttr:
66
66
  @serial_class(
67
67
  named_type_path="sdk.api.outputs.get_output_data.SimpleOutputGlobalCategory",
68
68
  )
69
- @dataclasses.dataclass(kw_only=True)
69
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
70
70
  class SimpleOutputGlobalCategory:
71
71
  category_id: base_t.ObjectId
72
72
  name: str
@@ -76,7 +76,7 @@ class SimpleOutputGlobalCategory:
76
76
  @serial_class(
77
77
  named_type_path="sdk.api.outputs.get_output_data.FullOutput",
78
78
  )
79
- @dataclasses.dataclass(kw_only=True)
79
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
80
80
  class FullOutput:
81
81
  output_id: base_t.ObjectId
82
82
  name: str
@@ -90,7 +90,7 @@ class FullOutput:
90
90
  @serial_class(
91
91
  named_type_path="sdk.api.outputs.get_output_data.Data",
92
92
  )
93
- @dataclasses.dataclass(kw_only=True)
93
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
94
94
  class Data:
95
95
  outputs: list[FullOutput]
96
96
  attrs: list[SimpleOutputAttr]
@@ -26,7 +26,7 @@ ENDPOINT_PATH = "api/external/outputs/external_get_output_names"
26
26
  @serial_class(
27
27
  named_type_path="sdk.api.outputs.get_output_names.Arguments",
28
28
  )
29
- @dataclasses.dataclass(kw_only=True)
29
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
30
30
  class Arguments:
31
31
  material_family_id: base_t.ObjectId
32
32
  offset: int | None = None
@@ -37,7 +37,7 @@ class Arguments:
37
37
  @serial_class(
38
38
  named_type_path="sdk.api.outputs.get_output_names.OutputWithName",
39
39
  )
40
- @dataclasses.dataclass(kw_only=True)
40
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
41
41
  class OutputWithName:
42
42
  output_id: base_t.ObjectId
43
43
  name: str
@@ -47,7 +47,7 @@ class OutputWithName:
47
47
  @serial_class(
48
48
  named_type_path="sdk.api.outputs.get_output_names.Data",
49
49
  )
50
- @dataclasses.dataclass(kw_only=True)
50
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
51
51
  class Data:
52
52
  outputs: list[OutputWithName]
53
53
  # DO NOT MODIFY -- This file is generated by type_spec