UncountablePythonSDK 0.0.111__py3-none-any.whl → 0.0.113__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/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/filesystem_utils/_blob_session.py +8 -1
  8. pkgs/type_spec/emit_python.py +9 -3
  9. pkgs/type_spec/emit_typescript_util.py +16 -1
  10. pkgs/type_spec/parts/base.py.prepart +4 -0
  11. pkgs/type_spec/ui_entry_actions/__init__.py +4 -0
  12. pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +294 -0
  13. pkgs/type_spec/value_spec/convert_type.py +13 -0
  14. uncountable/core/client.py +7 -4
  15. uncountable/integration/executors/generic_upload_executor.py +3 -2
  16. uncountable/integration/job.py +24 -1
  17. uncountable/integration/queue_runner/datastore/datastore_sqlite.py +3 -2
  18. uncountable/integration/scan_profiles.py +1 -1
  19. uncountable/integration/scheduler.py +4 -3
  20. uncountable/integration/secret_retrieval/retrieve_secret.py +1 -1
  21. uncountable/types/__init__.py +2 -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/upsert_condition_match.py +4 -3
  26. uncountable/types/api/entity/create_entities.py +3 -3
  27. uncountable/types/api/entity/create_entity.py +3 -3
  28. uncountable/types/api/entity/create_or_update_entity.py +3 -2
  29. uncountable/types/api/entity/get_entities_data.py +3 -3
  30. uncountable/types/api/entity/grant_entity_permissions.py +3 -2
  31. uncountable/types/api/entity/list_entities.py +4 -4
  32. uncountable/types/api/entity/lock_entity.py +3 -2
  33. uncountable/types/api/entity/lookup_entity.py +5 -5
  34. uncountable/types/api/entity/resolve_entity_ids.py +3 -3
  35. uncountable/types/api/entity/set_entity_field_values.py +3 -2
  36. uncountable/types/api/entity/set_values.py +3 -2
  37. uncountable/types/api/entity/transition_entity_phase.py +5 -4
  38. uncountable/types/api/entity/unlock_entity.py +3 -2
  39. uncountable/types/api/equipment/associate_equipment_input.py +2 -2
  40. uncountable/types/api/field_options/upsert_field_options.py +4 -3
  41. uncountable/types/api/files/download_file.py +4 -3
  42. uncountable/types/api/id_source/list_id_source.py +3 -3
  43. uncountable/types/api/id_source/match_id_source.py +3 -3
  44. uncountable/types/api/input_groups/get_input_group_names.py +3 -3
  45. uncountable/types/api/inputs/create_inputs.py +4 -4
  46. uncountable/types/api/inputs/get_input_data.py +6 -6
  47. uncountable/types/api/inputs/get_input_names.py +3 -3
  48. uncountable/types/api/inputs/get_inputs_data.py +6 -6
  49. uncountable/types/api/inputs/set_input_attribute_values.py +3 -3
  50. uncountable/types/api/inputs/set_input_category.py +3 -2
  51. uncountable/types/api/inputs/set_input_subcategories.py +3 -2
  52. uncountable/types/api/inputs/set_intermediate_type.py +3 -2
  53. uncountable/types/api/material_families/update_entity_material_families.py +2 -2
  54. uncountable/types/api/outputs/get_output_data.py +6 -6
  55. uncountable/types/api/outputs/get_output_names.py +3 -3
  56. uncountable/types/api/outputs/resolve_output_conditions.py +5 -5
  57. uncountable/types/api/permissions/set_core_permissions.py +7 -6
  58. uncountable/types/api/project/get_projects.py +3 -3
  59. uncountable/types/api/project/get_projects_data.py +3 -3
  60. uncountable/types/api/recipe_links/create_recipe_link.py +3 -2
  61. uncountable/types/api/recipe_links/remove_recipe_link.py +3 -2
  62. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +3 -3
  63. uncountable/types/api/recipes/add_recipe_to_project.py +3 -2
  64. uncountable/types/api/recipes/add_time_series_data.py +4 -3
  65. uncountable/types/api/recipes/archive_recipes.py +3 -2
  66. uncountable/types/api/recipes/associate_recipe_as_input.py +3 -2
  67. uncountable/types/api/recipes/associate_recipe_as_lot.py +3 -2
  68. uncountable/types/api/recipes/clear_recipe_outputs.py +3 -2
  69. uncountable/types/api/recipes/create_recipe.py +2 -2
  70. uncountable/types/api/recipes/create_recipes.py +4 -4
  71. uncountable/types/api/recipes/disassociate_recipe_as_input.py +3 -2
  72. uncountable/types/api/recipes/edit_recipe_inputs.py +17 -16
  73. uncountable/types/api/recipes/get_column_calculation_values.py +3 -3
  74. uncountable/types/api/recipes/get_curve.py +2 -2
  75. uncountable/types/api/recipes/get_recipe_calculations.py +3 -3
  76. uncountable/types/api/recipes/get_recipe_links.py +2 -2
  77. uncountable/types/api/recipes/get_recipe_names.py +3 -3
  78. uncountable/types/api/recipes/get_recipe_output_metadata.py +3 -3
  79. uncountable/types/api/recipes/get_recipes_data.py +11 -11
  80. uncountable/types/api/recipes/lock_recipes.py +4 -3
  81. uncountable/types/api/recipes/remove_recipe_from_project.py +3 -2
  82. uncountable/types/api/recipes/set_recipe_inputs.py +3 -3
  83. uncountable/types/api/recipes/set_recipe_metadata.py +3 -2
  84. uncountable/types/api/recipes/set_recipe_output_annotations.py +6 -6
  85. uncountable/types/api/recipes/set_recipe_output_file.py +3 -3
  86. uncountable/types/api/recipes/set_recipe_outputs.py +5 -5
  87. uncountable/types/api/recipes/set_recipe_tags.py +6 -6
  88. uncountable/types/api/recipes/unarchive_recipes.py +3 -2
  89. uncountable/types/api/recipes/unlock_recipes.py +3 -2
  90. uncountable/types/api/runsheet/__init__.py +1 -0
  91. uncountable/types/api/runsheet/complete_async_upload.py +41 -0
  92. uncountable/types/api/triggers/run_trigger.py +3 -2
  93. uncountable/types/api/uploader/invoke_uploader.py +2 -2
  94. uncountable/types/async_batch_processor.py +34 -0
  95. uncountable/types/async_batch_t.py +6 -5
  96. uncountable/types/auth_retrieval_t.py +4 -3
  97. uncountable/types/base_t.py +4 -0
  98. uncountable/types/calculations_t.py +1 -1
  99. uncountable/types/chemical_structure_t.py +2 -1
  100. uncountable/types/client_base.py +21 -0
  101. uncountable/types/client_config_t.py +2 -1
  102. uncountable/types/curves_t.py +2 -2
  103. uncountable/types/data.py +2 -2
  104. uncountable/types/data_t.py +42 -32
  105. uncountable/types/entity_t.py +3 -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.111.dist-info → uncountablepythonsdk-0.0.113.dist-info}/METADATA +2 -1
  134. {uncountablepythonsdk-0.0.111.dist-info → uncountablepythonsdk-0.0.113.dist-info}/RECORD +136 -131
  135. {uncountablepythonsdk-0.0.111.dist-info → uncountablepythonsdk-0.0.113.dist-info}/WHEEL +1 -1
  136. {uncountablepythonsdk-0.0.111.dist-info → uncountablepythonsdk-0.0.113.dist-info}/top_level.txt +0 -0
@@ -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
@@ -30,7 +30,7 @@ ENDPOINT_PATH = "api/external/inputs/external_create_inputs"
30
30
  @serial_class(
31
31
  named_type_path="sdk.api.inputs.create_inputs.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
  inputs_to_create: list[InputToCreate]
36
36
 
@@ -39,7 +39,7 @@ class Arguments:
39
39
  @serial_class(
40
40
  named_type_path="sdk.api.inputs.create_inputs.InputToCreate",
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 InputToCreate:
44
44
  name: str
45
45
  material_family_ids: list[base_t.ObjectId]
@@ -54,7 +54,7 @@ class InputToCreate:
54
54
  @serial_class(
55
55
  named_type_path="sdk.api.inputs.create_inputs.InputSimple",
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 InputSimple:
59
59
  input_id: base_t.ObjectId
60
60
 
@@ -63,7 +63,7 @@ class InputSimple:
63
63
  @serial_class(
64
64
  named_type_path="sdk.api.inputs.create_inputs.Data",
65
65
  )
66
- @dataclasses.dataclass(kw_only=True)
66
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
67
67
  class Data:
68
68
  inputs: list[InputSimple]
69
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
@@ -30,7 +30,7 @@ ENDPOINT_PATH = "api/external/outputs/external_resolve_output_conditions"
30
30
  named_type_path="sdk.api.outputs.resolve_output_conditions.ConditionParameterValueRecord",
31
31
  to_string_values={"value_numeric"},
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 ConditionParameterValueRecord:
35
35
  condition_parameter_id: base_t.ObjectId
36
36
  value_numeric: Decimal | None = None
@@ -41,7 +41,7 @@ class ConditionParameterValueRecord:
41
41
  @serial_class(
42
42
  named_type_path="sdk.api.outputs.resolve_output_conditions.ConditionRequest",
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 ConditionRequest:
46
46
  conditions: list[ConditionParameterValueRecord]
47
47
 
@@ -50,7 +50,7 @@ class ConditionRequest:
50
50
  @serial_class(
51
51
  named_type_path="sdk.api.outputs.resolve_output_conditions.Arguments",
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 Arguments:
55
55
  requested_conditions: list[ConditionRequest]
56
56
 
@@ -59,7 +59,7 @@ class Arguments:
59
59
  @serial_class(
60
60
  named_type_path="sdk.api.outputs.resolve_output_conditions.ConditionResponse",
61
61
  )
62
- @dataclasses.dataclass(kw_only=True)
62
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
63
63
  class ConditionResponse:
64
64
  conditions: list[ConditionParameterValueRecord]
65
65
  output_condition_id: base_t.ObjectId
@@ -69,7 +69,7 @@ class ConditionResponse:
69
69
  @serial_class(
70
70
  named_type_path="sdk.api.outputs.resolve_output_conditions.Data",
71
71
  )
72
- @dataclasses.dataclass(kw_only=True)
72
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
73
73
  class Data:
74
74
  resolved_conditions: list[ConditionResponse]
75
75
 
@@ -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 identifier_t
13
14
  from ... import permissions_t
14
15
  from ... import post_base_t
@@ -34,7 +35,7 @@ ENDPOINT_PATH = "api/external/permissions/external_set_core_permissions"
34
35
  named_type_path="sdk.api.permissions.set_core_permissions.PermissionsScopeProject",
35
36
  parse_require={"type"},
36
37
  )
37
- @dataclasses.dataclass(kw_only=True)
38
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
38
39
  class PermissionsScopeProject:
39
40
  type: typing.Literal["project"] = "project"
40
41
  project_key: identifier_t.IdentifierKey
@@ -45,7 +46,7 @@ class PermissionsScopeProject:
45
46
  named_type_path="sdk.api.permissions.set_core_permissions.PermissionsScopeRecipe",
46
47
  parse_require={"type"},
47
48
  )
48
- @dataclasses.dataclass(kw_only=True)
49
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
49
50
  class PermissionsScopeRecipe:
50
51
  type: typing.Literal["recipe"] = "recipe"
51
52
  recipe_key: identifier_t.IdentifierKey
@@ -56,7 +57,7 @@ class PermissionsScopeRecipe:
56
57
  named_type_path="sdk.api.permissions.set_core_permissions.PermissionsScopeMaterialFamily",
57
58
  parse_require={"type"},
58
59
  )
59
- @dataclasses.dataclass(kw_only=True)
60
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
60
61
  class PermissionsScopeMaterialFamily:
61
62
  type: typing.Literal["material_family"] = "material_family"
62
63
  material_family_key: identifier_t.IdentifierKey
@@ -67,7 +68,7 @@ class PermissionsScopeMaterialFamily:
67
68
  named_type_path="sdk.api.permissions.set_core_permissions.PermissionsScopeAllMaterialFamilies",
68
69
  parse_require={"type"},
69
70
  )
70
- @dataclasses.dataclass(kw_only=True)
71
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
71
72
  class PermissionsScopeAllMaterialFamilies:
72
73
  type: typing.Literal["all_material_families"] = "all_material_families"
73
74
 
@@ -85,7 +86,7 @@ PermissionsScope = typing.Annotated[
85
86
  @serial_class(
86
87
  named_type_path="sdk.api.permissions.set_core_permissions.Arguments",
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 Arguments:
90
91
  scope: PermissionsScope
91
92
  permissions_types: list[permissions_t.CorePermissionType]
@@ -98,7 +99,7 @@ class Arguments:
98
99
  @serial_class(
99
100
  named_type_path="sdk.api.permissions.set_core_permissions.Data",
100
101
  )
101
- @dataclasses.dataclass(kw_only=True)
102
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
102
103
  class Data:
103
104
  pass
104
105
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -27,7 +27,7 @@ ENDPOINT_PATH = "api/external/project/external_get_projects"
27
27
  @serial_class(
28
28
  named_type_path="sdk.api.project.get_projects.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
  all_material_families: bool
33
33
  material_family_id: base_t.ObjectId | None
@@ -37,7 +37,7 @@ class Arguments:
37
37
  @serial_class(
38
38
  named_type_path="sdk.api.project.get_projects.Project",
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 Project:
42
42
  id: base_t.ObjectId
43
43
  name: str
@@ -50,7 +50,7 @@ class Project:
50
50
  @serial_class(
51
51
  named_type_path="sdk.api.project.get_projects.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:
55
55
  projects: list[Project]
56
56
  phases: list[phases_t.Phase]
@@ -29,7 +29,7 @@ ENDPOINT_PATH = "api/external/project/external_get_projects_data"
29
29
  @serial_class(
30
30
  named_type_path="sdk.api.project.get_projects_data.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
  project_ids: list[base_t.ObjectId]
35
35
  offset: int | None = None
@@ -40,7 +40,7 @@ class Arguments:
40
40
  @serial_class(
41
41
  named_type_path="sdk.api.project.get_projects_data.ProjectDetailed",
42
42
  )
43
- @dataclasses.dataclass(kw_only=True)
43
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
44
44
  class ProjectDetailed:
45
45
  id: base_t.ObjectId
46
46
  name: str
@@ -54,7 +54,7 @@ class ProjectDetailed:
54
54
  @serial_class(
55
55
  named_type_path="sdk.api.project.get_projects_data.Data",
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 Data:
59
59
  projects: list[ProjectDetailed]
60
60
  phases: list[phases_t.Phase]
@@ -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 identifier_t
13
14
  from ... import recipe_links_t
14
15
 
@@ -27,7 +28,7 @@ ENDPOINT_PATH = "api/external/recipe_links/create_recipe_link"
27
28
  @serial_class(
28
29
  named_type_path="sdk.api.recipe_links.create_recipe_link.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
  recipe_from_key: identifier_t.IdentifierKey
33
34
  recipe_to_key: identifier_t.IdentifierKey
@@ -39,7 +40,7 @@ class Arguments:
39
40
  @serial_class(
40
41
  named_type_path="sdk.api.recipe_links.create_recipe_link.Data",
41
42
  )
42
- @dataclasses.dataclass(kw_only=True)
43
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
43
44
  class Data(async_batch_t.AsyncBatchActionReturn):
44
45
  pass
45
46
  # 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 identifier_t
13
14
  from ... import recipe_links_t
14
15
 
@@ -27,7 +28,7 @@ ENDPOINT_PATH = "api/external/recipe_links/remove_recipe_link"
27
28
  @serial_class(
28
29
  named_type_path="sdk.api.recipe_links.remove_recipe_link.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
  recipe_from_key: identifier_t.IdentifierKey
33
34
  recipe_to_key: identifier_t.IdentifierKey
@@ -38,7 +39,7 @@ class Arguments:
38
39
  @serial_class(
39
40
  named_type_path="sdk.api.recipe_links.remove_recipe_link.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(async_batch_t.AsyncBatchActionReturn):
43
44
  pass
44
45
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -26,7 +26,7 @@ ENDPOINT_PATH = "api/external/recipe_metadata/external_get_recipe_metadata_data"
26
26
  @serial_class(
27
27
  named_type_path="sdk.api.recipe_metadata.get_recipe_metadata_data.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
  recipe_metadata_ids: list[base_t.ObjectId] | None
@@ -38,7 +38,7 @@ class Arguments:
38
38
  @serial_class(
39
39
  named_type_path="sdk.api.recipe_metadata.get_recipe_metadata_data.FullRecipeMetadataField",
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 FullRecipeMetadataField:
43
43
  recipe_metadata_id: base_t.ObjectId
44
44
  name: str
@@ -49,7 +49,7 @@ class FullRecipeMetadataField:
49
49
  @serial_class(
50
50
  named_type_path="sdk.api.recipe_metadata.get_recipe_metadata_data.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
  recipe_metadata: list[FullRecipeMetadataField]
55
55
  # DO NOT MODIFY -- This file is generated by type_spec