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
@@ -54,7 +54,7 @@ def _load_secret_overrides(profile_name: str) -> dict[SecretRetrieval, str]:
54
54
  profiles_module = os.environ["UNC_PROFILES_MODULE"]
55
55
  try:
56
56
  overrides = overrides_parser.parse_yaml_resource(
57
- package=".".join([profiles_module, profile_name]),
57
+ package=f"{profiles_module}.{profile_name}",
58
58
  resource="local_overrides.yaml",
59
59
  )
60
60
  return {
@@ -16,6 +16,7 @@ from . import calculations_t as calculations_t
16
16
  from . import chemical_structure_t as chemical_structure_t
17
17
  from .api.recipes import clear_recipe_outputs as clear_recipe_outputs_t
18
18
  from . import client_config_t as client_config_t
19
+ from .api.runsheet import complete_async_upload as complete_async_upload_t
19
20
  from .api.chemical import convert_chemical_formats as convert_chemical_formats_t
20
21
  from .api.entity import create_entities as create_entities_t
21
22
  from .api.entity import create_entity as create_entity_t
@@ -129,6 +130,7 @@ __all__: list[str] = [
129
130
  "chemical_structure_t",
130
131
  "clear_recipe_outputs_t",
131
132
  "client_config_t",
133
+ "complete_async_upload_t",
132
134
  "convert_chemical_formats_t",
133
135
  "create_entities_t",
134
136
  "create_entity_t",
@@ -43,7 +43,7 @@ class RequestMethod(StrEnum):
43
43
  named_type_path="sdk.api.batch.execute_batch.BatchRequest",
44
44
  unconverted_values={"data"},
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 BatchRequest:
48
48
  path: str
49
49
  method: RequestMethod
@@ -54,7 +54,7 @@ class BatchRequest:
54
54
  @serial_class(
55
55
  named_type_path="sdk.api.batch.execute_batch.Arguments",
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 Arguments:
59
59
  requests: list[BatchRequest]
60
60
 
@@ -64,7 +64,7 @@ class Arguments:
64
64
  named_type_path="sdk.api.batch.execute_batch.BatchResponse",
65
65
  unconverted_values={"response"},
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 BatchResponse:
69
69
  path: str
70
70
  method: RequestMethod
@@ -76,7 +76,7 @@ class BatchResponse:
76
76
  @serial_class(
77
77
  named_type_path="sdk.api.batch.execute_batch.Data",
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 Data:
81
81
  responses: list[BatchResponse]
82
82
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -26,7 +26,7 @@ ENDPOINT_PATH = "api/external/batch/execute_batch_load_async"
26
26
  @serial_class(
27
27
  named_type_path="sdk.api.batch.execute_batch_load_async.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
  requests: list[async_batch_t.AsyncBatchRequest]
32
32
 
@@ -35,7 +35,7 @@ class Arguments:
35
35
  @serial_class(
36
36
  named_type_path="sdk.api.batch.execute_batch_load_async.Data",
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 Data:
40
40
  job_id: base_t.ObjectId
41
41
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -28,7 +28,7 @@ ENDPOINT_PATH = "api/external/chemical/convert_chemical_formats"
28
28
  @serial_class(
29
29
  named_type_path="sdk.api.chemical.convert_chemical_formats.ChemicalStructureFile",
30
30
  )
31
- @dataclasses.dataclass(kw_only=True)
31
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
32
32
  class ChemicalStructureFile:
33
33
  struct_file: str
34
34
 
@@ -37,7 +37,7 @@ class ChemicalStructureFile:
37
37
  @serial_class(
38
38
  named_type_path="sdk.api.chemical.convert_chemical_formats.Arguments",
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 Arguments:
42
42
  source_chemical_structures: list[ChemicalStructureFile]
43
43
 
@@ -56,7 +56,7 @@ UncountableChemicalStructure = typing.Annotated[
56
56
  named_type_path="sdk.api.chemical.convert_chemical_formats.Data",
57
57
  unconverted_values={"chemical_structures"},
58
58
  )
59
- @dataclasses.dataclass(kw_only=True)
59
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
60
60
  class Data:
61
61
  chemical_structures: list[UncountableChemicalStructure]
62
62
  # 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 ... import async_batch_t
13
+ from ... import base_t
13
14
  from ... import identifier_t
14
15
 
15
16
  __all__: list[str] = [
@@ -30,7 +31,7 @@ ENDPOINT_PATH = "api/external/condition_parameters/upsert_condition_match"
30
31
  named_type_path="sdk.api.condition_parameters.upsert_condition_match.ConditionParameter",
31
32
  to_string_values={"max_value", "min_value"},
32
33
  )
33
- @dataclasses.dataclass(kw_only=True)
34
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
34
35
  class ConditionParameter:
35
36
  condition_parameter_key: identifier_t.IdentifierKey
36
37
  allow_null: bool
@@ -52,7 +53,7 @@ class MatchType(StrEnum):
52
53
  @serial_class(
53
54
  named_type_path="sdk.api.condition_parameters.upsert_condition_match.Arguments",
54
55
  )
55
- @dataclasses.dataclass(kw_only=True)
56
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
56
57
  class Arguments:
57
58
  explicit_name: bool = False
58
59
  name: str | None = None
@@ -65,7 +66,7 @@ class Arguments:
65
66
  @serial_class(
66
67
  named_type_path="sdk.api.condition_parameters.upsert_condition_match.Data",
67
68
  )
68
- @dataclasses.dataclass(kw_only=True)
69
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
69
70
  class Data(async_batch_t.AsyncBatchActionReturn):
70
71
  pass
71
72
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -29,7 +29,7 @@ ENDPOINT_PATH = "api/external/entity/external_create_entities"
29
29
  @serial_class(
30
30
  named_type_path="sdk.api.entity.create_entities.EntityToCreate",
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 EntityToCreate:
34
34
  field_values: list[field_values_t.FieldRefNameValue] | None = None
35
35
  parent_entity: entity_t.Entity | None = None
@@ -39,7 +39,7 @@ class EntityToCreate:
39
39
  @serial_class(
40
40
  named_type_path="sdk.api.entity.create_entities.Arguments",
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 Arguments:
44
44
  entity_type: entity_t.LimitedEntityType
45
45
  entities_to_create: list[EntityToCreate]
@@ -51,7 +51,7 @@ class Arguments:
51
51
  @serial_class(
52
52
  named_type_path="sdk.api.entity.create_entities.Data",
53
53
  )
54
- @dataclasses.dataclass(kw_only=True)
54
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
55
55
  class Data:
56
56
  entities: list[entity_t.Entity]
57
57
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -30,7 +30,7 @@ ENDPOINT_PATH = "api/external/entity/external_create_entity"
30
30
  named_type_path="sdk.api.entity.create_entity.EntityFieldInitialValue",
31
31
  unconverted_values={"value"},
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 EntityFieldInitialValue:
35
35
  field_ref_name: str
36
36
  value: base_t.JsonValue
@@ -41,7 +41,7 @@ class EntityFieldInitialValue:
41
41
  @serial_class(
42
42
  named_type_path="sdk.api.entity.create_entity.Arguments",
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 Arguments:
46
46
  entity_type: entity_t.LimitedEntityType
47
47
  definition_id: base_t.ObjectId | None = None
@@ -54,7 +54,7 @@ class Arguments:
54
54
  @serial_class(
55
55
  named_type_path="sdk.api.entity.create_entity.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
  entity: entity_t.Entity
60
60
  # 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 field_values_t
14
15
  from ... import identifier_t
@@ -28,7 +29,7 @@ ENDPOINT_PATH = "api/external/entity/create_or_update_entity"
28
29
  @serial_class(
29
30
  named_type_path="sdk.api.entity.create_or_update_entity.Arguments",
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 Arguments:
33
34
  entity_type: entity_t.EntityType
34
35
  definition_key: identifier_t.IdentifierKey
@@ -40,7 +41,7 @@ class Arguments:
40
41
  @serial_class(
41
42
  named_type_path="sdk.api.entity.create_or_update_entity.Data",
42
43
  )
43
- @dataclasses.dataclass(kw_only=True)
44
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
44
45
  class Data(async_batch_t.AsyncBatchActionReturn):
45
46
  pass
46
47
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -28,7 +28,7 @@ ENDPOINT_PATH = "api/external/entity/external_get_entities_data"
28
28
  @serial_class(
29
29
  named_type_path="sdk.api.entity.get_entities_data.Arguments",
30
30
  )
31
- @dataclasses.dataclass(kw_only=True)
31
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
32
32
  class Arguments:
33
33
  entity_ids: list[base_t.ObjectId]
34
34
  entity_type: entity_t.EntityType
@@ -38,7 +38,7 @@ class Arguments:
38
38
  @serial_class(
39
39
  named_type_path="sdk.api.entity.get_entities_data.EntityDetails",
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 EntityDetails:
43
43
  entity: entity_t.Entity
44
44
  field_values: list[field_values_t.FieldRefIdNameValue]
@@ -48,7 +48,7 @@ class EntityDetails:
48
48
  @serial_class(
49
49
  named_type_path="sdk.api.entity.get_entities_data.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
  entity_details: list[EntityDetails]
54
54
  # 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/grant_entity_permissions"
27
28
  @serial_class(
28
29
  named_type_path="sdk.api.entity.grant_entity_permissions.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_type: entity_t.LimitedEntityType
33
34
  entity_key: identifier_t.IdentifierKey
@@ -41,7 +42,7 @@ class Arguments:
41
42
  @serial_class(
42
43
  named_type_path="sdk.api.entity.grant_entity_permissions.Data",
43
44
  )
44
- @dataclasses.dataclass(kw_only=True)
45
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
45
46
  class Data(async_batch_t.AsyncBatchActionReturn):
46
47
  pass
47
48
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -30,7 +30,7 @@ ENDPOINT_PATH = "api/external/entity/external_list_entities"
30
30
  named_type_path="sdk.api.entity.list_entities.Arguments",
31
31
  unconverted_values={"attributes"},
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
  config_reference: str
36
36
  entity_type: entity_t.EntityType | None = None
@@ -44,7 +44,7 @@ class Arguments:
44
44
  named_type_path="sdk.api.entity.list_entities.EntityResult",
45
45
  unconverted_values={"column_values"},
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 EntityResult:
49
49
  entity: entity_t.Entity
50
50
  column_values: list[base_t.JsonValue]
@@ -54,7 +54,7 @@ class EntityResult:
54
54
  @serial_class(
55
55
  named_type_path="sdk.api.entity.list_entities.ColumnAccess",
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 ColumnAccess:
59
59
  name: str
60
60
  table_label: str | None
@@ -64,7 +64,7 @@ class ColumnAccess:
64
64
  @serial_class(
65
65
  named_type_path="sdk.api.entity.list_entities.Data",
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 Data:
69
69
  columns: list[ColumnAccess]
70
70
  results: list[EntityResult]
@@ -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_lock_entity"
27
28
  @serial_class(
28
29
  named_type_path="sdk.api.entity.lock_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
@@ -38,7 +39,7 @@ class Arguments:
38
39
  @serial_class(
39
40
  named_type_path="sdk.api.entity.lock_entity.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
@@ -41,7 +41,7 @@ class LookupEntityQueryType(StrEnum):
41
41
  @serial_class(
42
42
  named_type_path="sdk.api.entity.lookup_entity.LookupEntityQueryBase",
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 LookupEntityQueryBase:
46
46
  type: LookupEntityQueryType
47
47
 
@@ -51,7 +51,7 @@ class LookupEntityQueryBase:
51
51
  named_type_path="sdk.api.entity.lookup_entity.LookupFieldArgumentValue",
52
52
  unconverted_values={"field_value"},
53
53
  )
54
- @dataclasses.dataclass(kw_only=True)
54
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
55
55
  class LookupFieldArgumentValue:
56
56
  field_key: identifier_t.IdentifierKey
57
57
  field_value: base_t.JsonValue
@@ -63,7 +63,7 @@ class LookupFieldArgumentValue:
63
63
  named_type_path="sdk.api.entity.lookup_entity.LookupEntityFieldValue",
64
64
  parse_require={"type"},
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 LookupEntityFieldValue:
68
68
  type: typing.Literal[LookupEntityQueryType.FIELD_VALUE] = LookupEntityQueryType.FIELD_VALUE
69
69
  value: LookupFieldArgumentValue
@@ -86,7 +86,7 @@ LookupEntityQuery = typing.Annotated[
86
86
  @serial_class(
87
87
  named_type_path="sdk.api.entity.lookup_entity.Arguments",
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 Arguments:
91
91
  entity_type: entity_t.EntityType
92
92
  query: LookupEntityQuery
@@ -96,7 +96,7 @@ class Arguments:
96
96
  @serial_class(
97
97
  named_type_path="sdk.api.entity.lookup_entity.Data",
98
98
  )
99
- @dataclasses.dataclass(kw_only=True)
99
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
100
100
  class Data(async_batch_t.AsyncBatchActionReturn):
101
101
  pass
102
102
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -27,7 +27,7 @@ ENDPOINT_PATH = "api/external/entity/external_resolve_entity_ids"
27
27
  @serial_class(
28
28
  named_type_path="sdk.api.entity.resolve_entity_ids.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
  entity_ids: list[str | base_t.ObjectId]
33
33
  entity_type: entity_t.EntityType
@@ -37,7 +37,7 @@ class Arguments:
37
37
  @serial_class(
38
38
  named_type_path="sdk.api.entity.resolve_entity_ids.EntityNames",
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 EntityNames:
42
42
  id: str | int
43
43
  name: str
@@ -47,7 +47,7 @@ class EntityNames:
47
47
  @serial_class(
48
48
  named_type_path="sdk.api.entity.resolve_entity_ids.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
  items: list[EntityNames]
53
53
  # 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 field_values_t
14
15
 
@@ -27,7 +28,7 @@ ENDPOINT_PATH = "api/external/entity/set_entity_field_values"
27
28
  @serial_class(
28
29
  named_type_path="sdk.api.entity.set_entity_field_values.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_identifier: entity_t.EntityIdentifier
33
34
  field_values: list[field_values_t.FieldArgumentValue]
@@ -37,7 +38,7 @@ class Arguments:
37
38
  @serial_class(
38
39
  named_type_path="sdk.api.entity.set_entity_field_values.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
@@ -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 entity_t
12
13
  from ... import field_values_t
13
14
  from ... import response_t
@@ -27,7 +28,7 @@ ENDPOINT_PATH = "api/external/entity/external_set_values"
27
28
  @serial_class(
28
29
  named_type_path="sdk.api.entity.set_values.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: entity_t.Entity
33
34
  values: list[field_values_t.ArgumentValueRefName]
@@ -37,7 +38,7 @@ class Arguments:
37
38
  @serial_class(
38
39
  named_type_path="sdk.api.entity.set_values.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
@@ -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