UncountablePythonSDK 0.0.52__py3-none-any.whl → 0.0.131__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.
- docs/conf.py +54 -7
- docs/index.md +107 -4
- docs/integration_examples/create_ingredient.md +43 -0
- docs/integration_examples/create_output.md +56 -0
- docs/integration_examples/index.md +6 -0
- docs/justfile +2 -2
- docs/requirements.txt +6 -4
- examples/async_batch.py +3 -3
- examples/basic_auth.py +7 -0
- examples/create_entity.py +3 -1
- examples/create_ingredient_sdk.py +34 -0
- examples/download_files.py +26 -0
- examples/edit_recipe_inputs.py +4 -2
- examples/integration-server/jobs/materials_auto/concurrent_cron.py +11 -0
- examples/integration-server/jobs/materials_auto/example_cron.py +21 -0
- examples/integration-server/jobs/materials_auto/example_http.py +47 -0
- examples/integration-server/jobs/materials_auto/example_instrument.py +100 -0
- examples/integration-server/jobs/materials_auto/example_parse.py +140 -0
- examples/integration-server/jobs/materials_auto/example_predictions.py +61 -0
- examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +39 -0
- examples/integration-server/jobs/materials_auto/example_wh.py +23 -0
- examples/integration-server/jobs/materials_auto/profile.yaml +104 -0
- examples/integration-server/pyproject.toml +224 -0
- examples/invoke_uploader.py +4 -1
- examples/oauth.py +7 -0
- examples/set_recipe_metadata_file.py +40 -0
- examples/set_recipe_output_file_sdk.py +26 -0
- examples/upload_files.py +1 -2
- pkgs/argument_parser/__init__.py +9 -0
- pkgs/argument_parser/_is_namedtuple.py +3 -0
- pkgs/argument_parser/argument_parser.py +217 -70
- pkgs/filesystem_utils/__init__.py +1 -0
- pkgs/filesystem_utils/_blob_session.py +144 -0
- pkgs/filesystem_utils/_gdrive_session.py +10 -7
- pkgs/filesystem_utils/_s3_session.py +15 -13
- pkgs/filesystem_utils/_sftp_session.py +11 -7
- pkgs/filesystem_utils/file_type_utils.py +30 -10
- pkgs/py.typed +0 -0
- pkgs/serialization/__init__.py +7 -2
- pkgs/serialization/annotation.py +64 -0
- pkgs/serialization/missing_sentry.py +1 -1
- pkgs/serialization/opaque_key.py +1 -1
- pkgs/serialization/serial_alias.py +47 -0
- pkgs/serialization/serial_class.py +47 -26
- pkgs/serialization/serial_generic.py +16 -0
- pkgs/serialization/serial_union.py +17 -14
- pkgs/serialization/yaml.py +4 -1
- pkgs/serialization_util/__init__.py +6 -0
- pkgs/serialization_util/dataclasses.py +14 -0
- pkgs/serialization_util/serialization_helpers.py +15 -5
- pkgs/type_spec/actions_registry/__main__.py +0 -4
- pkgs/type_spec/actions_registry/emit_typescript.py +5 -5
- pkgs/type_spec/builder.py +354 -119
- pkgs/type_spec/builder_types.py +9 -0
- pkgs/type_spec/config.py +51 -11
- pkgs/type_spec/cross_output_links.py +99 -0
- pkgs/type_spec/emit_io_ts.py +1 -1
- pkgs/type_spec/emit_open_api.py +127 -36
- pkgs/type_spec/emit_open_api_util.py +5 -6
- pkgs/type_spec/emit_python.py +329 -121
- pkgs/type_spec/emit_typescript.py +117 -256
- pkgs/type_spec/emit_typescript_util.py +291 -2
- pkgs/type_spec/load_types.py +18 -4
- pkgs/type_spec/non_discriminated_union_exceptions.py +14 -0
- pkgs/type_spec/open_api_util.py +29 -4
- pkgs/type_spec/parts/base.py.prepart +13 -10
- pkgs/type_spec/parts/base.ts.prepart +4 -0
- pkgs/type_spec/type_info/__main__.py +3 -1
- pkgs/type_spec/type_info/emit_type_info.py +124 -29
- pkgs/type_spec/ui_entry_actions/__init__.py +4 -0
- pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +308 -0
- pkgs/type_spec/util.py +4 -4
- pkgs/type_spec/value_spec/__main__.py +26 -9
- pkgs/type_spec/value_spec/convert_type.py +21 -1
- pkgs/type_spec/value_spec/emit_python.py +25 -7
- pkgs/type_spec/value_spec/types.py +1 -1
- uncountable/core/async_batch.py +1 -1
- uncountable/core/client.py +142 -39
- uncountable/core/environment.py +41 -0
- uncountable/core/file_upload.py +52 -18
- uncountable/integration/cli.py +142 -0
- uncountable/integration/construct_client.py +8 -8
- uncountable/integration/cron.py +11 -37
- uncountable/integration/db/connect.py +12 -2
- uncountable/integration/db/session.py +25 -0
- uncountable/integration/entrypoint.py +8 -37
- uncountable/integration/executors/executors.py +125 -2
- uncountable/integration/executors/generic_upload_executor.py +87 -29
- uncountable/integration/executors/script_executor.py +3 -3
- uncountable/integration/http_server/__init__.py +5 -0
- uncountable/integration/http_server/types.py +69 -0
- uncountable/integration/job.py +242 -12
- uncountable/integration/queue_runner/__init__.py +0 -0
- uncountable/integration/queue_runner/command_server/__init__.py +28 -0
- uncountable/integration/queue_runner/command_server/command_client.py +133 -0
- uncountable/integration/queue_runner/command_server/command_server.py +142 -0
- uncountable/integration/queue_runner/command_server/constants.py +4 -0
- uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server.proto +58 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +57 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +114 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +264 -0
- uncountable/integration/queue_runner/command_server/types.py +75 -0
- uncountable/integration/queue_runner/datastore/__init__.py +3 -0
- uncountable/integration/queue_runner/datastore/datastore_sqlite.py +250 -0
- uncountable/integration/queue_runner/datastore/interface.py +29 -0
- uncountable/integration/queue_runner/datastore/model.py +24 -0
- uncountable/integration/queue_runner/job_scheduler.py +200 -0
- uncountable/integration/queue_runner/queue_runner.py +34 -0
- uncountable/integration/queue_runner/types.py +7 -0
- uncountable/integration/queue_runner/worker.py +116 -0
- uncountable/integration/scan_profiles.py +67 -0
- uncountable/integration/scheduler.py +199 -0
- uncountable/integration/secret_retrieval/retrieve_secret.py +26 -4
- uncountable/integration/server.py +94 -69
- uncountable/integration/telemetry.py +150 -34
- uncountable/integration/webhook_server/entrypoint.py +97 -0
- uncountable/types/__init__.py +78 -1
- uncountable/types/api/batch/execute_batch.py +13 -6
- uncountable/types/api/batch/execute_batch_load_async.py +9 -3
- uncountable/types/api/chemical/convert_chemical_formats.py +17 -5
- uncountable/types/api/condition_parameters/__init__.py +1 -0
- uncountable/types/api/condition_parameters/upsert_condition_match.py +72 -0
- uncountable/types/api/entity/create_entities.py +19 -7
- uncountable/types/api/entity/create_entity.py +17 -8
- uncountable/types/api/entity/create_or_update_entity.py +48 -0
- uncountable/types/api/entity/export_entities.py +59 -0
- uncountable/types/api/entity/get_entities_data.py +13 -4
- uncountable/types/api/entity/grant_entity_permissions.py +48 -0
- uncountable/types/api/entity/list_aggregate.py +79 -0
- uncountable/types/api/entity/list_entities.py +42 -10
- uncountable/types/api/entity/lock_entity.py +11 -4
- uncountable/types/api/entity/lookup_entity.py +116 -0
- uncountable/types/api/entity/resolve_entity_ids.py +15 -6
- uncountable/types/api/entity/set_entity_field_values.py +44 -0
- uncountable/types/api/entity/set_values.py +10 -3
- uncountable/types/api/entity/transition_entity_phase.py +22 -7
- uncountable/types/api/entity/unlock_entity.py +10 -3
- uncountable/types/api/equipment/associate_equipment_input.py +9 -3
- uncountable/types/api/field_options/upsert_field_options.py +17 -7
- uncountable/types/api/files/__init__.py +1 -0
- uncountable/types/api/files/download_file.py +77 -0
- uncountable/types/api/id_source/list_id_source.py +16 -7
- uncountable/types/api/id_source/match_id_source.py +14 -5
- uncountable/types/api/input_groups/get_input_group_names.py +13 -4
- uncountable/types/api/inputs/create_inputs.py +23 -9
- uncountable/types/api/inputs/get_input_data.py +30 -12
- uncountable/types/api/inputs/get_input_names.py +16 -7
- uncountable/types/api/inputs/get_inputs_data.py +25 -7
- uncountable/types/api/inputs/set_input_attribute_values.py +12 -6
- uncountable/types/api/inputs/set_input_category.py +12 -5
- uncountable/types/api/inputs/set_input_subcategories.py +10 -3
- uncountable/types/api/inputs/set_intermediate_type.py +11 -4
- uncountable/types/api/integrations/__init__.py +1 -0
- uncountable/types/api/integrations/publish_realtime_data.py +41 -0
- uncountable/types/api/integrations/push_notification.py +49 -0
- uncountable/types/api/integrations/register_sockets_token.py +41 -0
- uncountable/types/api/listing/__init__.py +1 -0
- uncountable/types/api/listing/fetch_listing.py +58 -0
- uncountable/types/api/material_families/update_entity_material_families.py +10 -4
- uncountable/types/api/notebooks/__init__.py +1 -0
- uncountable/types/api/notebooks/add_notebook_content.py +119 -0
- uncountable/types/api/outputs/get_output_data.py +28 -13
- uncountable/types/api/outputs/get_output_names.py +15 -6
- uncountable/types/api/outputs/get_output_organization.py +173 -0
- uncountable/types/api/outputs/resolve_output_conditions.py +20 -8
- uncountable/types/api/permissions/set_core_permissions.py +26 -10
- uncountable/types/api/project/get_projects.py +16 -7
- uncountable/types/api/project/get_projects_data.py +17 -8
- uncountable/types/api/recipe_links/create_recipe_link.py +12 -5
- uncountable/types/api/recipe_links/remove_recipe_link.py +11 -4
- uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +16 -7
- uncountable/types/api/recipes/add_recipe_to_project.py +10 -3
- uncountable/types/api/recipes/add_time_series_data.py +64 -0
- uncountable/types/api/recipes/archive_recipes.py +11 -4
- uncountable/types/api/recipes/associate_recipe_as_input.py +12 -5
- uncountable/types/api/recipes/associate_recipe_as_lot.py +10 -3
- uncountable/types/api/recipes/clear_recipe_outputs.py +42 -0
- uncountable/types/api/recipes/create_mix_order.py +44 -0
- uncountable/types/api/recipes/create_recipe.py +15 -9
- uncountable/types/api/recipes/create_recipes.py +21 -9
- uncountable/types/api/recipes/disassociate_recipe_as_input.py +10 -3
- uncountable/types/api/recipes/edit_recipe_inputs.py +134 -22
- uncountable/types/api/recipes/get_column_calculation_values.py +57 -0
- uncountable/types/api/recipes/get_curve.py +11 -5
- uncountable/types/api/recipes/get_recipe_calculations.py +13 -7
- uncountable/types/api/recipes/get_recipe_links.py +10 -4
- uncountable/types/api/recipes/get_recipe_names.py +13 -4
- uncountable/types/api/recipes/get_recipe_output_metadata.py +12 -6
- uncountable/types/api/recipes/get_recipes_data.py +87 -33
- uncountable/types/api/recipes/lock_recipes.py +19 -8
- uncountable/types/api/recipes/remove_recipe_from_project.py +10 -3
- uncountable/types/api/recipes/set_recipe_inputs.py +16 -10
- uncountable/types/api/recipes/set_recipe_metadata.py +10 -3
- uncountable/types/api/recipes/set_recipe_output_annotations.py +24 -12
- uncountable/types/api/recipes/set_recipe_output_file.py +55 -0
- uncountable/types/api/recipes/set_recipe_outputs.py +35 -12
- uncountable/types/api/recipes/set_recipe_tags.py +26 -9
- uncountable/types/api/recipes/set_recipe_total.py +59 -0
- uncountable/types/api/recipes/unarchive_recipes.py +10 -3
- uncountable/types/api/recipes/unlock_recipes.py +14 -6
- uncountable/types/api/runsheet/__init__.py +1 -0
- uncountable/types/api/runsheet/complete_async_upload.py +41 -0
- uncountable/types/api/triggers/run_trigger.py +11 -4
- uncountable/types/api/uploader/complete_async_parse.py +46 -0
- uncountable/types/api/uploader/invoke_uploader.py +13 -6
- uncountable/types/api/user/__init__.py +1 -0
- uncountable/types/api/user/get_current_user_info.py +40 -0
- uncountable/types/async_batch.py +2 -1
- uncountable/types/async_batch_processor.py +618 -18
- uncountable/types/async_batch_t.py +54 -7
- uncountable/types/async_jobs.py +8 -0
- uncountable/types/async_jobs_t.py +52 -0
- uncountable/types/auth_retrieval.py +11 -0
- uncountable/types/auth_retrieval_t.py +75 -0
- uncountable/types/base.py +0 -1
- uncountable/types/base_t.py +13 -11
- uncountable/types/calculations.py +0 -1
- uncountable/types/calculations_t.py +5 -2
- uncountable/types/chemical_structure.py +0 -1
- uncountable/types/chemical_structure_t.py +6 -5
- uncountable/types/client_base.py +751 -70
- uncountable/types/client_config.py +1 -1
- uncountable/types/client_config_t.py +17 -3
- uncountable/types/curves.py +0 -1
- uncountable/types/curves_t.py +10 -7
- uncountable/types/data.py +12 -0
- uncountable/types/data_t.py +103 -0
- uncountable/types/entity.py +4 -1
- uncountable/types/entity_t.py +125 -7
- uncountable/types/experiment_groups.py +0 -1
- uncountable/types/experiment_groups_t.py +5 -2
- uncountable/types/exports.py +8 -0
- uncountable/types/exports_t.py +34 -0
- uncountable/types/field_values.py +19 -1
- uncountable/types/field_values_t.py +246 -9
- uncountable/types/fields.py +0 -1
- uncountable/types/fields_t.py +5 -2
- uncountable/types/generic_upload.py +6 -1
- uncountable/types/generic_upload_t.py +88 -9
- uncountable/types/id_source.py +0 -1
- uncountable/types/id_source_t.py +26 -7
- uncountable/types/identifier.py +0 -1
- uncountable/types/identifier_t.py +13 -5
- uncountable/types/input_attributes.py +0 -1
- uncountable/types/input_attributes_t.py +4 -4
- uncountable/types/inputs.py +1 -1
- uncountable/types/inputs_t.py +24 -4
- uncountable/types/integration_server.py +8 -0
- uncountable/types/integration_server_t.py +46 -0
- uncountable/types/integration_session.py +10 -0
- uncountable/types/integration_session_t.py +60 -0
- uncountable/types/integrations.py +10 -0
- uncountable/types/integrations_t.py +62 -0
- uncountable/types/job_definition.py +4 -6
- uncountable/types/job_definition_t.py +96 -65
- uncountable/types/listing.py +9 -0
- uncountable/types/listing_t.py +51 -0
- uncountable/types/notices.py +8 -0
- uncountable/types/notices_t.py +37 -0
- uncountable/types/notifications.py +11 -0
- uncountable/types/notifications_t.py +74 -0
- uncountable/types/outputs.py +0 -1
- uncountable/types/outputs_t.py +6 -3
- uncountable/types/overrides.py +9 -0
- uncountable/types/overrides_t.py +49 -0
- uncountable/types/permissions.py +0 -1
- uncountable/types/permissions_t.py +1 -2
- uncountable/types/phases.py +0 -1
- uncountable/types/phases_t.py +5 -2
- uncountable/types/post_base.py +0 -1
- uncountable/types/post_base_t.py +1 -2
- uncountable/types/queued_job.py +17 -0
- uncountable/types/queued_job_t.py +140 -0
- uncountable/types/recipe_identifiers.py +0 -1
- uncountable/types/recipe_identifiers_t.py +21 -8
- uncountable/types/recipe_inputs.py +0 -1
- uncountable/types/recipe_inputs_t.py +1 -2
- uncountable/types/recipe_links.py +0 -1
- uncountable/types/recipe_links_t.py +7 -4
- uncountable/types/recipe_metadata.py +0 -1
- uncountable/types/recipe_metadata_t.py +14 -9
- uncountable/types/recipe_output_metadata.py +0 -1
- uncountable/types/recipe_output_metadata_t.py +5 -2
- uncountable/types/recipe_tags.py +0 -1
- uncountable/types/recipe_tags_t.py +5 -2
- uncountable/types/recipe_workflow_steps.py +0 -1
- uncountable/types/recipe_workflow_steps_t.py +14 -7
- uncountable/types/recipes.py +0 -1
- uncountable/types/recipes_t.py +6 -2
- uncountable/types/response.py +0 -1
- uncountable/types/response_t.py +3 -2
- uncountable/types/secret_retrieval.py +0 -1
- uncountable/types/secret_retrieval_t.py +13 -7
- uncountable/types/sockets.py +20 -0
- uncountable/types/sockets_t.py +169 -0
- uncountable/types/structured_filters.py +25 -0
- uncountable/types/structured_filters_t.py +248 -0
- uncountable/types/units.py +0 -1
- uncountable/types/units_t.py +5 -2
- uncountable/types/uploader.py +24 -0
- uncountable/types/uploader_t.py +222 -0
- uncountable/types/users.py +0 -1
- uncountable/types/users_t.py +5 -2
- uncountable/types/webhook_job.py +9 -0
- uncountable/types/webhook_job_t.py +48 -0
- uncountable/types/workflows.py +0 -1
- uncountable/types/workflows_t.py +10 -4
- uncountablepythonsdk-0.0.131.dist-info/METADATA +64 -0
- uncountablepythonsdk-0.0.131.dist-info/RECORD +363 -0
- {UncountablePythonSDK-0.0.52.dist-info → uncountablepythonsdk-0.0.131.dist-info}/WHEEL +1 -1
- UncountablePythonSDK-0.0.52.dist-info/METADATA +0 -56
- UncountablePythonSDK-0.0.52.dist-info/RECORD +0 -246
- docs/quickstart.md +0 -19
- uncountable/core/version.py +0 -11
- {UncountablePythonSDK-0.0.52.dist-info → uncountablepythonsdk-0.0.131.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# ruff: noqa: E402 Q003
|
|
3
|
+
# fmt: off
|
|
4
|
+
# isort: skip_file
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
import typing # noqa: F401
|
|
7
|
+
import datetime # noqa: F401
|
|
8
|
+
from decimal import Decimal # noqa: F401
|
|
9
|
+
from enum import StrEnum
|
|
10
|
+
import dataclasses
|
|
11
|
+
from pkgs.serialization import serial_class
|
|
12
|
+
from . import base_t
|
|
13
|
+
|
|
14
|
+
__all__: list[str] = [
|
|
15
|
+
"ExportType",
|
|
16
|
+
"ListingExportUserTimezone",
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
21
|
+
@serial_class(
|
|
22
|
+
named_type_path="sdk.exports.ListingExportUserTimezone",
|
|
23
|
+
)
|
|
24
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
25
|
+
class ListingExportUserTimezone:
|
|
26
|
+
timezone_name: str
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
30
|
+
class ExportType(StrEnum):
|
|
31
|
+
EXCEL = "excel"
|
|
32
|
+
PDF = "pdf"
|
|
33
|
+
JSON = "json"
|
|
34
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# flake8: noqa: F821
|
|
2
1
|
# ruff: noqa: E402 Q003
|
|
3
2
|
# fmt: off
|
|
4
3
|
# isort: skip_file
|
|
@@ -8,4 +7,23 @@ from .field_values_t import FieldRefNameValue as FieldRefNameValue
|
|
|
8
7
|
from .field_values_t import FieldRefIdNameValue as FieldRefIdNameValue
|
|
9
8
|
from .field_values_t import ArgumentValueRefName as ArgumentValueRefName
|
|
10
9
|
from .field_values_t import ArgumentValueId as ArgumentValueId
|
|
10
|
+
from .field_values_t import FieldValueType as FieldValueType
|
|
11
|
+
from .field_values_t import FieldValueBase as FieldValueBase
|
|
12
|
+
from .field_values_t import FieldValueFiles as FieldValueFiles
|
|
13
|
+
from .field_values_t import ValueResolution as ValueResolution
|
|
14
|
+
from .field_values_t import FieldValueFieldOption as FieldValueFieldOption
|
|
15
|
+
from .field_values_t import FieldValueFieldOptions as FieldValueFieldOptions
|
|
16
|
+
from .field_values_t import FieldValueId as FieldValueId
|
|
17
|
+
from .field_values_t import FieldValueIds as FieldValueIds
|
|
18
|
+
from .field_values_t import FieldValueText as FieldValueText
|
|
19
|
+
from .field_values_t import FieldValueTexts as FieldValueTexts
|
|
20
|
+
from .field_values_t import FieldValueBoolean as FieldValueBoolean
|
|
21
|
+
from .field_values_t import FieldValueNumeric as FieldValueNumeric
|
|
22
|
+
from .field_values_t import FieldValueBatchReference as FieldValueBatchReference
|
|
23
|
+
from .field_values_t import FieldValueNull as FieldValueNull
|
|
24
|
+
from .field_values_t import FieldValueNotes as FieldValueNotes
|
|
25
|
+
from .field_values_t import FieldValueDate as FieldValueDate
|
|
26
|
+
from .field_values_t import FieldValueDatetime as FieldValueDatetime
|
|
27
|
+
from .field_values_t import FieldValue as FieldValue
|
|
28
|
+
from .field_values_t import FieldArgumentValue as FieldArgumentValue
|
|
11
29
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
# flake8: noqa: F821
|
|
3
2
|
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
@@ -7,59 +6,297 @@ from __future__ import annotations
|
|
|
7
6
|
import typing # noqa: F401
|
|
8
7
|
import datetime # noqa: F401
|
|
9
8
|
from decimal import Decimal # noqa: F401
|
|
9
|
+
from enum import StrEnum
|
|
10
10
|
import dataclasses
|
|
11
11
|
from pkgs.serialization import serial_class
|
|
12
|
+
from pkgs.serialization import serial_union_annotation
|
|
12
13
|
from . import base_t
|
|
14
|
+
from . import entity_t
|
|
15
|
+
from . import identifier_t
|
|
13
16
|
|
|
14
17
|
__all__: list[str] = [
|
|
15
18
|
"ArgumentValueId",
|
|
16
19
|
"ArgumentValueRefName",
|
|
20
|
+
"FieldArgumentValue",
|
|
17
21
|
"FieldRefIdNameValue",
|
|
18
22
|
"FieldRefNameValue",
|
|
23
|
+
"FieldValue",
|
|
24
|
+
"FieldValueBase",
|
|
25
|
+
"FieldValueBatchReference",
|
|
26
|
+
"FieldValueBoolean",
|
|
27
|
+
"FieldValueDate",
|
|
28
|
+
"FieldValueDatetime",
|
|
29
|
+
"FieldValueFieldOption",
|
|
30
|
+
"FieldValueFieldOptions",
|
|
31
|
+
"FieldValueFiles",
|
|
32
|
+
"FieldValueId",
|
|
33
|
+
"FieldValueIds",
|
|
34
|
+
"FieldValueNotes",
|
|
35
|
+
"FieldValueNull",
|
|
36
|
+
"FieldValueNumeric",
|
|
37
|
+
"FieldValueText",
|
|
38
|
+
"FieldValueTexts",
|
|
39
|
+
"FieldValueType",
|
|
40
|
+
"ValueResolution",
|
|
19
41
|
]
|
|
20
42
|
|
|
21
43
|
|
|
22
44
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
23
45
|
@serial_class(
|
|
46
|
+
named_type_path="sdk.field_values.FieldRefNameValue",
|
|
24
47
|
unconverted_values={"value"},
|
|
25
48
|
)
|
|
26
|
-
@dataclasses.dataclass(kw_only=True)
|
|
49
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
27
50
|
class FieldRefNameValue:
|
|
28
51
|
field_ref_name: str
|
|
29
52
|
value: base_t.JsonValue
|
|
30
|
-
row_index:
|
|
53
|
+
row_index: int | None = None
|
|
31
54
|
|
|
32
55
|
|
|
33
56
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
34
57
|
@serial_class(
|
|
58
|
+
named_type_path="sdk.field_values.FieldRefIdNameValue",
|
|
35
59
|
unconverted_values={"value"},
|
|
36
60
|
)
|
|
37
|
-
@dataclasses.dataclass(kw_only=True)
|
|
61
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
38
62
|
class FieldRefIdNameValue:
|
|
39
63
|
field_id: base_t.ObjectId
|
|
40
64
|
field_ref_name: str
|
|
41
65
|
value: base_t.JsonValue
|
|
42
|
-
row_index:
|
|
66
|
+
row_index: int | None = None
|
|
43
67
|
|
|
44
68
|
|
|
45
69
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
46
70
|
@serial_class(
|
|
71
|
+
named_type_path="sdk.field_values.ArgumentValueRefName",
|
|
47
72
|
unconverted_values={"value"},
|
|
48
73
|
)
|
|
49
|
-
@dataclasses.dataclass(kw_only=True)
|
|
74
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
50
75
|
class ArgumentValueRefName:
|
|
51
76
|
field_ref_name: str
|
|
52
77
|
value: base_t.JsonValue
|
|
53
|
-
row_index:
|
|
78
|
+
row_index: int | None = None
|
|
54
79
|
|
|
55
80
|
|
|
56
81
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
57
82
|
@serial_class(
|
|
83
|
+
named_type_path="sdk.field_values.ArgumentValueId",
|
|
58
84
|
unconverted_values={"value"},
|
|
59
85
|
)
|
|
60
|
-
@dataclasses.dataclass(kw_only=True)
|
|
86
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
61
87
|
class ArgumentValueId:
|
|
62
88
|
field_id: base_t.ObjectId
|
|
63
89
|
value: base_t.JsonValue
|
|
64
|
-
row_index:
|
|
90
|
+
row_index: int | None = None
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
94
|
+
class FieldValueType(StrEnum):
|
|
95
|
+
FILES = "files"
|
|
96
|
+
TEXT = "text"
|
|
97
|
+
TEXTS = "texts"
|
|
98
|
+
ID = "id"
|
|
99
|
+
IDS = "ids"
|
|
100
|
+
BOOLEAN = "boolean"
|
|
101
|
+
NUMERIC = "numeric"
|
|
102
|
+
BATCH_REFERENCE = "batch_reference"
|
|
103
|
+
FIELD_OPTION = "field_option"
|
|
104
|
+
FIELD_OPTIONS = "field_options"
|
|
105
|
+
NULL_VALUE = "null_value"
|
|
106
|
+
NOTES = "notes"
|
|
107
|
+
DATE = "date"
|
|
108
|
+
DATETIME = "datetime"
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
112
|
+
@serial_class(
|
|
113
|
+
named_type_path="sdk.field_values.FieldValueBase",
|
|
114
|
+
)
|
|
115
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
116
|
+
class FieldValueBase:
|
|
117
|
+
type: FieldValueType
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
121
|
+
@serial_class(
|
|
122
|
+
named_type_path="sdk.field_values.FieldValueFiles",
|
|
123
|
+
parse_require={"type"},
|
|
124
|
+
)
|
|
125
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
126
|
+
class FieldValueFiles(FieldValueBase):
|
|
127
|
+
type: typing.Literal[FieldValueType.FILES] = FieldValueType.FILES
|
|
128
|
+
file_ids: list[base_t.ObjectId]
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
132
|
+
class ValueResolution(StrEnum):
|
|
133
|
+
DIRECT = "direct"
|
|
134
|
+
LABEL = "label"
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
138
|
+
@serial_class(
|
|
139
|
+
named_type_path="sdk.field_values.FieldValueFieldOption",
|
|
140
|
+
parse_require={"type"},
|
|
141
|
+
)
|
|
142
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
143
|
+
class FieldValueFieldOption(FieldValueBase):
|
|
144
|
+
type: typing.Literal[FieldValueType.FIELD_OPTION] = FieldValueType.FIELD_OPTION
|
|
145
|
+
value: str
|
|
146
|
+
value_resolution: ValueResolution = ValueResolution.DIRECT
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
150
|
+
@serial_class(
|
|
151
|
+
named_type_path="sdk.field_values.FieldValueFieldOptions",
|
|
152
|
+
parse_require={"type"},
|
|
153
|
+
)
|
|
154
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
155
|
+
class FieldValueFieldOptions(FieldValueBase):
|
|
156
|
+
type: typing.Literal[FieldValueType.FIELD_OPTIONS] = FieldValueType.FIELD_OPTIONS
|
|
157
|
+
value: list[str]
|
|
158
|
+
value_resolution: ValueResolution = ValueResolution.DIRECT
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
162
|
+
@serial_class(
|
|
163
|
+
named_type_path="sdk.field_values.FieldValueId",
|
|
164
|
+
parse_require={"type"},
|
|
165
|
+
)
|
|
166
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
167
|
+
class FieldValueId(FieldValueBase):
|
|
168
|
+
type: typing.Literal[FieldValueType.ID] = FieldValueType.ID
|
|
169
|
+
entity_type: entity_t.EntityType
|
|
170
|
+
identifier_key: identifier_t.IdentifierKey
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
174
|
+
@serial_class(
|
|
175
|
+
named_type_path="sdk.field_values.FieldValueIds",
|
|
176
|
+
parse_require={"type"},
|
|
177
|
+
)
|
|
178
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
179
|
+
class FieldValueIds(FieldValueBase):
|
|
180
|
+
type: typing.Literal[FieldValueType.IDS] = FieldValueType.IDS
|
|
181
|
+
entity_type: entity_t.EntityType
|
|
182
|
+
identifier_keys: list[identifier_t.IdentifierKey]
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
186
|
+
@serial_class(
|
|
187
|
+
named_type_path="sdk.field_values.FieldValueText",
|
|
188
|
+
parse_require={"type"},
|
|
189
|
+
)
|
|
190
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
191
|
+
class FieldValueText(FieldValueBase):
|
|
192
|
+
type: typing.Literal[FieldValueType.TEXT] = FieldValueType.TEXT
|
|
193
|
+
value: str
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
197
|
+
@serial_class(
|
|
198
|
+
named_type_path="sdk.field_values.FieldValueTexts",
|
|
199
|
+
parse_require={"type"},
|
|
200
|
+
)
|
|
201
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
202
|
+
class FieldValueTexts(FieldValueBase):
|
|
203
|
+
type: typing.Literal[FieldValueType.TEXTS] = FieldValueType.TEXTS
|
|
204
|
+
value: list[str]
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
208
|
+
@serial_class(
|
|
209
|
+
named_type_path="sdk.field_values.FieldValueBoolean",
|
|
210
|
+
parse_require={"type"},
|
|
211
|
+
)
|
|
212
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
213
|
+
class FieldValueBoolean(FieldValueBase):
|
|
214
|
+
type: typing.Literal[FieldValueType.BOOLEAN] = FieldValueType.BOOLEAN
|
|
215
|
+
value: bool
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
219
|
+
@serial_class(
|
|
220
|
+
named_type_path="sdk.field_values.FieldValueNumeric",
|
|
221
|
+
to_string_values={"value"},
|
|
222
|
+
parse_require={"type"},
|
|
223
|
+
)
|
|
224
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
225
|
+
class FieldValueNumeric(FieldValueBase):
|
|
226
|
+
type: typing.Literal[FieldValueType.NUMERIC] = FieldValueType.NUMERIC
|
|
227
|
+
value: Decimal
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
231
|
+
@serial_class(
|
|
232
|
+
named_type_path="sdk.field_values.FieldValueBatchReference",
|
|
233
|
+
parse_require={"type"},
|
|
234
|
+
)
|
|
235
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
236
|
+
class FieldValueBatchReference(FieldValueBase):
|
|
237
|
+
type: typing.Literal[FieldValueType.BATCH_REFERENCE] = FieldValueType.BATCH_REFERENCE
|
|
238
|
+
reference_key: identifier_t.IdentifierKeyBatchReference
|
|
239
|
+
data_key: str
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
243
|
+
@serial_class(
|
|
244
|
+
named_type_path="sdk.field_values.FieldValueNull",
|
|
245
|
+
parse_require={"type"},
|
|
246
|
+
)
|
|
247
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
248
|
+
class FieldValueNull(FieldValueBase):
|
|
249
|
+
type: typing.Literal[FieldValueType.NULL_VALUE] = FieldValueType.NULL_VALUE
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
253
|
+
@serial_class(
|
|
254
|
+
named_type_path="sdk.field_values.FieldValueNotes",
|
|
255
|
+
parse_require={"type"},
|
|
256
|
+
)
|
|
257
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
258
|
+
class FieldValueNotes(FieldValueBase):
|
|
259
|
+
type: typing.Literal[FieldValueType.NOTES] = FieldValueType.NOTES
|
|
260
|
+
value: str
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
264
|
+
@serial_class(
|
|
265
|
+
named_type_path="sdk.field_values.FieldValueDate",
|
|
266
|
+
parse_require={"type"},
|
|
267
|
+
)
|
|
268
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
269
|
+
class FieldValueDate(FieldValueBase):
|
|
270
|
+
type: typing.Literal[FieldValueType.DATE] = FieldValueType.DATE
|
|
271
|
+
value: datetime.date
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
275
|
+
@serial_class(
|
|
276
|
+
named_type_path="sdk.field_values.FieldValueDatetime",
|
|
277
|
+
parse_require={"type"},
|
|
278
|
+
)
|
|
279
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
280
|
+
class FieldValueDatetime(FieldValueBase):
|
|
281
|
+
type: typing.Literal[FieldValueType.DATETIME] = FieldValueType.DATETIME
|
|
282
|
+
value: datetime.datetime
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
286
|
+
FieldValue = typing.Annotated[
|
|
287
|
+
FieldValueFiles | FieldValueId | FieldValueIds | FieldValueText | FieldValueTexts | FieldValueBoolean | FieldValueNumeric | FieldValueBatchReference | FieldValueFieldOption | FieldValueFieldOptions | FieldValueNull | FieldValueNotes | FieldValueDate | FieldValueDatetime,
|
|
288
|
+
serial_union_annotation(
|
|
289
|
+
named_type_path="sdk.field_values.FieldValue",
|
|
290
|
+
),
|
|
291
|
+
]
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
295
|
+
@serial_class(
|
|
296
|
+
named_type_path="sdk.field_values.FieldArgumentValue",
|
|
297
|
+
)
|
|
298
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
299
|
+
class FieldArgumentValue:
|
|
300
|
+
field_key: identifier_t.IdentifierKey
|
|
301
|
+
value: FieldValue
|
|
65
302
|
# DO NOT MODIFY -- This file is generated by type_spec
|
uncountable/types/fields.py
CHANGED
uncountable/types/fields_t.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
# flake8: noqa: F821
|
|
3
2
|
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
@@ -8,6 +7,7 @@ import typing # noqa: F401
|
|
|
8
7
|
import datetime # noqa: F401
|
|
9
8
|
from decimal import Decimal # noqa: F401
|
|
10
9
|
import dataclasses
|
|
10
|
+
from pkgs.serialization import serial_class
|
|
11
11
|
from . import base_t
|
|
12
12
|
|
|
13
13
|
__all__: list[str] = [
|
|
@@ -16,7 +16,10 @@ __all__: list[str] = [
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
19
|
-
@
|
|
19
|
+
@serial_class(
|
|
20
|
+
named_type_path="sdk.fields.Field",
|
|
21
|
+
)
|
|
22
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
20
23
|
class Field:
|
|
21
24
|
id: base_t.ObjectId
|
|
22
25
|
name: str
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
# flake8: noqa: F821
|
|
2
1
|
# ruff: noqa: E402 Q003
|
|
3
2
|
# fmt: off
|
|
4
3
|
# isort: skip_file
|
|
5
4
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
6
5
|
# Kept only for SDK backwards compatibility
|
|
7
6
|
from .generic_upload_t import GenericRemoteDirectoryScope as GenericRemoteDirectoryScope
|
|
7
|
+
from .generic_upload_t import UploadDestinationType as UploadDestinationType
|
|
8
|
+
from .generic_upload_t import UploadDestinationBase as UploadDestinationBase
|
|
9
|
+
from .generic_upload_t import UploadDestinationProject as UploadDestinationProject
|
|
10
|
+
from .generic_upload_t import UploadDestinationMaterialFamily as UploadDestinationMaterialFamily
|
|
11
|
+
from .generic_upload_t import UploadDestinationRecipe as UploadDestinationRecipe
|
|
12
|
+
from .generic_upload_t import UploadDestination as UploadDestination
|
|
8
13
|
from .generic_upload_t import GenericUploadStrategy as GenericUploadStrategy
|
|
9
14
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
# flake8: noqa: F821
|
|
3
2
|
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
@@ -7,34 +6,114 @@ from __future__ import annotations
|
|
|
7
6
|
import typing # noqa: F401
|
|
8
7
|
import datetime # noqa: F401
|
|
9
8
|
from decimal import Decimal # noqa: F401
|
|
9
|
+
from enum import StrEnum
|
|
10
10
|
import dataclasses
|
|
11
|
+
from pkgs.serialization import serial_class
|
|
12
|
+
from pkgs.serialization import serial_union_annotation
|
|
13
|
+
from . import base_t
|
|
11
14
|
from . import identifier_t
|
|
12
15
|
|
|
13
16
|
__all__: list[str] = [
|
|
14
17
|
"GenericRemoteDirectoryScope",
|
|
15
18
|
"GenericUploadStrategy",
|
|
19
|
+
"UploadDestination",
|
|
20
|
+
"UploadDestinationBase",
|
|
21
|
+
"UploadDestinationMaterialFamily",
|
|
22
|
+
"UploadDestinationProject",
|
|
23
|
+
"UploadDestinationRecipe",
|
|
24
|
+
"UploadDestinationType",
|
|
16
25
|
]
|
|
17
26
|
|
|
18
27
|
|
|
19
28
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
20
|
-
@
|
|
29
|
+
@serial_class(
|
|
30
|
+
named_type_path="sdk.generic_upload.GenericRemoteDirectoryScope",
|
|
31
|
+
)
|
|
32
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
21
33
|
class GenericRemoteDirectoryScope:
|
|
22
34
|
src_path: str
|
|
23
35
|
success_archive_path: str
|
|
24
36
|
failure_archive_path: str
|
|
25
37
|
recursive: bool
|
|
26
38
|
prepend_date_on_archive: bool
|
|
27
|
-
valid_file_extensions: list[str]
|
|
28
|
-
filename_regex:
|
|
29
|
-
max_files:
|
|
30
|
-
detection_keyword:
|
|
31
|
-
delimiter:
|
|
39
|
+
valid_file_extensions: list[str] | None = None
|
|
40
|
+
filename_regex: str | None = None
|
|
41
|
+
max_files: int | None = None
|
|
42
|
+
detection_keyword: str | None = None
|
|
43
|
+
delimiter: str | None = None
|
|
32
44
|
|
|
33
45
|
|
|
34
46
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
35
|
-
|
|
47
|
+
class UploadDestinationType(StrEnum):
|
|
48
|
+
PROJECT = "project"
|
|
49
|
+
MATERIAL_FAMILY = "material_family"
|
|
50
|
+
RECIPE = "recipe"
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
54
|
+
@serial_class(
|
|
55
|
+
named_type_path="sdk.generic_upload.UploadDestinationBase",
|
|
56
|
+
)
|
|
57
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
58
|
+
class UploadDestinationBase:
|
|
59
|
+
type: UploadDestinationType
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
63
|
+
@serial_class(
|
|
64
|
+
named_type_path="sdk.generic_upload.UploadDestinationProject",
|
|
65
|
+
parse_require={"type"},
|
|
66
|
+
)
|
|
67
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
68
|
+
class UploadDestinationProject(UploadDestinationBase):
|
|
69
|
+
type: typing.Literal[UploadDestinationType.PROJECT] = UploadDestinationType.PROJECT
|
|
70
|
+
project_key: identifier_t.IdentifierKey
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
74
|
+
@serial_class(
|
|
75
|
+
named_type_path="sdk.generic_upload.UploadDestinationMaterialFamily",
|
|
76
|
+
parse_require={"type"},
|
|
77
|
+
)
|
|
78
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
79
|
+
class UploadDestinationMaterialFamily(UploadDestinationBase):
|
|
80
|
+
type: typing.Literal[UploadDestinationType.MATERIAL_FAMILY] = UploadDestinationType.MATERIAL_FAMILY
|
|
81
|
+
material_family_key: identifier_t.IdentifierKey
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
85
|
+
@serial_class(
|
|
86
|
+
named_type_path="sdk.generic_upload.UploadDestinationRecipe",
|
|
87
|
+
parse_require={"type"},
|
|
88
|
+
)
|
|
89
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
90
|
+
class UploadDestinationRecipe(UploadDestinationBase):
|
|
91
|
+
type: typing.Literal[UploadDestinationType.RECIPE] = UploadDestinationType.RECIPE
|
|
92
|
+
recipe_key: identifier_t.IdentifierKey
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
96
|
+
UploadDestination = typing.Annotated[
|
|
97
|
+
UploadDestinationProject | UploadDestinationMaterialFamily | UploadDestinationRecipe,
|
|
98
|
+
serial_union_annotation(
|
|
99
|
+
named_type_path="sdk.generic_upload.UploadDestination",
|
|
100
|
+
discriminator="type",
|
|
101
|
+
discriminator_map={
|
|
102
|
+
"project": UploadDestinationProject,
|
|
103
|
+
"material_family": UploadDestinationMaterialFamily,
|
|
104
|
+
"recipe": UploadDestinationRecipe,
|
|
105
|
+
},
|
|
106
|
+
),
|
|
107
|
+
]
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
111
|
+
@serial_class(
|
|
112
|
+
named_type_path="sdk.generic_upload.GenericUploadStrategy",
|
|
113
|
+
)
|
|
114
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
36
115
|
class GenericUploadStrategy:
|
|
37
116
|
uploader_key: identifier_t.IdentifierKey
|
|
38
|
-
|
|
117
|
+
destinations: list[UploadDestination]
|
|
39
118
|
skip_moving_files: bool = False
|
|
40
119
|
# DO NOT MODIFY -- This file is generated by type_spec
|
uncountable/types/id_source.py
CHANGED
uncountable/types/id_source_t.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
# flake8: noqa: F821
|
|
3
2
|
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
@@ -8,6 +7,9 @@ import typing # noqa: F401
|
|
|
8
7
|
import datetime # noqa: F401
|
|
9
8
|
from decimal import Decimal # noqa: F401
|
|
10
9
|
import dataclasses
|
|
10
|
+
from pkgs.serialization import serial_class
|
|
11
|
+
from pkgs.serialization import serial_alias_annotation
|
|
12
|
+
from . import base_t
|
|
11
13
|
from . import entity_t
|
|
12
14
|
|
|
13
15
|
__all__: list[str] = [
|
|
@@ -20,30 +22,47 @@ __all__: list[str] = [
|
|
|
20
22
|
|
|
21
23
|
|
|
22
24
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
23
|
-
@
|
|
25
|
+
@serial_class(
|
|
26
|
+
named_type_path="sdk.id_source.IdSourceSpecBase",
|
|
27
|
+
)
|
|
28
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
24
29
|
class IdSourceSpecBase:
|
|
25
30
|
pass
|
|
26
31
|
|
|
27
32
|
|
|
28
33
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
29
|
-
@
|
|
34
|
+
@serial_class(
|
|
35
|
+
named_type_path="sdk.id_source.IdSourceSpecEntity",
|
|
36
|
+
)
|
|
37
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
30
38
|
class IdSourceSpecEntity(IdSourceSpecBase):
|
|
31
39
|
entity_type: entity_t.EntityType
|
|
32
40
|
|
|
33
41
|
|
|
34
42
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
35
|
-
@
|
|
43
|
+
@serial_class(
|
|
44
|
+
named_type_path="sdk.id_source.IdSourceSpecCustomEntity",
|
|
45
|
+
)
|
|
46
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
36
47
|
class IdSourceSpecCustomEntity(IdSourceSpecBase):
|
|
37
48
|
definition_ref_name: str
|
|
38
49
|
|
|
39
50
|
|
|
40
51
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
41
|
-
@
|
|
52
|
+
@serial_class(
|
|
53
|
+
named_type_path="sdk.id_source.IdSourceSpecFieldOptions",
|
|
54
|
+
)
|
|
55
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
42
56
|
class IdSourceSpecFieldOptions(IdSourceSpecBase):
|
|
43
57
|
set_ref_name: str
|
|
44
|
-
subset_ref_name:
|
|
58
|
+
subset_ref_name: str | None = None
|
|
45
59
|
|
|
46
60
|
|
|
47
61
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
48
|
-
IdSourceSpec = typing.
|
|
62
|
+
IdSourceSpec = typing.Annotated[
|
|
63
|
+
IdSourceSpecEntity | IdSourceSpecCustomEntity | IdSourceSpecFieldOptions,
|
|
64
|
+
serial_alias_annotation(
|
|
65
|
+
named_type_path="sdk.id_source.IdSourceSpec",
|
|
66
|
+
),
|
|
67
|
+
]
|
|
49
68
|
# DO NOT MODIFY -- This file is generated by type_spec
|
uncountable/types/identifier.py
CHANGED