UncountablePythonSDK 0.0.111__py3-none-any.whl → 0.0.112__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of UncountablePythonSDK might be problematic. Click here for more details.

Files changed (132) hide show
  1. docs/conf.py +2 -2
  2. docs/justfile +1 -1
  3. examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +35 -0
  4. examples/integration-server/jobs/materials_auto/profile.yaml +9 -0
  5. examples/integration-server/pyproject.toml +2 -2
  6. pkgs/argument_parser/argument_parser.py +6 -3
  7. pkgs/type_spec/emit_python.py +9 -3
  8. pkgs/type_spec/emit_typescript_util.py +16 -1
  9. pkgs/type_spec/parts/base.py.prepart +4 -0
  10. pkgs/type_spec/ui_entry_actions/__init__.py +4 -0
  11. pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +294 -0
  12. pkgs/type_spec/value_spec/convert_type.py +13 -0
  13. uncountable/core/client.py +7 -4
  14. uncountable/integration/executors/generic_upload_executor.py +3 -2
  15. uncountable/integration/job.py +24 -1
  16. uncountable/integration/queue_runner/datastore/datastore_sqlite.py +3 -2
  17. uncountable/integration/scheduler.py +4 -3
  18. uncountable/types/__init__.py +2 -0
  19. uncountable/types/api/batch/execute_batch.py +4 -4
  20. uncountable/types/api/batch/execute_batch_load_async.py +2 -2
  21. uncountable/types/api/chemical/convert_chemical_formats.py +3 -3
  22. uncountable/types/api/condition_parameters/upsert_condition_match.py +4 -3
  23. uncountable/types/api/entity/create_entities.py +3 -3
  24. uncountable/types/api/entity/create_entity.py +3 -3
  25. uncountable/types/api/entity/create_or_update_entity.py +3 -2
  26. uncountable/types/api/entity/get_entities_data.py +3 -3
  27. uncountable/types/api/entity/grant_entity_permissions.py +3 -2
  28. uncountable/types/api/entity/list_entities.py +4 -4
  29. uncountable/types/api/entity/lock_entity.py +3 -2
  30. uncountable/types/api/entity/lookup_entity.py +5 -5
  31. uncountable/types/api/entity/resolve_entity_ids.py +3 -3
  32. uncountable/types/api/entity/set_entity_field_values.py +3 -2
  33. uncountable/types/api/entity/set_values.py +3 -2
  34. uncountable/types/api/entity/transition_entity_phase.py +5 -4
  35. uncountable/types/api/entity/unlock_entity.py +3 -2
  36. uncountable/types/api/equipment/associate_equipment_input.py +2 -2
  37. uncountable/types/api/field_options/upsert_field_options.py +4 -3
  38. uncountable/types/api/files/download_file.py +4 -3
  39. uncountable/types/api/id_source/list_id_source.py +3 -3
  40. uncountable/types/api/id_source/match_id_source.py +3 -3
  41. uncountable/types/api/input_groups/get_input_group_names.py +3 -3
  42. uncountable/types/api/inputs/create_inputs.py +4 -4
  43. uncountable/types/api/inputs/get_input_data.py +6 -6
  44. uncountable/types/api/inputs/get_input_names.py +3 -3
  45. uncountable/types/api/inputs/get_inputs_data.py +6 -6
  46. uncountable/types/api/inputs/set_input_attribute_values.py +3 -3
  47. uncountable/types/api/inputs/set_input_category.py +3 -2
  48. uncountable/types/api/inputs/set_input_subcategories.py +3 -2
  49. uncountable/types/api/inputs/set_intermediate_type.py +3 -2
  50. uncountable/types/api/material_families/update_entity_material_families.py +2 -2
  51. uncountable/types/api/outputs/get_output_data.py +6 -6
  52. uncountable/types/api/outputs/get_output_names.py +3 -3
  53. uncountable/types/api/outputs/resolve_output_conditions.py +5 -5
  54. uncountable/types/api/permissions/set_core_permissions.py +7 -6
  55. uncountable/types/api/project/get_projects.py +3 -3
  56. uncountable/types/api/project/get_projects_data.py +3 -3
  57. uncountable/types/api/recipe_links/create_recipe_link.py +3 -2
  58. uncountable/types/api/recipe_links/remove_recipe_link.py +3 -2
  59. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +3 -3
  60. uncountable/types/api/recipes/add_recipe_to_project.py +3 -2
  61. uncountable/types/api/recipes/add_time_series_data.py +4 -3
  62. uncountable/types/api/recipes/archive_recipes.py +3 -2
  63. uncountable/types/api/recipes/associate_recipe_as_input.py +3 -2
  64. uncountable/types/api/recipes/associate_recipe_as_lot.py +3 -2
  65. uncountable/types/api/recipes/clear_recipe_outputs.py +3 -2
  66. uncountable/types/api/recipes/create_recipe.py +2 -2
  67. uncountable/types/api/recipes/create_recipes.py +4 -4
  68. uncountable/types/api/recipes/disassociate_recipe_as_input.py +3 -2
  69. uncountable/types/api/recipes/edit_recipe_inputs.py +17 -16
  70. uncountable/types/api/recipes/get_column_calculation_values.py +3 -3
  71. uncountable/types/api/recipes/get_curve.py +2 -2
  72. uncountable/types/api/recipes/get_recipe_calculations.py +3 -3
  73. uncountable/types/api/recipes/get_recipe_links.py +2 -2
  74. uncountable/types/api/recipes/get_recipe_names.py +3 -3
  75. uncountable/types/api/recipes/get_recipe_output_metadata.py +3 -3
  76. uncountable/types/api/recipes/get_recipes_data.py +11 -11
  77. uncountable/types/api/recipes/lock_recipes.py +4 -3
  78. uncountable/types/api/recipes/remove_recipe_from_project.py +3 -2
  79. uncountable/types/api/recipes/set_recipe_inputs.py +3 -3
  80. uncountable/types/api/recipes/set_recipe_metadata.py +3 -2
  81. uncountable/types/api/recipes/set_recipe_output_annotations.py +6 -6
  82. uncountable/types/api/recipes/set_recipe_output_file.py +3 -3
  83. uncountable/types/api/recipes/set_recipe_outputs.py +4 -4
  84. uncountable/types/api/recipes/set_recipe_tags.py +6 -6
  85. uncountable/types/api/recipes/unarchive_recipes.py +3 -2
  86. uncountable/types/api/recipes/unlock_recipes.py +3 -2
  87. uncountable/types/api/runsheet/__init__.py +1 -0
  88. uncountable/types/api/runsheet/complete_async_upload.py +41 -0
  89. uncountable/types/api/triggers/run_trigger.py +3 -2
  90. uncountable/types/api/uploader/invoke_uploader.py +2 -2
  91. uncountable/types/async_batch_processor.py +34 -0
  92. uncountable/types/async_batch_t.py +6 -5
  93. uncountable/types/auth_retrieval_t.py +4 -3
  94. uncountable/types/base_t.py +4 -0
  95. uncountable/types/calculations_t.py +1 -1
  96. uncountable/types/chemical_structure_t.py +2 -1
  97. uncountable/types/client_base.py +21 -0
  98. uncountable/types/client_config_t.py +2 -1
  99. uncountable/types/curves_t.py +2 -2
  100. uncountable/types/data_t.py +7 -6
  101. uncountable/types/entity_t.py +3 -3
  102. uncountable/types/experiment_groups_t.py +1 -1
  103. uncountable/types/field_values_t.py +20 -20
  104. uncountable/types/fields_t.py +1 -1
  105. uncountable/types/generic_upload_t.py +7 -6
  106. uncountable/types/id_source_t.py +5 -4
  107. uncountable/types/identifier_t.py +3 -3
  108. uncountable/types/input_attributes_t.py +1 -1
  109. uncountable/types/inputs_t.py +1 -1
  110. uncountable/types/integration_server_t.py +2 -1
  111. uncountable/types/job_definition_t.py +14 -13
  112. uncountable/types/outputs_t.py +1 -1
  113. uncountable/types/overrides_t.py +3 -2
  114. uncountable/types/phases_t.py +1 -1
  115. uncountable/types/queued_job_t.py +7 -7
  116. uncountable/types/recipe_identifiers_t.py +3 -3
  117. uncountable/types/recipe_links_t.py +1 -1
  118. uncountable/types/recipe_metadata_t.py +3 -3
  119. uncountable/types/recipe_output_metadata_t.py +1 -1
  120. uncountable/types/recipe_tags_t.py +1 -1
  121. uncountable/types/recipe_workflow_steps_t.py +5 -4
  122. uncountable/types/recipes_t.py +2 -1
  123. uncountable/types/response_t.py +2 -1
  124. uncountable/types/secret_retrieval_t.py +4 -3
  125. uncountable/types/units_t.py +1 -1
  126. uncountable/types/users_t.py +1 -1
  127. uncountable/types/webhook_job_t.py +4 -3
  128. uncountable/types/workflows_t.py +2 -2
  129. {uncountablepythonsdk-0.0.111.dist-info → uncountablepythonsdk-0.0.112.dist-info}/METADATA +2 -1
  130. {uncountablepythonsdk-0.0.111.dist-info → uncountablepythonsdk-0.0.112.dist-info}/RECORD +132 -127
  131. {uncountablepythonsdk-0.0.111.dist-info → uncountablepythonsdk-0.0.112.dist-info}/WHEEL +1 -1
  132. {uncountablepythonsdk-0.0.111.dist-info → uncountablepythonsdk-0.0.112.dist-info}/top_level.txt +0 -0
@@ -37,7 +37,7 @@ class InvocationContextType(StrEnum):
37
37
  @serial_class(
38
38
  named_type_path="sdk.queued_job.InvocationContextBase",
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 InvocationContextBase:
42
42
  type: InvocationContextType
43
43
 
@@ -47,7 +47,7 @@ class InvocationContextBase:
47
47
  named_type_path="sdk.queued_job.InvocationContextCron",
48
48
  parse_require={"type"},
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 InvocationContextCron(InvocationContextBase):
52
52
  type: typing.Literal[InvocationContextType.CRON] = InvocationContextType.CRON
53
53
 
@@ -57,7 +57,7 @@ class InvocationContextCron(InvocationContextBase):
57
57
  named_type_path="sdk.queued_job.InvocationContextManual",
58
58
  parse_require={"type"},
59
59
  )
60
- @dataclasses.dataclass(kw_only=True)
60
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
61
61
  class InvocationContextManual(InvocationContextBase):
62
62
  type: typing.Literal[InvocationContextType.MANUAL] = InvocationContextType.MANUAL
63
63
 
@@ -68,7 +68,7 @@ class InvocationContextManual(InvocationContextBase):
68
68
  unconverted_values={"webhook_payload"},
69
69
  parse_require={"type"},
70
70
  )
71
- @dataclasses.dataclass(kw_only=True)
71
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
72
72
  class InvocationContextWebhook(InvocationContextBase):
73
73
  type: typing.Literal[InvocationContextType.WEBHOOK] = InvocationContextType.WEBHOOK
74
74
  webhook_payload: base_t.JsonValue
@@ -93,7 +93,7 @@ InvocationContext = typing.Annotated[
93
93
  @serial_class(
94
94
  named_type_path="sdk.queued_job.QueuedJobPayload",
95
95
  )
96
- @dataclasses.dataclass(kw_only=True)
96
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
97
97
  class QueuedJobPayload:
98
98
  invocation_context: InvocationContext
99
99
 
@@ -102,7 +102,7 @@ class QueuedJobPayload:
102
102
  @serial_class(
103
103
  named_type_path="sdk.queued_job.QueuedJobResult",
104
104
  )
105
- @dataclasses.dataclass(kw_only=True)
105
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
106
106
  class QueuedJobResult:
107
107
  queued_job_uuid: str
108
108
  job_result: job_definition_t.JobResult
@@ -112,7 +112,7 @@ class QueuedJobResult:
112
112
  @serial_class(
113
113
  named_type_path="sdk.queued_job.QueuedJob",
114
114
  )
115
- @dataclasses.dataclass(kw_only=True)
115
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
116
116
  class QueuedJob:
117
117
  queued_job_uuid: str
118
118
  job_ref_name: str
@@ -25,7 +25,7 @@ __all__: list[str] = [
25
25
  named_type_path="sdk.recipe_identifiers.RecipeIdentifierEditableName",
26
26
  parse_require={"type"},
27
27
  )
28
- @dataclasses.dataclass(kw_only=True)
28
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
29
29
  class RecipeIdentifierEditableName:
30
30
  type: typing.Literal["name"] = "name"
31
31
  editable_name: str
@@ -37,7 +37,7 @@ class RecipeIdentifierEditableName:
37
37
  to_string_values={"quantity_dec"},
38
38
  parse_require={"type"},
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 RecipeIdentifierMetadata:
42
42
  type: typing.Literal["metadata"] = "metadata"
43
43
  recipe_metadata_id: base_t.ObjectId
@@ -50,7 +50,7 @@ class RecipeIdentifierMetadata:
50
50
  named_type_path="sdk.recipe_identifiers.RecipeIdentifierMaterialFamily",
51
51
  parse_require={"type"},
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 RecipeIdentifierMaterialFamily:
55
55
  type: typing.Literal["material_family_id"] = "material_family_id"
56
56
  material_family_id: base_t.ObjectId
@@ -44,7 +44,7 @@ class RecipeLinkType(StrEnum):
44
44
  @serial_class(
45
45
  named_type_path="sdk.recipe_links.RecipeLink",
46
46
  )
47
- @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
47
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
48
48
  class RecipeLink:
49
49
  recipe_id_from: base_t.ObjectId
50
50
  recipe_id_to: base_t.ObjectId
@@ -23,7 +23,7 @@ __all__: list[str] = [
23
23
  unconverted_values={"value_json"},
24
24
  to_string_values={"value_numeric"},
25
25
  )
26
- @dataclasses.dataclass(kw_only=True)
26
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
27
27
  class MetadataValue:
28
28
  metadata_id: base_t.ObjectId
29
29
  value_numeric: Decimal | None = None
@@ -36,7 +36,7 @@ class MetadataValue:
36
36
  @serial_class(
37
37
  named_type_path="sdk.recipe_metadata.SimpleRecipeMetadataField",
38
38
  )
39
- @dataclasses.dataclass(kw_only=True)
39
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
40
40
  class SimpleRecipeMetadataField:
41
41
  metadata_id: base_t.ObjectId
42
42
  name: str
@@ -49,7 +49,7 @@ class SimpleRecipeMetadataField:
49
49
  unconverted_values={"quantity_json"},
50
50
  to_string_values={"quantity_dec"},
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 RecipeMetadata:
54
54
  metadata_id: base_t.ObjectId
55
55
  quantity_dec: Decimal | None = None
@@ -19,7 +19,7 @@ __all__: list[str] = [
19
19
  @serial_class(
20
20
  named_type_path="sdk.recipe_output_metadata.RecipeOutputMetadataField",
21
21
  )
22
- @dataclasses.dataclass(kw_only=True)
22
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
23
23
  class RecipeOutputMetadataField:
24
24
  id: base_t.ObjectId
25
25
  name: str
@@ -19,7 +19,7 @@ __all__: list[str] = [
19
19
  @serial_class(
20
20
  named_type_path="sdk.recipe_tags.SimpleRecipeTag",
21
21
  )
22
- @dataclasses.dataclass(kw_only=True)
22
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
23
23
  class SimpleRecipeTag:
24
24
  recipe_tag_id: base_t.ObjectId
25
25
  name: str
@@ -10,6 +10,7 @@ from enum import StrEnum
10
10
  import dataclasses
11
11
  from pkgs.serialization import serial_class
12
12
  from pkgs.serialization import serial_union_annotation
13
+ from . import base_t
13
14
  from . import identifier_t
14
15
 
15
16
  __all__: list[str] = [
@@ -34,7 +35,7 @@ class RecipeWorkflowStepIdentifierType(StrEnum):
34
35
  @serial_class(
35
36
  named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifierBase",
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 RecipeWorkflowStepIdentifierBase:
39
40
  type: RecipeWorkflowStepIdentifierType
40
41
 
@@ -44,7 +45,7 @@ class RecipeWorkflowStepIdentifierBase:
44
45
  named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifierDefault",
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 RecipeWorkflowStepIdentifierDefault(RecipeWorkflowStepIdentifierBase):
49
50
  type: typing.Literal[RecipeWorkflowStepIdentifierType.DEFAULT] = RecipeWorkflowStepIdentifierType.DEFAULT
50
51
 
@@ -60,7 +61,7 @@ class RecipeWorkflowStepPosition(StrEnum):
60
61
  named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifierWorkflowStep",
61
62
  parse_require={"type"},
62
63
  )
63
- @dataclasses.dataclass(kw_only=True)
64
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
64
65
  class RecipeWorkflowStepIdentifierWorkflowStep(RecipeWorkflowStepIdentifierBase):
65
66
  type: typing.Literal[RecipeWorkflowStepIdentifierType.WORKFLOW_STEP] = RecipeWorkflowStepIdentifierType.WORKFLOW_STEP
66
67
  workflow_step_key: identifier_t.IdentifierKey
@@ -72,7 +73,7 @@ class RecipeWorkflowStepIdentifierWorkflowStep(RecipeWorkflowStepIdentifierBase)
72
73
  named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifierKey",
73
74
  parse_require={"type"},
74
75
  )
75
- @dataclasses.dataclass(kw_only=True)
76
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
76
77
  class RecipeWorkflowStepIdentifierKey:
77
78
  type: typing.Literal[RecipeWorkflowStepIdentifierType.IDENTIFIER_KEY] = RecipeWorkflowStepIdentifierType.IDENTIFIER_KEY
78
79
  recipe_workflow_step_key: identifier_t.IdentifierKey
@@ -8,6 +8,7 @@ import datetime # noqa: F401
8
8
  from decimal import Decimal # noqa: F401
9
9
  import dataclasses
10
10
  from pkgs.serialization import serial_class
11
+ from . import base_t
11
12
 
12
13
  __all__: list[str] = [
13
14
  "RecipeAttributeFormatting",
@@ -18,7 +19,7 @@ __all__: list[str] = [
18
19
  @serial_class(
19
20
  named_type_path="sdk.recipes.RecipeAttributeFormatting",
20
21
  )
21
- @dataclasses.dataclass(kw_only=True)
22
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
22
23
  class RecipeAttributeFormatting:
23
24
  background_color: str
24
25
  # 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
 
12
13
  __all__: list[str] = [
13
14
  "Response",
@@ -19,7 +20,7 @@ __all__: list[str] = [
19
20
  named_type_path="sdk.response.Response",
20
21
  parse_require={"status"},
21
22
  )
22
- @dataclasses.dataclass(kw_only=True)
23
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
23
24
  class Response:
24
25
  status: typing.Literal["ok"] = "ok"
25
26
  # 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
 
14
15
  __all__: list[str] = [
15
16
  "SecretRetrieval",
@@ -24,7 +25,7 @@ __all__: list[str] = [
24
25
  @serial_class(
25
26
  named_type_path="sdk.secret_retrieval.SecretRetrievalBase",
26
27
  )
27
- @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
28
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
28
29
  class SecretRetrievalBase:
29
30
  type: SecretRetrievalType
30
31
 
@@ -40,7 +41,7 @@ class SecretRetrievalType(StrEnum):
40
41
  named_type_path="sdk.secret_retrieval.SecretRetrievalEnv",
41
42
  parse_require={"type"},
42
43
  )
43
- @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
44
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
44
45
  class SecretRetrievalEnv(SecretRetrievalBase):
45
46
  type: typing.Literal[SecretRetrievalType.ENV] = SecretRetrievalType.ENV
46
47
  env_key: str
@@ -51,7 +52,7 @@ class SecretRetrievalEnv(SecretRetrievalBase):
51
52
  named_type_path="sdk.secret_retrieval.SecretRetrievalAWS",
52
53
  parse_require={"type"},
53
54
  )
54
- @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
55
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
55
56
  class SecretRetrievalAWS(SecretRetrievalBase):
56
57
  type: typing.Literal[SecretRetrievalType.AWS] = SecretRetrievalType.AWS
57
58
  secret_name: str
@@ -19,7 +19,7 @@ __all__: list[str] = [
19
19
  @serial_class(
20
20
  named_type_path="sdk.units.SimpleUnit",
21
21
  )
22
- @dataclasses.dataclass(kw_only=True)
22
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
23
23
  class SimpleUnit:
24
24
  unit_id: base_t.ObjectId
25
25
  name: str
@@ -19,7 +19,7 @@ __all__: list[str] = [
19
19
  @serial_class(
20
20
  named_type_path="sdk.users.SimpleUser",
21
21
  )
22
- @dataclasses.dataclass(kw_only=True)
22
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
23
23
  class SimpleUser:
24
24
  user_id: base_t.ObjectId
25
25
  display_name: str
@@ -23,7 +23,7 @@ __all__: list[str] = [
23
23
  named_type_path="sdk.webhook_job.WebhookEventPayload",
24
24
  unconverted_values={"data"},
25
25
  )
26
- @dataclasses.dataclass(kw_only=True)
26
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
27
27
  class WebhookEventPayload:
28
28
  data: dict[str, base_t.JsonValue]
29
29
 
@@ -32,7 +32,7 @@ class WebhookEventPayload:
32
32
  @serial_class(
33
33
  named_type_path="sdk.webhook_job.WebhookEventBody",
34
34
  )
35
- @dataclasses.dataclass(kw_only=True)
35
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
36
36
  class WebhookEventBody(WebhookEventPayload):
37
37
  event_id: str
38
38
 
@@ -41,7 +41,8 @@ class WebhookEventBody(WebhookEventPayload):
41
41
  @serial_class(
42
42
  named_type_path="sdk.webhook_job.RunsheetWebhookPayload",
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 RunsheetWebhookPayload:
46
46
  entities: list[entity_t.Entity]
47
+ async_job_id: base_t.ObjectId
47
48
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -20,7 +20,7 @@ __all__: list[str] = [
20
20
  @serial_class(
21
21
  named_type_path="sdk.workflows.SimpleWorkflowStep",
22
22
  )
23
- @dataclasses.dataclass(kw_only=True)
23
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
24
24
  class SimpleWorkflowStep:
25
25
  workflow_step_id: base_t.ObjectId
26
26
  name: str | None
@@ -30,7 +30,7 @@ class SimpleWorkflowStep:
30
30
  @serial_class(
31
31
  named_type_path="sdk.workflows.SimpleWorkflow",
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 SimpleWorkflow:
35
35
  workflow_id: base_t.ObjectId
36
36
  name: str
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.111
3
+ Version: 0.0.112
4
4
  Summary: Uncountable SDK
5
5
  Project-URL: Homepage, https://github.com/uncountableinc/uncountable-python-sdk
6
6
  Project-URL: Repository, https://github.com/uncountableinc/uncountable-python-sdk.git
@@ -39,6 +39,7 @@ Requires-Dist: grpcio==1.67.1
39
39
  Requires-Dist: protobuf>=4.21.1
40
40
  Requires-Dist: azure-storage-blob==12.*
41
41
  Requires-Dist: boto3-stubs[essential,ses]==1.*
42
+ Requires-Dist: msgspec==0.19.*
42
43
  Provides-Extra: test
43
44
  Requires-Dist: mypy==1.*; extra == "test"
44
45
  Requires-Dist: ruff==0.*; extra == "test"