UncountablePythonSDK 0.0.41__py3-none-any.whl → 0.0.42__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 (123) hide show
  1. {UncountablePythonSDK-0.0.41.dist-info → UncountablePythonSDK-0.0.42.dist-info}/METADATA +5 -1
  2. {UncountablePythonSDK-0.0.41.dist-info → UncountablePythonSDK-0.0.42.dist-info}/RECORD +122 -104
  3. docs/requirements.txt +3 -3
  4. examples/invoke_uploader.py +23 -0
  5. pkgs/argument_parser/argument_parser.py +1 -1
  6. pkgs/filesystem_utils/__init__.py +17 -0
  7. pkgs/filesystem_utils/_gdrive_session.py +306 -0
  8. pkgs/filesystem_utils/_local_session.py +69 -0
  9. pkgs/filesystem_utils/_sftp_session.py +147 -0
  10. pkgs/filesystem_utils/file_type_utils.py +61 -0
  11. pkgs/filesystem_utils/filesystem_session.py +39 -0
  12. pkgs/type_spec/emit_open_api.py +4 -2
  13. pkgs/type_spec/emit_open_api_util.py +4 -2
  14. pkgs/type_spec/emit_python.py +13 -14
  15. uncountable/core/file_upload.py +13 -3
  16. uncountable/integration/construct_client.py +1 -1
  17. uncountable/integration/cron.py +9 -6
  18. uncountable/integration/entrypoint.py +1 -1
  19. uncountable/integration/executors/executors.py +24 -0
  20. uncountable/integration/executors/generic_upload_executor.py +245 -0
  21. uncountable/integration/executors/script_executor.py +1 -1
  22. uncountable/integration/job.py +18 -1
  23. uncountable/integration/secret_retrieval/__init__.py +3 -0
  24. uncountable/integration/secret_retrieval/retrieve_secret.py +40 -0
  25. uncountable/integration/server.py +1 -1
  26. uncountable/types/__init__.py +8 -0
  27. uncountable/types/api/batch/execute_batch.py +5 -5
  28. uncountable/types/api/batch/execute_batch_load_async.py +3 -3
  29. uncountable/types/api/chemical/convert_chemical_formats.py +4 -4
  30. uncountable/types/api/entity/create_entities.py +4 -4
  31. uncountable/types/api/entity/create_entity.py +4 -4
  32. uncountable/types/api/entity/get_entities_data.py +4 -4
  33. uncountable/types/api/entity/list_entities.py +5 -5
  34. uncountable/types/api/entity/lock_entity.py +3 -3
  35. uncountable/types/api/entity/resolve_entity_ids.py +4 -4
  36. uncountable/types/api/entity/set_values.py +3 -3
  37. uncountable/types/api/entity/transition_entity_phase.py +5 -5
  38. uncountable/types/api/entity/unlock_entity.py +3 -3
  39. uncountable/types/api/equipment/associate_equipment_input.py +3 -3
  40. uncountable/types/api/field_options/upsert_field_options.py +4 -4
  41. uncountable/types/api/id_source/list_id_source.py +4 -4
  42. uncountable/types/api/id_source/match_id_source.py +4 -4
  43. uncountable/types/api/input_groups/get_input_group_names.py +4 -4
  44. uncountable/types/api/inputs/create_inputs.py +5 -5
  45. uncountable/types/api/inputs/get_input_data.py +7 -7
  46. uncountable/types/api/inputs/get_input_names.py +4 -4
  47. uncountable/types/api/inputs/get_inputs_data.py +7 -7
  48. uncountable/types/api/inputs/set_input_attribute_values.py +4 -4
  49. uncountable/types/api/inputs/set_input_category.py +3 -3
  50. uncountable/types/api/inputs/set_input_subcategories.py +3 -3
  51. uncountable/types/api/inputs/set_intermediate_type.py +3 -3
  52. uncountable/types/api/material_families/update_entity_material_families.py +3 -3
  53. uncountable/types/api/outputs/get_output_data.py +7 -7
  54. uncountable/types/api/outputs/get_output_names.py +4 -4
  55. uncountable/types/api/outputs/resolve_output_conditions.py +6 -6
  56. uncountable/types/api/permissions/set_core_permissions.py +7 -7
  57. uncountable/types/api/project/get_projects.py +4 -4
  58. uncountable/types/api/project/get_projects_data.py +4 -4
  59. uncountable/types/api/recipe_links/create_recipe_link.py +3 -3
  60. uncountable/types/api/recipe_links/remove_recipe_link.py +3 -3
  61. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +4 -4
  62. uncountable/types/api/recipes/add_recipe_to_project.py +3 -3
  63. uncountable/types/api/recipes/archive_recipes.py +3 -3
  64. uncountable/types/api/recipes/associate_recipe_as_input.py +3 -3
  65. uncountable/types/api/recipes/associate_recipe_as_lot.py +3 -3
  66. uncountable/types/api/recipes/create_recipe.py +3 -3
  67. uncountable/types/api/recipes/create_recipes.py +5 -5
  68. uncountable/types/api/recipes/disassociate_recipe_as_input.py +3 -3
  69. uncountable/types/api/recipes/edit_recipe_inputs.py +12 -12
  70. uncountable/types/api/recipes/get_curve.py +3 -3
  71. uncountable/types/api/recipes/get_recipe_calculations.py +4 -4
  72. uncountable/types/api/recipes/get_recipe_links.py +3 -3
  73. uncountable/types/api/recipes/get_recipe_names.py +4 -4
  74. uncountable/types/api/recipes/get_recipe_output_metadata.py +4 -4
  75. uncountable/types/api/recipes/get_recipes_data.py +12 -12
  76. uncountable/types/api/recipes/lock_recipes.py +4 -4
  77. uncountable/types/api/recipes/remove_recipe_from_project.py +3 -3
  78. uncountable/types/api/recipes/set_recipe_inputs.py +4 -4
  79. uncountable/types/api/recipes/set_recipe_metadata.py +3 -3
  80. uncountable/types/api/recipes/set_recipe_output_annotations.py +7 -7
  81. uncountable/types/api/recipes/set_recipe_outputs.py +5 -5
  82. uncountable/types/api/recipes/set_recipe_tags.py +7 -7
  83. uncountable/types/api/recipes/unarchive_recipes.py +3 -3
  84. uncountable/types/api/recipes/unlock_recipes.py +3 -3
  85. uncountable/types/api/triggers/run_trigger.py +3 -3
  86. uncountable/types/api/uploader/__init__.py +1 -0
  87. uncountable/types/api/uploader/invoke_uploader.py +38 -0
  88. uncountable/types/async_batch_processor.py +36 -0
  89. uncountable/types/async_batch_t.py +6 -4
  90. uncountable/types/calculations_t.py +2 -2
  91. uncountable/types/chemical_structure_t.py +2 -2
  92. uncountable/types/client_base.py +25 -2
  93. uncountable/types/curves_t.py +3 -3
  94. uncountable/types/entity_t.py +2 -2
  95. uncountable/types/experiment_groups_t.py +2 -2
  96. uncountable/types/field_values_t.py +5 -5
  97. uncountable/types/fields_t.py +2 -2
  98. uncountable/types/generic_upload.py +9 -0
  99. uncountable/types/generic_upload_t.py +41 -0
  100. uncountable/types/id_source_t.py +5 -5
  101. uncountable/types/identifier_t.py +4 -4
  102. uncountable/types/input_attributes_t.py +2 -2
  103. uncountable/types/inputs_t.py +2 -2
  104. uncountable/types/job_definition.py +26 -0
  105. uncountable/types/job_definition_t.py +203 -0
  106. uncountable/types/outputs_t.py +2 -2
  107. uncountable/types/phases_t.py +2 -2
  108. uncountable/types/recipe_identifiers_t.py +4 -4
  109. uncountable/types/recipe_links_t.py +2 -2
  110. uncountable/types/recipe_metadata_t.py +4 -4
  111. uncountable/types/recipe_output_metadata_t.py +2 -2
  112. uncountable/types/recipe_tags_t.py +2 -2
  113. uncountable/types/recipe_workflow_steps_t.py +5 -5
  114. uncountable/types/recipes_t.py +2 -2
  115. uncountable/types/response_t.py +2 -2
  116. uncountable/types/secret_retrieval.py +12 -0
  117. uncountable/types/secret_retrieval_t.py +69 -0
  118. uncountable/types/units_t.py +2 -2
  119. uncountable/types/users_t.py +2 -2
  120. uncountable/types/workflows_t.py +3 -3
  121. uncountable/integration/types.py +0 -89
  122. {UncountablePythonSDK-0.0.41.dist-info → UncountablePythonSDK-0.0.42.dist-info}/WHEEL +0 -0
  123. {UncountablePythonSDK-0.0.41.dist-info → UncountablePythonSDK-0.0.42.dist-info}/top_level.txt +0 -0
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from ... import base_t
12
12
  from ... import input_attributes_t
13
13
 
@@ -27,13 +27,13 @@ ENDPOINT_PATH = "api/external/inputs/external_get_inputs_data"
27
27
 
28
28
 
29
29
  # DO NOT MODIFY -- This file is generated by type_spec
30
- @dataclass(kw_only=True)
30
+ @dataclasses.dataclass(kw_only=True)
31
31
  class Arguments:
32
32
  input_ids: list[base_t.ObjectId]
33
33
 
34
34
 
35
35
  # DO NOT MODIFY -- This file is generated by type_spec
36
- @dataclass(kw_only=True)
36
+ @dataclasses.dataclass(kw_only=True)
37
37
  class AttributeDetails:
38
38
  attribute_id: base_t.ObjectId
39
39
  name: str
@@ -41,14 +41,14 @@ class AttributeDetails:
41
41
 
42
42
 
43
43
  # DO NOT MODIFY -- This file is generated by type_spec
44
- @dataclass(kw_only=True)
44
+ @dataclasses.dataclass(kw_only=True)
45
45
  class InputTag:
46
46
  tag_id: base_t.ObjectId
47
47
  tag_name: str
48
48
 
49
49
 
50
50
  # DO NOT MODIFY -- This file is generated by type_spec
51
- @dataclass(kw_only=True)
51
+ @dataclasses.dataclass(kw_only=True)
52
52
  class InputCategory:
53
53
  material_family_id: base_t.ObjectId
54
54
  category_id: base_t.ObjectId
@@ -56,7 +56,7 @@ class InputCategory:
56
56
 
57
57
 
58
58
  # DO NOT MODIFY -- This file is generated by type_spec
59
- @dataclass(kw_only=True)
59
+ @dataclasses.dataclass(kw_only=True)
60
60
  class InputDetails:
61
61
  input_id: base_t.ObjectId
62
62
  name: str
@@ -68,7 +68,7 @@ class InputDetails:
68
68
 
69
69
 
70
70
  # DO NOT MODIFY -- This file is generated by type_spec
71
- @dataclass(kw_only=True)
71
+ @dataclasses.dataclass(kw_only=True)
72
72
  class Data:
73
73
  input_details: list[InputDetails]
74
74
  input_attributes: list[AttributeDetails]
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from pkgs.serialization import serial_class
12
12
  from ... import base_t
13
13
  from ... import response_t
@@ -25,7 +25,7 @@ ENDPOINT_PATH = "api/external/inputs/external_set_input_attribute_values"
25
25
 
26
26
 
27
27
  # DO NOT MODIFY -- This file is generated by type_spec
28
- @dataclass(kw_only=True)
28
+ @dataclasses.dataclass(kw_only=True)
29
29
  class Arguments:
30
30
  attribute_values: list[InputAttributeValue]
31
31
 
@@ -35,7 +35,7 @@ class Arguments:
35
35
  unconverted_values={"quantity_json"},
36
36
  to_string_values={"quantity_dec"},
37
37
  )
38
- @dataclass(kw_only=True)
38
+ @dataclasses.dataclass(kw_only=True)
39
39
  class InputAttributeValue:
40
40
  input_id: base_t.ObjectId
41
41
  attribute_id: base_t.ObjectId
@@ -44,7 +44,7 @@ class InputAttributeValue:
44
44
 
45
45
 
46
46
  # DO NOT MODIFY -- This file is generated by type_spec
47
- @dataclass(kw_only=True)
47
+ @dataclasses.dataclass(kw_only=True)
48
48
  class Data(response_t.Response):
49
49
  pass
50
50
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from ... import identifier_t
12
12
  from ... import response_t
13
13
 
@@ -23,7 +23,7 @@ ENDPOINT_PATH = "api/external/inputs/external_set_input_category"
23
23
 
24
24
 
25
25
  # DO NOT MODIFY -- This file is generated by type_spec
26
- @dataclass(kw_only=True)
26
+ @dataclasses.dataclass(kw_only=True)
27
27
  class Arguments:
28
28
  input_key: identifier_t.IdentifierKey
29
29
  category_id: int
@@ -31,7 +31,7 @@ class Arguments:
31
31
 
32
32
 
33
33
  # DO NOT MODIFY -- This file is generated by type_spec
34
- @dataclass(kw_only=True)
34
+ @dataclasses.dataclass(kw_only=True)
35
35
  class Data(response_t.Response):
36
36
  pass
37
37
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from ... import identifier_t
12
12
  from ... import post_base_t
13
13
  from ... import response_t
@@ -24,7 +24,7 @@ ENDPOINT_PATH = "api/external/inputs/external_set_input_subcategories"
24
24
 
25
25
 
26
26
  # DO NOT MODIFY -- This file is generated by type_spec
27
- @dataclass(kw_only=True)
27
+ @dataclasses.dataclass(kw_only=True)
28
28
  class Arguments:
29
29
  input_key: identifier_t.IdentifierKey
30
30
  subcategory_ids: list[int]
@@ -32,7 +32,7 @@ class Arguments:
32
32
 
33
33
 
34
34
  # DO NOT MODIFY -- This file is generated by type_spec
35
- @dataclass(kw_only=True)
35
+ @dataclasses.dataclass(kw_only=True)
36
36
  class Data(response_t.Response):
37
37
  pass
38
38
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -8,7 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  from pkgs.strenum_compat import StrEnum
11
- from dataclasses import dataclass
11
+ import dataclasses
12
12
  from ... import identifier_t
13
13
 
14
14
  __all__: list[str] = [
@@ -30,14 +30,14 @@ class IntermediateType(StrEnum):
30
30
 
31
31
 
32
32
  # DO NOT MODIFY -- This file is generated by type_spec
33
- @dataclass(kw_only=True)
33
+ @dataclasses.dataclass(kw_only=True)
34
34
  class Arguments:
35
35
  input_key: identifier_t.IdentifierKey
36
36
  intermediate_type: IntermediateType
37
37
 
38
38
 
39
39
  # DO NOT MODIFY -- This file is generated by type_spec
40
- @dataclass(kw_only=True)
40
+ @dataclasses.dataclass(kw_only=True)
41
41
  class Data:
42
42
  pass
43
43
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from ... import base_t
12
12
  from ... import entity_t
13
13
  from ... import identifier_t
@@ -26,7 +26,7 @@ ENDPOINT_PATH = "api/external/material_families/external_update_entity_material_
26
26
 
27
27
 
28
28
  # DO NOT MODIFY -- This file is generated by type_spec
29
- @dataclass(kw_only=True)
29
+ @dataclasses.dataclass(kw_only=True)
30
30
  class Arguments:
31
31
  entity_key: identifier_t.IdentifierKey
32
32
  entity_type: typing.Union[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]]
@@ -35,7 +35,7 @@ class Arguments:
35
35
 
36
36
 
37
37
  # DO NOT MODIFY -- This file is generated by type_spec
38
- @dataclass(kw_only=True)
38
+ @dataclasses.dataclass(kw_only=True)
39
39
  class Data(response_t.Response):
40
40
  pass
41
41
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from pkgs.serialization import serial_class
12
12
  from ... import base_t
13
13
  from ... import units_t
@@ -28,7 +28,7 @@ ENDPOINT_PATH = "api/external/outputs/external_get_output_data"
28
28
 
29
29
 
30
30
  # DO NOT MODIFY -- This file is generated by type_spec
31
- @dataclass(kw_only=True)
31
+ @dataclasses.dataclass(kw_only=True)
32
32
  class Arguments:
33
33
  material_family_id: base_t.ObjectId
34
34
  output_ids: typing.Optional[list[base_t.ObjectId]] = None
@@ -41,7 +41,7 @@ class Arguments:
41
41
  unconverted_values={"quantity_json"},
42
42
  to_string_values={"quantity_dec"},
43
43
  )
44
- @dataclass(kw_only=True)
44
+ @dataclasses.dataclass(kw_only=True)
45
45
  class OutputAttrVal:
46
46
  attribute_id: base_t.ObjectId
47
47
  quantity_json: base_t.JsonValue
@@ -49,7 +49,7 @@ class OutputAttrVal:
49
49
 
50
50
 
51
51
  # DO NOT MODIFY -- This file is generated by type_spec
52
- @dataclass(kw_only=True)
52
+ @dataclasses.dataclass(kw_only=True)
53
53
  class SimpleOutputAttr:
54
54
  attribute_id: base_t.ObjectId
55
55
  name: str
@@ -57,14 +57,14 @@ class SimpleOutputAttr:
57
57
 
58
58
 
59
59
  # DO NOT MODIFY -- This file is generated by type_spec
60
- @dataclass(kw_only=True)
60
+ @dataclasses.dataclass(kw_only=True)
61
61
  class SimpleOutputGlobalCategory:
62
62
  category_id: base_t.ObjectId
63
63
  name: str
64
64
 
65
65
 
66
66
  # DO NOT MODIFY -- This file is generated by type_spec
67
- @dataclass(kw_only=True)
67
+ @dataclasses.dataclass(kw_only=True)
68
68
  class FullOutput:
69
69
  output_id: base_t.ObjectId
70
70
  name: str
@@ -75,7 +75,7 @@ class FullOutput:
75
75
 
76
76
 
77
77
  # DO NOT MODIFY -- This file is generated by type_spec
78
- @dataclass(kw_only=True)
78
+ @dataclasses.dataclass(kw_only=True)
79
79
  class Data:
80
80
  outputs: list[FullOutput]
81
81
  attrs: list[SimpleOutputAttr]
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from ... import base_t
12
12
 
13
13
  __all__: list[str] = [
@@ -23,7 +23,7 @@ ENDPOINT_PATH = "api/external/outputs/external_get_output_names"
23
23
 
24
24
 
25
25
  # DO NOT MODIFY -- This file is generated by type_spec
26
- @dataclass(kw_only=True)
26
+ @dataclasses.dataclass(kw_only=True)
27
27
  class Arguments:
28
28
  material_family_id: base_t.ObjectId
29
29
  offset: typing.Optional[int] = None
@@ -31,14 +31,14 @@ class Arguments:
31
31
 
32
32
 
33
33
  # DO NOT MODIFY -- This file is generated by type_spec
34
- @dataclass(kw_only=True)
34
+ @dataclasses.dataclass(kw_only=True)
35
35
  class OutputWithName:
36
36
  output_id: base_t.ObjectId
37
37
  name: str
38
38
 
39
39
 
40
40
  # DO NOT MODIFY -- This file is generated by type_spec
41
- @dataclass(kw_only=True)
41
+ @dataclasses.dataclass(kw_only=True)
42
42
  class Data:
43
43
  outputs: list[OutputWithName]
44
44
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from pkgs.serialization import serial_class
12
12
  from ... import base_t
13
13
 
@@ -30,7 +30,7 @@ ENDPOINT_PATH = "api/external/outputs/external_resolve_output_conditions"
30
30
  @serial_class(
31
31
  to_string_values={"value_numeric"},
32
32
  )
33
- @dataclass(kw_only=True)
33
+ @dataclasses.dataclass(kw_only=True)
34
34
  class ConditionParameterValueRecord:
35
35
  condition_parameter_id: base_t.ObjectId
36
36
  value_numeric: typing.Optional[Decimal] = None
@@ -38,26 +38,26 @@ class ConditionParameterValueRecord:
38
38
 
39
39
 
40
40
  # DO NOT MODIFY -- This file is generated by type_spec
41
- @dataclass(kw_only=True)
41
+ @dataclasses.dataclass(kw_only=True)
42
42
  class ConditionRequest:
43
43
  conditions: list[ConditionParameterValueRecord]
44
44
 
45
45
 
46
46
  # DO NOT MODIFY -- This file is generated by type_spec
47
- @dataclass(kw_only=True)
47
+ @dataclasses.dataclass(kw_only=True)
48
48
  class Arguments:
49
49
  requested_conditions: list[ConditionRequest]
50
50
 
51
51
 
52
52
  # DO NOT MODIFY -- This file is generated by type_spec
53
- @dataclass(kw_only=True)
53
+ @dataclasses.dataclass(kw_only=True)
54
54
  class ConditionResponse:
55
55
  conditions: list[ConditionParameterValueRecord]
56
56
  output_condition_id: base_t.ObjectId
57
57
 
58
58
 
59
59
  # DO NOT MODIFY -- This file is generated by type_spec
60
- @dataclass(kw_only=True)
60
+ @dataclasses.dataclass(kw_only=True)
61
61
  class Data:
62
62
  resolved_conditions: list[ConditionResponse]
63
63
 
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from pkgs.serialization import serial_class
12
12
  from ... import identifier_t
13
13
  from ... import permissions_t
@@ -33,7 +33,7 @@ ENDPOINT_PATH = "api/external/permissions/external_set_core_permissions"
33
33
  @serial_class(
34
34
  parse_require={"type"},
35
35
  )
36
- @dataclass(kw_only=True)
36
+ @dataclasses.dataclass(kw_only=True)
37
37
  class PermissionsScopeProject:
38
38
  type: typing.Literal["project"] = "project"
39
39
  project_key: identifier_t.IdentifierKey
@@ -43,7 +43,7 @@ class PermissionsScopeProject:
43
43
  @serial_class(
44
44
  parse_require={"type"},
45
45
  )
46
- @dataclass(kw_only=True)
46
+ @dataclasses.dataclass(kw_only=True)
47
47
  class PermissionsScopeRecipe:
48
48
  type: typing.Literal["recipe"] = "recipe"
49
49
  recipe_key: identifier_t.IdentifierKey
@@ -53,7 +53,7 @@ class PermissionsScopeRecipe:
53
53
  @serial_class(
54
54
  parse_require={"type"},
55
55
  )
56
- @dataclass(kw_only=True)
56
+ @dataclasses.dataclass(kw_only=True)
57
57
  class PermissionsScopeMaterialFamily:
58
58
  type: typing.Literal["material_family"] = "material_family"
59
59
  material_family_key: identifier_t.IdentifierKey
@@ -63,7 +63,7 @@ class PermissionsScopeMaterialFamily:
63
63
  @serial_class(
64
64
  parse_require={"type"},
65
65
  )
66
- @dataclass(kw_only=True)
66
+ @dataclasses.dataclass(kw_only=True)
67
67
  class PermissionsScopeAllMaterialFamilies:
68
68
  type: typing.Literal["all_material_families"] = "all_material_families"
69
69
 
@@ -73,7 +73,7 @@ PermissionsScope = typing.Union[PermissionsScopeProject, PermissionsScopeRecipe,
73
73
 
74
74
 
75
75
  # DO NOT MODIFY -- This file is generated by type_spec
76
- @dataclass(kw_only=True)
76
+ @dataclasses.dataclass(kw_only=True)
77
77
  class Arguments:
78
78
  scope: PermissionsScope
79
79
  permissions_types: list[permissions_t.CorePermissionType]
@@ -83,7 +83,7 @@ class Arguments:
83
83
 
84
84
 
85
85
  # DO NOT MODIFY -- This file is generated by type_spec
86
- @dataclass(kw_only=True)
86
+ @dataclasses.dataclass(kw_only=True)
87
87
  class Data:
88
88
  pass
89
89
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from ... import base_t
12
12
  from ... import phases_t
13
13
 
@@ -24,14 +24,14 @@ ENDPOINT_PATH = "api/external/project/external_get_projects"
24
24
 
25
25
 
26
26
  # DO NOT MODIFY -- This file is generated by type_spec
27
- @dataclass(kw_only=True)
27
+ @dataclasses.dataclass(kw_only=True)
28
28
  class Arguments:
29
29
  all_material_families: bool
30
30
  material_family_id: typing.Optional[base_t.ObjectId]
31
31
 
32
32
 
33
33
  # DO NOT MODIFY -- This file is generated by type_spec
34
- @dataclass(kw_only=True)
34
+ @dataclasses.dataclass(kw_only=True)
35
35
  class Project:
36
36
  id: base_t.ObjectId
37
37
  name: str
@@ -41,7 +41,7 @@ class Project:
41
41
 
42
42
 
43
43
  # DO NOT MODIFY -- This file is generated by type_spec
44
- @dataclass(kw_only=True)
44
+ @dataclasses.dataclass(kw_only=True)
45
45
  class Data:
46
46
  projects: list[Project]
47
47
  phases: list[phases_t.Phase]
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from ... import base_t
12
12
  from ... import field_values_t
13
13
  from ... import fields_t
@@ -26,7 +26,7 @@ ENDPOINT_PATH = "api/external/project/external_get_projects_data"
26
26
 
27
27
 
28
28
  # DO NOT MODIFY -- This file is generated by type_spec
29
- @dataclass(kw_only=True)
29
+ @dataclasses.dataclass(kw_only=True)
30
30
  class Arguments:
31
31
  project_ids: list[base_t.ObjectId]
32
32
  offset: typing.Optional[typing.Optional[int]] = None
@@ -34,7 +34,7 @@ class Arguments:
34
34
 
35
35
 
36
36
  # DO NOT MODIFY -- This file is generated by type_spec
37
- @dataclass(kw_only=True)
37
+ @dataclasses.dataclass(kw_only=True)
38
38
  class ProjectDetailed:
39
39
  id: base_t.ObjectId
40
40
  name: str
@@ -45,7 +45,7 @@ class ProjectDetailed:
45
45
 
46
46
 
47
47
  # DO NOT MODIFY -- This file is generated by type_spec
48
- @dataclass(kw_only=True)
48
+ @dataclasses.dataclass(kw_only=True)
49
49
  class Data:
50
50
  projects: list[ProjectDetailed]
51
51
  phases: list[phases_t.Phase]
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from ... import async_batch_t
12
12
  from ... import identifier_t
13
13
  from ... import recipe_links_t
@@ -24,7 +24,7 @@ ENDPOINT_PATH = "api/external/recipe_links/create_recipe_link"
24
24
 
25
25
 
26
26
  # DO NOT MODIFY -- This file is generated by type_spec
27
- @dataclass(kw_only=True)
27
+ @dataclasses.dataclass(kw_only=True)
28
28
  class Arguments:
29
29
  recipe_from_key: identifier_t.IdentifierKey
30
30
  recipe_to_key: identifier_t.IdentifierKey
@@ -33,7 +33,7 @@ class Arguments:
33
33
 
34
34
 
35
35
  # DO NOT MODIFY -- This file is generated by type_spec
36
- @dataclass(kw_only=True)
36
+ @dataclasses.dataclass(kw_only=True)
37
37
  class Data(async_batch_t.AsyncBatchActionReturn):
38
38
  pass
39
39
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from ... import async_batch_t
12
12
  from ... import identifier_t
13
13
  from ... import recipe_links_t
@@ -24,7 +24,7 @@ ENDPOINT_PATH = "api/external/recipe_links/remove_recipe_link"
24
24
 
25
25
 
26
26
  # DO NOT MODIFY -- This file is generated by type_spec
27
- @dataclass(kw_only=True)
27
+ @dataclasses.dataclass(kw_only=True)
28
28
  class Arguments:
29
29
  recipe_from_key: identifier_t.IdentifierKey
30
30
  recipe_to_key: identifier_t.IdentifierKey
@@ -32,7 +32,7 @@ class Arguments:
32
32
 
33
33
 
34
34
  # DO NOT MODIFY -- This file is generated by type_spec
35
- @dataclass(kw_only=True)
35
+ @dataclasses.dataclass(kw_only=True)
36
36
  class Data(async_batch_t.AsyncBatchActionReturn):
37
37
  pass
38
38
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from ... import base_t
12
12
 
13
13
  __all__: list[str] = [
@@ -23,7 +23,7 @@ ENDPOINT_PATH = "api/external/recipe_metadata/external_get_recipe_metadata_data"
23
23
 
24
24
 
25
25
  # DO NOT MODIFY -- This file is generated by type_spec
26
- @dataclass(kw_only=True)
26
+ @dataclasses.dataclass(kw_only=True)
27
27
  class Arguments:
28
28
  material_family_id: base_t.ObjectId
29
29
  recipe_metadata_ids: typing.Optional[list[base_t.ObjectId]]
@@ -32,7 +32,7 @@ class Arguments:
32
32
 
33
33
 
34
34
  # DO NOT MODIFY -- This file is generated by type_spec
35
- @dataclass(kw_only=True)
35
+ @dataclasses.dataclass(kw_only=True)
36
36
  class FullRecipeMetadataField:
37
37
  recipe_metadata_id: base_t.ObjectId
38
38
  name: str
@@ -40,7 +40,7 @@ class FullRecipeMetadataField:
40
40
 
41
41
 
42
42
  # DO NOT MODIFY -- This file is generated by type_spec
43
- @dataclass(kw_only=True)
43
+ @dataclasses.dataclass(kw_only=True)
44
44
  class Data:
45
45
  recipe_metadata: list[FullRecipeMetadataField]
46
46
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from ... import identifier_t
12
12
 
13
13
  __all__: list[str] = [
@@ -22,14 +22,14 @@ ENDPOINT_PATH = "api/external/recipes/add_recipe_to_project"
22
22
 
23
23
 
24
24
  # DO NOT MODIFY -- This file is generated by type_spec
25
- @dataclass(kw_only=True)
25
+ @dataclasses.dataclass(kw_only=True)
26
26
  class Arguments:
27
27
  recipe_key: identifier_t.IdentifierKey
28
28
  project_key: identifier_t.IdentifierKey
29
29
 
30
30
 
31
31
  # DO NOT MODIFY -- This file is generated by type_spec
32
- @dataclass(kw_only=True)
32
+ @dataclasses.dataclass(kw_only=True)
33
33
  class Data:
34
34
  pass
35
35
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from ... import identifier_t
12
12
 
13
13
  __all__: list[str] = [
@@ -22,14 +22,14 @@ ENDPOINT_PATH = "api/external/recipes/archive"
22
22
 
23
23
 
24
24
  # DO NOT MODIFY -- This file is generated by type_spec
25
- @dataclass(kw_only=True)
25
+ @dataclasses.dataclass(kw_only=True)
26
26
  class Arguments:
27
27
  recipes: list[identifier_t.IdentifierKey]
28
28
  reason: typing.Optional[str] = None
29
29
 
30
30
 
31
31
  # DO NOT MODIFY -- This file is generated by type_spec
32
- @dataclass(kw_only=True)
32
+ @dataclasses.dataclass(kw_only=True)
33
33
  class Data:
34
34
  pass
35
35
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from ... import async_batch_t
12
12
  from ... import identifier_t
13
13
 
@@ -23,7 +23,7 @@ ENDPOINT_PATH = "api/external/recipes/associate_recipe_as_input"
23
23
 
24
24
 
25
25
  # DO NOT MODIFY -- This file is generated by type_spec
26
- @dataclass(kw_only=True)
26
+ @dataclasses.dataclass(kw_only=True)
27
27
  class Arguments:
28
28
  recipe_key: identifier_t.IdentifierKey
29
29
  input_key: typing.Optional[identifier_t.IdentifierKey] = None
@@ -31,7 +31,7 @@ class Arguments:
31
31
 
32
32
 
33
33
  # DO NOT MODIFY -- This file is generated by type_spec
34
- @dataclass(kw_only=True)
34
+ @dataclasses.dataclass(kw_only=True)
35
35
  class Data(async_batch_t.AsyncBatchActionReturn):
36
36
  pass
37
37
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from ... import async_batch_t
12
12
  from ... import identifier_t
13
13
 
@@ -23,14 +23,14 @@ ENDPOINT_PATH = "api/external/recipes/associate_recipe_as_lot"
23
23
 
24
24
 
25
25
  # DO NOT MODIFY -- This file is generated by type_spec
26
- @dataclass(kw_only=True)
26
+ @dataclasses.dataclass(kw_only=True)
27
27
  class Arguments:
28
28
  recipe_key: identifier_t.IdentifierKey
29
29
  ingredient_key: identifier_t.IdentifierKey
30
30
 
31
31
 
32
32
  # DO NOT MODIFY -- This file is generated by type_spec
33
- @dataclass(kw_only=True)
33
+ @dataclasses.dataclass(kw_only=True)
34
34
  class Data(async_batch_t.AsyncBatchActionReturn):
35
35
  pass
36
36
  # DO NOT MODIFY -- This file is generated by type_spec