UncountablePythonSDK 0.0.109__tar.gz → 0.0.111__tar.gz
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.
- {uncountablepythonsdk-0.0.109/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.111}/PKG-INFO +1 -1
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111/UncountablePythonSDK.egg-info}/PKG-INFO +1 -1
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/UncountablePythonSDK.egg-info/SOURCES.txt +5 -0
- uncountablepythonsdk-0.0.111/examples/create_ingredient_sdk.py +34 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/argument_parser/argument_parser.py +3 -3
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/builder.py +19 -2
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/emit_open_api.py +27 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/open_api_util.py +12 -1
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/type_info/emit_type_info.py +30 -4
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/__init__.py +4 -0
- uncountablepythonsdk-0.0.111/uncountable/types/api/condition_parameters/upsert_condition_match.py +71 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/inputs/create_inputs.py +2 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/edit_recipe_inputs.py +12 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/set_recipe_outputs.py +2 -0
- uncountablepythonsdk-0.0.111/uncountable/types/api/uploader/__init__.py +1 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/async_batch_processor.py +40 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/async_batch_t.py +2 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/client_base.py +27 -0
- uncountablepythonsdk-0.0.111/uncountable/types/data.py +12 -0
- uncountablepythonsdk-0.0.111/uncountable/types/data_t.py +93 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/entity_t.py +7 -1
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/.github/workflows/documentation.yml +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/.github/workflows/publish.yml +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/.gitignore +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/README.md +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/UncountablePythonSDK.egg-info/requires.txt +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/docs/.gitignore +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/docs/conf.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/docs/index.md +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/docs/justfile +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/docs/quickstart.md +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/docs/requirements.txt +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/docs/static/favicons/android-chrome-192x192.png +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/docs/static/favicons/android-chrome-512x512.png +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/docs/static/favicons/apple-touch-icon.png +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/docs/static/favicons/browserconfig.xml +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/docs/static/favicons/favicon-16x16.png +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/docs/static/favicons/favicon-32x32.png +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/docs/static/favicons/manifest.json +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/docs/static/favicons/mstile-150x150.png +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/docs/static/favicons/safari-pinned-tab.svg +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/docs/static/logo_blue.png +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/examples/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/examples/create_entity.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/examples/download_files.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/examples/edit_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/examples/integration-server/jobs/materials_auto/example_cron.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/examples/integration-server/jobs/materials_auto/example_wh.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/examples/integration-server/jobs/materials_auto/profile.yaml +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/examples/integration-server/pyproject.toml +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/examples/invoke_uploader.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/examples/set_recipe_metadata_file.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/examples/set_recipe_output_file_sdk.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/examples/upload_files.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/argument_parser/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/argument_parser/_is_enum.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/argument_parser/_is_namedtuple.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/argument_parser/case_convert.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/filesystem_utils/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/filesystem_utils/_blob_session.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/filesystem_utils/_gdrive_session.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/filesystem_utils/_local_session.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/filesystem_utils/_s3_session.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/filesystem_utils/_sftp_session.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/filesystem_utils/file_type_utils.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/filesystem_utils/filesystem_session.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/py.typed +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/serialization/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/serialization/annotation.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/serialization/missing_sentry.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/serialization/opaque_key.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/serialization/serial_alias.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/serialization/serial_class.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/serialization/serial_generic.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/serialization/serial_union.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/serialization/yaml.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/serialization_util/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/serialization_util/dataclasses.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/serialization_util/serialization_helpers.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/strenum_compat/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/strenum_compat/strenum_compat.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/__main__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/actions_registry/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/actions_registry/__main__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/config.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/cross_output_links.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/emit_io_ts.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/emit_open_api_util.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/emit_python.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/emit_typescript.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/emit_typescript_util.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/load_types.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/parts/base.py.prepart +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/parts/base.ts.prepart +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/test.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/type_info/__main__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/util.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/value_spec/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/value_spec/__main__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/value_spec/convert_type.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/value_spec/emit_python.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/value_spec/types.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pyproject.toml +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/setup.cfg +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/core/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/core/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/core/client.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/core/environment.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/core/file_upload.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/core/types.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/cli.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/construct_client.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/cron.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/db/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/db/connect.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/db/session.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/entrypoint.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/executors/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/executors/executors.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/executors/generic_upload_executor.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/executors/script_executor.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/job.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/command_server/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/command_server/command_client.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/command_server/command_server.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/command_server/protocol/command_server.proto +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/command_server/types.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/datastore/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/datastore/datastore_sqlite.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/datastore/interface.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/datastore/model.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/job_scheduler.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/queue_runner.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/types.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/queue_runner/worker.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/scan_profiles.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/scheduler.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/secret_retrieval/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/secret_retrieval/retrieve_secret.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/server.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/telemetry.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/integration/webhook_server/entrypoint.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/py.typed +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/batch/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/batch/execute_batch.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/chemical/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
- {uncountablepythonsdk-0.0.109/uncountable/types/api/entity → uncountablepythonsdk-0.0.111/uncountable/types/api/condition_parameters}/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109/uncountable/types/api/equipment → uncountablepythonsdk-0.0.111/uncountable/types/api/entity}/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/entity/create_entities.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/entity/create_entity.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/entity/create_or_update_entity.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/entity/get_entities_data.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/entity/grant_entity_permissions.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/entity/list_entities.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/entity/lock_entity.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/entity/lookup_entity.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/entity/set_entity_field_values.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/entity/set_values.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/entity/unlock_entity.py +0 -0
- {uncountablepythonsdk-0.0.109/uncountable/types/api/field_options → uncountablepythonsdk-0.0.111/uncountable/types/api/equipment}/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/equipment/associate_equipment_input.py +0 -0
- {uncountablepythonsdk-0.0.109/uncountable/types/api/files → uncountablepythonsdk-0.0.111/uncountable/types/api/field_options}/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
- {uncountablepythonsdk-0.0.109/uncountable/types/api/id_source → uncountablepythonsdk-0.0.111/uncountable/types/api/files}/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/files/download_file.py +0 -0
- {uncountablepythonsdk-0.0.109/uncountable/types/api/input_groups → uncountablepythonsdk-0.0.111/uncountable/types/api/id_source}/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/id_source/list_id_source.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/id_source/match_id_source.py +0 -0
- {uncountablepythonsdk-0.0.109/uncountable/types/api/inputs → uncountablepythonsdk-0.0.111/uncountable/types/api/input_groups}/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
- {uncountablepythonsdk-0.0.109/uncountable/types/api/material_families → uncountablepythonsdk-0.0.111/uncountable/types/api/inputs}/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/inputs/get_input_data.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/inputs/get_input_names.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/inputs/set_input_category.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/inputs/set_intermediate_type.py +0 -0
- {uncountablepythonsdk-0.0.109/uncountable/types/api/outputs → uncountablepythonsdk-0.0.111/uncountable/types/api/material_families}/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
- {uncountablepythonsdk-0.0.109/uncountable/types/api/permissions → uncountablepythonsdk-0.0.111/uncountable/types/api/outputs}/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/outputs/get_output_data.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/outputs/get_output_names.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
- {uncountablepythonsdk-0.0.109/uncountable/types/api/project → uncountablepythonsdk-0.0.111/uncountable/types/api/permissions}/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
- {uncountablepythonsdk-0.0.109/uncountable/types/api/recipe_links → uncountablepythonsdk-0.0.111/uncountable/types/api/project}/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/project/get_projects.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/project/get_projects_data.py +0 -0
- {uncountablepythonsdk-0.0.109/uncountable/types/api/recipe_metadata → uncountablepythonsdk-0.0.111/uncountable/types/api/recipe_links}/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipe_links/remove_recipe_link.py +0 -0
- {uncountablepythonsdk-0.0.109/uncountable/types/api/recipes → uncountablepythonsdk-0.0.111/uncountable/types/api/recipe_metadata}/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
- {uncountablepythonsdk-0.0.109/uncountable/types/api/triggers → uncountablepythonsdk-0.0.111/uncountable/types/api/recipes}/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/add_recipe_to_project.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/add_time_series_data.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/archive_recipes.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/clear_recipe_outputs.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/create_recipe.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/create_recipes.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/get_column_calculation_values.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/get_curve.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/get_recipe_links.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/lock_recipes.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/remove_recipe_from_project.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/set_recipe_output_annotations.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/set_recipe_output_file.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/recipes/unlock_recipes.py +0 -0
- {uncountablepythonsdk-0.0.109/uncountable/types/api/uploader → uncountablepythonsdk-0.0.111/uncountable/types/api/triggers}/__init__.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/triggers/run_trigger.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/api/uploader/invoke_uploader.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/async_jobs.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/async_jobs_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/auth_retrieval.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/auth_retrieval_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/base.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/base_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/calculations.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/calculations_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/chemical_structure.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/chemical_structure_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/client_config.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/client_config_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/curves.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/curves_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/entity.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/experiment_groups.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/experiment_groups_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/field_values.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/field_values_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/fields.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/fields_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/generic_upload.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/generic_upload_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/id_source.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/id_source_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/identifier.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/identifier_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/input_attributes.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/input_attributes_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/inputs.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/inputs_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/integration_server.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/integration_server_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/job_definition.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/job_definition_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/outputs.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/outputs_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/overrides.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/overrides_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/permissions.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/permissions_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/phases.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/phases_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/post_base.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/post_base_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/queued_job.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/queued_job_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/recipe_identifiers.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/recipe_identifiers_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/recipe_inputs_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/recipe_links.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/recipe_links_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/recipe_metadata.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/recipe_metadata_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/recipe_output_metadata.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/recipe_output_metadata_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/recipe_tags.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/recipe_tags_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/recipe_workflow_steps.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/recipe_workflow_steps_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/recipes.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/recipes_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/response.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/response_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/secret_retrieval.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/secret_retrieval_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/units.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/units_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/users.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/users_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/webhook_job.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/webhook_job_t.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/workflows.py +0 -0
- {uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/workflows_t.py +0 -0
{uncountablepythonsdk-0.0.109/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.111}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: UncountablePythonSDK
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.111
|
|
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
|
{uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111/UncountablePythonSDK.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: UncountablePythonSDK
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.111
|
|
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
|
|
@@ -26,6 +26,7 @@ docs/static/favicons/mstile-150x150.png
|
|
|
26
26
|
docs/static/favicons/safari-pinned-tab.svg
|
|
27
27
|
examples/async_batch.py
|
|
28
28
|
examples/create_entity.py
|
|
29
|
+
examples/create_ingredient_sdk.py
|
|
29
30
|
examples/download_files.py
|
|
30
31
|
examples/edit_recipe_inputs.py
|
|
31
32
|
examples/invoke_uploader.py
|
|
@@ -159,6 +160,8 @@ uncountable/types/client_config.py
|
|
|
159
160
|
uncountable/types/client_config_t.py
|
|
160
161
|
uncountable/types/curves.py
|
|
161
162
|
uncountable/types/curves_t.py
|
|
163
|
+
uncountable/types/data.py
|
|
164
|
+
uncountable/types/data_t.py
|
|
162
165
|
uncountable/types/entity.py
|
|
163
166
|
uncountable/types/entity_t.py
|
|
164
167
|
uncountable/types/experiment_groups.py
|
|
@@ -227,6 +230,8 @@ uncountable/types/api/batch/execute_batch.py
|
|
|
227
230
|
uncountable/types/api/batch/execute_batch_load_async.py
|
|
228
231
|
uncountable/types/api/chemical/__init__.py
|
|
229
232
|
uncountable/types/api/chemical/convert_chemical_formats.py
|
|
233
|
+
uncountable/types/api/condition_parameters/__init__.py
|
|
234
|
+
uncountable/types/api/condition_parameters/upsert_condition_match.py
|
|
230
235
|
uncountable/types/api/entity/__init__.py
|
|
231
236
|
uncountable/types/api/entity/create_entities.py
|
|
232
237
|
uncountable/types/api/entity/create_entity.py
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
import uncountable.types.api.inputs.create_inputs as create_inputs
|
|
4
|
+
from uncountable.core import AuthDetailsApiKey, Client
|
|
5
|
+
from uncountable.types import field_values_t, inputs_t
|
|
6
|
+
|
|
7
|
+
client = Client(
|
|
8
|
+
base_url="http://localhost:5000",
|
|
9
|
+
auth_details=AuthDetailsApiKey(
|
|
10
|
+
api_id=os.environ["UNC_API_ID"],
|
|
11
|
+
api_secret_key=os.environ["UNC_API_SECRET_KEY"],
|
|
12
|
+
),
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
client.external_create_inputs(
|
|
16
|
+
inputs_to_create=[
|
|
17
|
+
create_inputs.InputToCreate(
|
|
18
|
+
name="sdk test ing",
|
|
19
|
+
material_family_ids=[1],
|
|
20
|
+
quantity_type=inputs_t.IngredientQuantityType.NUMERIC,
|
|
21
|
+
type=inputs_t.IngredientType.INGREDIENT,
|
|
22
|
+
field_values=[
|
|
23
|
+
field_values_t.FieldRefNameValue(
|
|
24
|
+
field_ref_name="carrieTestNumericField",
|
|
25
|
+
value="10",
|
|
26
|
+
),
|
|
27
|
+
field_values_t.FieldRefNameValue(
|
|
28
|
+
field_ref_name="carrieTestCheckboxField",
|
|
29
|
+
value=True,
|
|
30
|
+
),
|
|
31
|
+
],
|
|
32
|
+
)
|
|
33
|
+
]
|
|
34
|
+
)
|
|
@@ -12,13 +12,13 @@ from enum import Enum, auto
|
|
|
12
12
|
from importlib import resources
|
|
13
13
|
|
|
14
14
|
import dateutil.parser
|
|
15
|
+
import msgspec.yaml
|
|
15
16
|
|
|
16
17
|
from pkgs.serialization import (
|
|
17
18
|
MissingSentryType,
|
|
18
19
|
OpaqueKey,
|
|
19
20
|
get_serial_class_data,
|
|
20
21
|
get_serial_union_data,
|
|
21
|
-
yaml,
|
|
22
22
|
)
|
|
23
23
|
|
|
24
24
|
from ._is_enum import is_string_enum_class
|
|
@@ -561,11 +561,11 @@ class ParserBase(ABC, typing.Generic[T]):
|
|
|
561
561
|
|
|
562
562
|
def parse_yaml_file(self, path: str) -> T:
|
|
563
563
|
with open(path, encoding="utf-8") as data_in:
|
|
564
|
-
return self.parse_storage(yaml.
|
|
564
|
+
return self.parse_storage(msgspec.yaml.decode(data_in.read()))
|
|
565
565
|
|
|
566
566
|
def parse_yaml_resource(self, package: resources.Package, resource: str) -> T:
|
|
567
567
|
with resources.open_text(package, resource) as fp:
|
|
568
|
-
return self.parse_storage(yaml.
|
|
568
|
+
return self.parse_storage(msgspec.yaml.decode(fp.read()))
|
|
569
569
|
|
|
570
570
|
|
|
571
571
|
class CachedParser(ParserBase[T], typing.Generic[T]):
|
|
@@ -624,7 +624,12 @@ class SpecTypeDefnUnion(SpecTypeDefn):
|
|
|
624
624
|
prop_type = unwrap_literal_type(discriminator_type.spec_type)
|
|
625
625
|
assert prop_type is not None
|
|
626
626
|
assert prop_type.is_value_to_string()
|
|
627
|
-
|
|
627
|
+
value_type = prop_type.value_type
|
|
628
|
+
if isinstance(value_type, SpecTypeDefnStringEnum):
|
|
629
|
+
assert isinstance(prop_type.value, str)
|
|
630
|
+
discriminant = value_type.values[prop_type.value].value
|
|
631
|
+
else:
|
|
632
|
+
discriminant = str(prop_type.value)
|
|
628
633
|
assert discriminant not in self.discriminator_map, (
|
|
629
634
|
f"duplicated-discriminant, {discriminant} in {sub_type}"
|
|
630
635
|
)
|
|
@@ -793,6 +798,7 @@ class SpecTypeDefnStringEnum(SpecTypeDefn):
|
|
|
793
798
|
TOKEN_ENDPOINT = "$endpoint"
|
|
794
799
|
TOKEN_EMIT_IO_TS = "$emit_io_ts"
|
|
795
800
|
TOKEN_EMIT_TYPE_INFO = "$emit_type_info"
|
|
801
|
+
TOKEN_EMIT_TYPE_INFO_PYTHON = "$emit_type_info_python"
|
|
796
802
|
# The import token is only for explicit ordering of the files, to process constants
|
|
797
803
|
# and enums correctly. It does not impact the final generation of files, or the
|
|
798
804
|
# language imports. Those are still auto-resolved.
|
|
@@ -1161,6 +1167,7 @@ class SpecNamespace:
|
|
|
1161
1167
|
self.endpoint: SpecEndpoint | None = None
|
|
1162
1168
|
self.emit_io_ts = False
|
|
1163
1169
|
self.emit_type_info = False
|
|
1170
|
+
self.emit_type_info_python = False
|
|
1164
1171
|
self.derive_types_from_io_ts = False
|
|
1165
1172
|
self._imports: list[str] | None = None
|
|
1166
1173
|
self.path = name.split(".")
|
|
@@ -1215,6 +1222,11 @@ class SpecNamespace:
|
|
|
1215
1222
|
self.emit_type_info = defn
|
|
1216
1223
|
continue
|
|
1217
1224
|
|
|
1225
|
+
if name == TOKEN_EMIT_TYPE_INFO_PYTHON:
|
|
1226
|
+
assert defn in (True, False)
|
|
1227
|
+
self.emit_type_info_python = defn
|
|
1228
|
+
continue
|
|
1229
|
+
|
|
1218
1230
|
if name == TOKEN_IMPORT:
|
|
1219
1231
|
assert self._imports is None
|
|
1220
1232
|
imports = [defn] if isinstance(defn, str) else defn
|
|
@@ -1276,7 +1288,12 @@ class SpecNamespace:
|
|
|
1276
1288
|
parsed_name = parse_type_str(full_name)[0]
|
|
1277
1289
|
name = parsed_name.name
|
|
1278
1290
|
|
|
1279
|
-
if name in [
|
|
1291
|
+
if name in [
|
|
1292
|
+
TOKEN_EMIT_IO_TS,
|
|
1293
|
+
TOKEN_EMIT_TYPE_INFO,
|
|
1294
|
+
TOKEN_IMPORT,
|
|
1295
|
+
TOKEN_EMIT_TYPE_INFO_PYTHON,
|
|
1296
|
+
]:
|
|
1280
1297
|
continue
|
|
1281
1298
|
|
|
1282
1299
|
builder.push_where(name)
|
{uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/emit_open_api.py
RENAMED
|
@@ -7,6 +7,7 @@ WORK-IN-PROGRESS, DON'T USE!
|
|
|
7
7
|
import dataclasses
|
|
8
8
|
import json
|
|
9
9
|
import re
|
|
10
|
+
from enum import StrEnum
|
|
10
11
|
from typing import Collection, assert_never, cast
|
|
11
12
|
|
|
12
13
|
from pkgs.serialization import yaml
|
|
@@ -62,6 +63,10 @@ base_name_map = {
|
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
|
|
66
|
+
class OpenAPIDefaultBehavior(StrEnum):
|
|
67
|
+
OPTIONAL_WITH_DEFAULT = "optional_with_default"
|
|
68
|
+
|
|
69
|
+
|
|
65
70
|
def _rewrite_with_notice(
|
|
66
71
|
file_path: str, file_content: str, *, notice: str = MODIFY_NOTICE
|
|
67
72
|
) -> bool:
|
|
@@ -432,6 +437,18 @@ def _emit_namespace(
|
|
|
432
437
|
_rewrite_with_notice(path, yaml.dumps(oa_namespace, sort_keys=False))
|
|
433
438
|
|
|
434
439
|
|
|
440
|
+
def _get_openapi_default_behavior(
|
|
441
|
+
prop: builder.SpecProperty,
|
|
442
|
+
) -> OpenAPIDefaultBehavior | None:
|
|
443
|
+
if prop.ext_info is None or prop.ext_info.get("open_api") is None:
|
|
444
|
+
return None
|
|
445
|
+
value_passed = prop.ext_info["open_api"].get("default_required_behavior")
|
|
446
|
+
if value_passed is None:
|
|
447
|
+
return None
|
|
448
|
+
assert isinstance(value_passed, str)
|
|
449
|
+
return OpenAPIDefaultBehavior(value_passed)
|
|
450
|
+
|
|
451
|
+
|
|
435
452
|
def _emit_type(
|
|
436
453
|
ctx: EmitOpenAPIContext,
|
|
437
454
|
stype: builder.SpecType,
|
|
@@ -495,6 +512,16 @@ def _emit_type(
|
|
|
495
512
|
# arguments, thus treat like extant==missing
|
|
496
513
|
# IMPROVE: if we can decide they are meant as output instead, then
|
|
497
514
|
# they should be marked as required
|
|
515
|
+
openapi_default_beahvior = _get_openapi_default_behavior(prop)
|
|
516
|
+
match openapi_default_beahvior:
|
|
517
|
+
case None:
|
|
518
|
+
pass
|
|
519
|
+
case OpenAPIDefaultBehavior.OPTIONAL_WITH_DEFAULT:
|
|
520
|
+
ref_type.nullable = True
|
|
521
|
+
assert prop.default is not None, (
|
|
522
|
+
"optional_with_default requires default"
|
|
523
|
+
)
|
|
524
|
+
ref_type.default = prop.default
|
|
498
525
|
properties[prop_name] = ref_type
|
|
499
526
|
elif prop.extant == builder.PropertyExtant.missing:
|
|
500
527
|
# Unlike optional below, missing does not imply null is possible. They
|
{uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/pkgs/type_spec/open_api_util.py
RENAMED
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
from abc import ABC, abstractmethod
|
|
2
2
|
from enum import StrEnum
|
|
3
3
|
|
|
4
|
+
from pkgs.serialization_util import JsonValue
|
|
5
|
+
|
|
4
6
|
|
|
5
7
|
class OpenAPIType(ABC):
|
|
6
8
|
description: str | None = None
|
|
7
9
|
nullable: bool = False
|
|
10
|
+
default: JsonValue
|
|
8
11
|
|
|
9
|
-
def __init__(
|
|
12
|
+
def __init__(
|
|
13
|
+
self,
|
|
14
|
+
description: str | None = None,
|
|
15
|
+
nullable: bool = False,
|
|
16
|
+
default: JsonValue = None,
|
|
17
|
+
) -> None:
|
|
10
18
|
self.description = description
|
|
11
19
|
self.nullable = nullable
|
|
20
|
+
self.default = default
|
|
12
21
|
|
|
13
22
|
@abstractmethod
|
|
14
23
|
def asdict(self) -> dict[str, object]:
|
|
@@ -19,6 +28,8 @@ class OpenAPIType(ABC):
|
|
|
19
28
|
emitted["description"] = self.description
|
|
20
29
|
if self.nullable:
|
|
21
30
|
emitted["nullable"] = self.nullable
|
|
31
|
+
if self.default is not None:
|
|
32
|
+
emitted["default"] = self.default
|
|
22
33
|
return emitted
|
|
23
34
|
|
|
24
35
|
|
|
@@ -116,7 +116,7 @@ def asdict_for_yaml_dump(dataclass_instance: Any) -> Any:
|
|
|
116
116
|
|
|
117
117
|
|
|
118
118
|
def emit_type_info_python(build: builder.SpecBuilder, output: str) -> None:
|
|
119
|
-
type_map = _build_map_all(build)
|
|
119
|
+
type_map = _build_map_all(build, python=True)
|
|
120
120
|
|
|
121
121
|
stripped = _dict_null_strip(asdict_for_yaml_dump(type_map))
|
|
122
122
|
|
|
@@ -176,11 +176,14 @@ class MapAll:
|
|
|
176
176
|
namespaces: dict[str, MapNamespace]
|
|
177
177
|
|
|
178
178
|
|
|
179
|
-
def _build_map_all(build: builder.SpecBuilder) -> MapAll:
|
|
179
|
+
def _build_map_all(build: builder.SpecBuilder, *, python: bool = False) -> MapAll:
|
|
180
180
|
map_all = MapAll(namespaces={})
|
|
181
181
|
|
|
182
182
|
for namespace in build.namespaces.values():
|
|
183
|
-
if not namespace.emit_type_info:
|
|
183
|
+
if not python and not namespace.emit_type_info:
|
|
184
|
+
continue
|
|
185
|
+
|
|
186
|
+
if python and not namespace.emit_type_info_python:
|
|
184
187
|
continue
|
|
185
188
|
|
|
186
189
|
map_namespace = MapNamespace(types={})
|
|
@@ -296,6 +299,21 @@ def _extract_and_validate_layout(
|
|
|
296
299
|
return layout
|
|
297
300
|
|
|
298
301
|
|
|
302
|
+
def _pull_property_from_type_recursively(
|
|
303
|
+
stype: builder.SpecTypeDefnObject,
|
|
304
|
+
property_name: str,
|
|
305
|
+
) -> builder.SpecProperty | None:
|
|
306
|
+
assert stype.properties is not None
|
|
307
|
+
prop = stype.properties.get(property_name)
|
|
308
|
+
if prop is not None:
|
|
309
|
+
return prop
|
|
310
|
+
|
|
311
|
+
if stype.base is None:
|
|
312
|
+
return None
|
|
313
|
+
|
|
314
|
+
return _pull_property_from_type_recursively(stype.base, property_name)
|
|
315
|
+
|
|
316
|
+
|
|
299
317
|
def _validate_type_ext_info(
|
|
300
318
|
stype: builder.SpecTypeDefnObject,
|
|
301
319
|
) -> tuple[ExtInfoLayout | None, type_info_t.ExtInfo | None]:
|
|
@@ -306,9 +324,15 @@ def _validate_type_ext_info(
|
|
|
306
324
|
if ext_info.label_fields is not None:
|
|
307
325
|
assert stype.properties is not None
|
|
308
326
|
for name in ext_info.label_fields:
|
|
309
|
-
prop = stype
|
|
327
|
+
prop = _pull_property_from_type_recursively(stype, name)
|
|
310
328
|
assert prop is not None, f"missing-label-field:{name}"
|
|
311
329
|
|
|
330
|
+
if ext_info.actions is not None:
|
|
331
|
+
assert stype.properties is not None
|
|
332
|
+
for action in ext_info.actions:
|
|
333
|
+
prop = _pull_property_from_type_recursively(stype, action.property)
|
|
334
|
+
assert prop is not None, f"missing-action-field:{action.property}"
|
|
335
|
+
|
|
312
336
|
if not stype.is_base and isinstance(stype.base, builder.SpecTypeDefnObject):
|
|
313
337
|
base_layout, _ = _validate_type_ext_info(stype.base)
|
|
314
338
|
else:
|
|
@@ -416,6 +440,8 @@ def _parse_ext_info(in_ext: Any) -> type_info_t.ExtInfo | None:
|
|
|
416
440
|
df["result_type"] = serialize_for_storage(converted)
|
|
417
441
|
mod_ext["data_format"] = df
|
|
418
442
|
|
|
443
|
+
if "open_api" in mod_ext:
|
|
444
|
+
del mod_ext["open_api"]
|
|
419
445
|
return ext_info_parser.parse_storage(mod_ext)
|
|
420
446
|
|
|
421
447
|
|
|
@@ -25,6 +25,7 @@ from .api.recipes import create_recipe as create_recipe_t
|
|
|
25
25
|
from .api.recipe_links import create_recipe_link as create_recipe_link_t
|
|
26
26
|
from .api.recipes import create_recipes as create_recipes_t
|
|
27
27
|
from . import curves_t as curves_t
|
|
28
|
+
from . import data_t as data_t
|
|
28
29
|
from .api.recipes import disassociate_recipe_as_input as disassociate_recipe_as_input_t
|
|
29
30
|
from .api.files import download_file as download_file_t
|
|
30
31
|
from .api.recipes import edit_recipe_inputs as edit_recipe_inputs_t
|
|
@@ -106,6 +107,7 @@ from . import units_t as units_t
|
|
|
106
107
|
from .api.entity import unlock_entity as unlock_entity_t
|
|
107
108
|
from .api.recipes import unlock_recipes as unlock_recipes_t
|
|
108
109
|
from .api.material_families import update_entity_material_families as update_entity_material_families_t
|
|
110
|
+
from .api.condition_parameters import upsert_condition_match as upsert_condition_match_t
|
|
109
111
|
from .api.field_options import upsert_field_options as upsert_field_options_t
|
|
110
112
|
from . import users_t as users_t
|
|
111
113
|
from . import webhook_job_t as webhook_job_t
|
|
@@ -136,6 +138,7 @@ __all__: list[str] = [
|
|
|
136
138
|
"create_recipe_link_t",
|
|
137
139
|
"create_recipes_t",
|
|
138
140
|
"curves_t",
|
|
141
|
+
"data_t",
|
|
139
142
|
"disassociate_recipe_as_input_t",
|
|
140
143
|
"download_file_t",
|
|
141
144
|
"edit_recipe_inputs_t",
|
|
@@ -217,6 +220,7 @@ __all__: list[str] = [
|
|
|
217
220
|
"unlock_entity_t",
|
|
218
221
|
"unlock_recipes_t",
|
|
219
222
|
"update_entity_material_families_t",
|
|
223
|
+
"upsert_condition_match_t",
|
|
220
224
|
"upsert_field_options_t",
|
|
221
225
|
"users_t",
|
|
222
226
|
"webhook_job_t",
|
uncountablepythonsdk-0.0.111/uncountable/types/api/condition_parameters/upsert_condition_match.py
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
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 async_batch_t
|
|
13
|
+
from ... import identifier_t
|
|
14
|
+
|
|
15
|
+
__all__: list[str] = [
|
|
16
|
+
"Arguments",
|
|
17
|
+
"ConditionParameter",
|
|
18
|
+
"Data",
|
|
19
|
+
"ENDPOINT_METHOD",
|
|
20
|
+
"ENDPOINT_PATH",
|
|
21
|
+
"MatchType",
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
ENDPOINT_METHOD = "POST"
|
|
25
|
+
ENDPOINT_PATH = "api/external/condition_parameters/upsert_condition_match"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
29
|
+
@serial_class(
|
|
30
|
+
named_type_path="sdk.api.condition_parameters.upsert_condition_match.ConditionParameter",
|
|
31
|
+
to_string_values={"max_value", "min_value"},
|
|
32
|
+
)
|
|
33
|
+
@dataclasses.dataclass(kw_only=True)
|
|
34
|
+
class ConditionParameter:
|
|
35
|
+
condition_parameter_key: identifier_t.IdentifierKey
|
|
36
|
+
allow_null: bool
|
|
37
|
+
min_value: Decimal | None = None
|
|
38
|
+
max_value: Decimal | None = None
|
|
39
|
+
categorical_values: list[str | None] | None = None
|
|
40
|
+
match_type: MatchType | None = None
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
44
|
+
class MatchType(StrEnum):
|
|
45
|
+
ALL = "all"
|
|
46
|
+
EQ = "eq"
|
|
47
|
+
EQCATEGORICAL = "eqCategorical"
|
|
48
|
+
RANGE = "range"
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
52
|
+
@serial_class(
|
|
53
|
+
named_type_path="sdk.api.condition_parameters.upsert_condition_match.Arguments",
|
|
54
|
+
)
|
|
55
|
+
@dataclasses.dataclass(kw_only=True)
|
|
56
|
+
class Arguments:
|
|
57
|
+
explicit_name: bool = False
|
|
58
|
+
name: str | None = None
|
|
59
|
+
condition_parameters: list[ConditionParameter] | None = None
|
|
60
|
+
output_conditions: list[identifier_t.IdentifierKey] | None = None
|
|
61
|
+
existing_condition_match: identifier_t.IdentifierKey | None = None
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
65
|
+
@serial_class(
|
|
66
|
+
named_type_path="sdk.api.condition_parameters.upsert_condition_match.Data",
|
|
67
|
+
)
|
|
68
|
+
@dataclasses.dataclass(kw_only=True)
|
|
69
|
+
class Data(async_batch_t.AsyncBatchActionReturn):
|
|
70
|
+
pass
|
|
71
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -9,6 +9,7 @@ from decimal import Decimal # noqa: F401
|
|
|
9
9
|
import dataclasses
|
|
10
10
|
from pkgs.serialization import serial_class
|
|
11
11
|
from ... import base_t
|
|
12
|
+
from ... import field_values_t
|
|
12
13
|
from ... import input_attributes_t
|
|
13
14
|
from ... import inputs_t
|
|
14
15
|
|
|
@@ -46,6 +47,7 @@ class InputToCreate:
|
|
|
46
47
|
type: typing.Literal[inputs_t.IngredientType.INGREDIENT] | typing.Literal[inputs_t.IngredientType.PROCESS_PARAMETER]
|
|
47
48
|
attributes: list[input_attributes_t.InputAttributeValue] | None = None
|
|
48
49
|
category_id: base_t.ObjectId | None = None
|
|
50
|
+
field_values: list[field_values_t.FieldRefNameValue] | None = None
|
|
49
51
|
|
|
50
52
|
|
|
51
53
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -21,6 +21,7 @@ __all__: list[str] = [
|
|
|
21
21
|
"Data",
|
|
22
22
|
"ENDPOINT_METHOD",
|
|
23
23
|
"ENDPOINT_PATH",
|
|
24
|
+
"MixStepMatchStrategy",
|
|
24
25
|
"PlaceholderBase",
|
|
25
26
|
"PlaceholderDisplayMode",
|
|
26
27
|
"PlaceholderType",
|
|
@@ -58,6 +59,12 @@ class RecipeInputEditType(StrEnum):
|
|
|
58
59
|
SET_PLACEHOLDER = "set_placeholder"
|
|
59
60
|
|
|
60
61
|
|
|
62
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
63
|
+
class MixStepMatchStrategy(StrEnum):
|
|
64
|
+
FIRST = "first"
|
|
65
|
+
LAST = "last"
|
|
66
|
+
|
|
67
|
+
|
|
61
68
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
62
69
|
@serial_class(
|
|
63
70
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditBase",
|
|
@@ -101,6 +108,7 @@ class RecipeInputEditInputBase(RecipeInputEditBase):
|
|
|
101
108
|
@dataclasses.dataclass(kw_only=True)
|
|
102
109
|
class RecipeInputEditChangeBasisViewed(RecipeInputEditInputBase):
|
|
103
110
|
type: typing.Literal[RecipeInputEditType.CHANGE_BASIS] = RecipeInputEditType.CHANGE_BASIS
|
|
111
|
+
mix_step_match_strategy: MixStepMatchStrategy = MixStepMatchStrategy.FIRST
|
|
104
112
|
|
|
105
113
|
|
|
106
114
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -112,6 +120,7 @@ class RecipeInputEditChangeBasisViewed(RecipeInputEditInputBase):
|
|
|
112
120
|
class RecipeInputEditUpsertInput(RecipeInputEditInputBase):
|
|
113
121
|
type: typing.Literal[RecipeInputEditType.UPSERT_INPUT] = RecipeInputEditType.UPSERT_INPUT
|
|
114
122
|
clear_first: bool
|
|
123
|
+
mix_step_match_strategy: MixStepMatchStrategy = MixStepMatchStrategy.FIRST
|
|
115
124
|
|
|
116
125
|
|
|
117
126
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -134,6 +143,7 @@ class RecipeInputEditSetLot(RecipeInputEditBase):
|
|
|
134
143
|
type: typing.Literal[RecipeInputEditType.SET_LOT] = RecipeInputEditType.SET_LOT
|
|
135
144
|
ingredient_key: identifier_t.IdentifierKey
|
|
136
145
|
ingredient_lot_recipe_key: identifier_t.IdentifierKey
|
|
146
|
+
mix_step_match_strategy: MixStepMatchStrategy = MixStepMatchStrategy.FIRST
|
|
137
147
|
|
|
138
148
|
|
|
139
149
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -169,6 +179,7 @@ class RecipeInputEditUpdateAnnotations(RecipeInputEditInputBase):
|
|
|
169
179
|
type: typing.Literal[RecipeInputEditType.UPDATE_ANNOTATIONS] = RecipeInputEditType.UPDATE_ANNOTATIONS
|
|
170
180
|
clear_first: bool
|
|
171
181
|
annotations: list[AnnotationEdit]
|
|
182
|
+
mix_step_match_strategy: MixStepMatchStrategy = MixStepMatchStrategy.FIRST
|
|
172
183
|
|
|
173
184
|
|
|
174
185
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -238,6 +249,7 @@ class RecipeInputEditPlaceholder(RecipeInputEditBase):
|
|
|
238
249
|
type: typing.Literal[RecipeInputEditType.SET_PLACEHOLDER] = RecipeInputEditType.SET_PLACEHOLDER
|
|
239
250
|
ingredient_key: identifier_t.IdentifierKey
|
|
240
251
|
placeholder: RecipeInputPlaceholder
|
|
252
|
+
mix_step_match_strategy: MixStepMatchStrategy = MixStepMatchStrategy.FIRST
|
|
241
253
|
|
|
242
254
|
|
|
243
255
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -10,6 +10,7 @@ from enum import StrEnum
|
|
|
10
10
|
import dataclasses
|
|
11
11
|
from pkgs.serialization import serial_class
|
|
12
12
|
from ... import base_t
|
|
13
|
+
from ... import data_t
|
|
13
14
|
from ... import field_values_t
|
|
14
15
|
from ... import recipes_t
|
|
15
16
|
from ... import response_t
|
|
@@ -59,6 +60,7 @@ class RecipeOutputValue:
|
|
|
59
60
|
value_numeric: Decimal | None = None
|
|
60
61
|
value_str: str | None = None
|
|
61
62
|
value_curve: CurveValues | None = None
|
|
63
|
+
value_color: data_t.RecipeOutputColor | None = None
|
|
62
64
|
formatting: recipes_t.RecipeAttributeFormatting | None = None
|
|
63
65
|
field_values: list[field_values_t.ArgumentValueRefName | field_values_t.ArgumentValueId] | None = None
|
|
64
66
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -28,6 +28,7 @@ from uncountable.types import recipe_metadata_t
|
|
|
28
28
|
from uncountable.types import recipe_workflow_steps_t
|
|
29
29
|
import uncountable.types.api.entity.set_entity_field_values as set_entity_field_values_t
|
|
30
30
|
import uncountable.types.api.recipes.set_recipe_metadata as set_recipe_metadata_t
|
|
31
|
+
import uncountable.types.api.condition_parameters.upsert_condition_match as upsert_condition_match_t
|
|
31
32
|
import uuid
|
|
32
33
|
from abc import ABC, abstractmethod
|
|
33
34
|
from pkgs.serialization_util import serialize_for_api
|
|
@@ -489,3 +490,42 @@ class AsyncBatchProcessorBase(ABC):
|
|
|
489
490
|
path=req.path,
|
|
490
491
|
batch_reference=req.batch_reference,
|
|
491
492
|
)
|
|
493
|
+
|
|
494
|
+
def upsert_condition_match(
|
|
495
|
+
self,
|
|
496
|
+
*,
|
|
497
|
+
explicit_name: bool = False,
|
|
498
|
+
name: str | None = None,
|
|
499
|
+
condition_parameters: list[upsert_condition_match_t.ConditionParameter] | None = None,
|
|
500
|
+
output_conditions: list[identifier_t.IdentifierKey] | None = None,
|
|
501
|
+
existing_condition_match: identifier_t.IdentifierKey | None = None,
|
|
502
|
+
depends_on: list[str] | None = None,
|
|
503
|
+
) -> async_batch_t.QueuedAsyncBatchRequest:
|
|
504
|
+
"""Creates or updates condition match
|
|
505
|
+
|
|
506
|
+
:param depends_on: A list of batch reference keys to process before processing this request
|
|
507
|
+
"""
|
|
508
|
+
args = upsert_condition_match_t.Arguments(
|
|
509
|
+
name=name,
|
|
510
|
+
condition_parameters=condition_parameters,
|
|
511
|
+
output_conditions=output_conditions,
|
|
512
|
+
explicit_name=explicit_name,
|
|
513
|
+
existing_condition_match=existing_condition_match,
|
|
514
|
+
)
|
|
515
|
+
json_data = serialize_for_api(args)
|
|
516
|
+
|
|
517
|
+
batch_reference = str(uuid.uuid4())
|
|
518
|
+
|
|
519
|
+
req = async_batch_t.AsyncBatchRequest(
|
|
520
|
+
path=async_batch_t.AsyncBatchRequestPath.UPSERT_CONDITION_MATCH,
|
|
521
|
+
data=json_data,
|
|
522
|
+
depends_on=depends_on,
|
|
523
|
+
batch_reference=batch_reference,
|
|
524
|
+
)
|
|
525
|
+
|
|
526
|
+
self._enqueue(req)
|
|
527
|
+
|
|
528
|
+
return async_batch_t.QueuedAsyncBatchRequest(
|
|
529
|
+
path=req.path,
|
|
530
|
+
batch_reference=req.batch_reference,
|
|
531
|
+
)
|
{uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/async_batch_t.py
RENAMED
|
@@ -41,6 +41,8 @@ class AsyncBatchRequestPath(StrEnum):
|
|
|
41
41
|
CREATE_OR_UPDATE_ENTITY = "entity/create_or_update_entity"
|
|
42
42
|
ADD_TIME_SERIES_DATA = "recipes/add_time_series_data"
|
|
43
43
|
LOOKUP_ENTITY = "entity/lookup_entity"
|
|
44
|
+
CREATE_RECIPE_LINK = "recipe_links/create_recipe_link"
|
|
45
|
+
UPSERT_CONDITION_MATCH = "condition_parameters/upsert_condition_match"
|
|
44
46
|
|
|
45
47
|
|
|
46
48
|
# DO NOT MODIFY -- This file is generated by type_spec
|
{uncountablepythonsdk-0.0.109 → uncountablepythonsdk-0.0.111}/uncountable/types/client_base.py
RENAMED
|
@@ -88,6 +88,7 @@ import uncountable.types.api.recipes.unarchive_recipes as unarchive_recipes_t
|
|
|
88
88
|
import uncountable.types.api.entity.unlock_entity as unlock_entity_t
|
|
89
89
|
import uncountable.types.api.recipes.unlock_recipes as unlock_recipes_t
|
|
90
90
|
import uncountable.types.api.material_families.update_entity_material_families as update_entity_material_families_t
|
|
91
|
+
import uncountable.types.api.condition_parameters.upsert_condition_match as upsert_condition_match_t
|
|
91
92
|
import uncountable.types.api.field_options.upsert_field_options as upsert_field_options_t
|
|
92
93
|
from abc import ABC, abstractmethod
|
|
93
94
|
import dataclasses
|
|
@@ -1673,6 +1674,32 @@ class ClientMethods(ABC):
|
|
|
1673
1674
|
)
|
|
1674
1675
|
return self.do_request(api_request=api_request, return_type=update_entity_material_families_t.Data)
|
|
1675
1676
|
|
|
1677
|
+
def upsert_condition_match(
|
|
1678
|
+
self,
|
|
1679
|
+
*,
|
|
1680
|
+
explicit_name: bool = False,
|
|
1681
|
+
name: str | None = None,
|
|
1682
|
+
condition_parameters: list[upsert_condition_match_t.ConditionParameter] | None = None,
|
|
1683
|
+
output_conditions: list[identifier_t.IdentifierKey] | None = None,
|
|
1684
|
+
existing_condition_match: identifier_t.IdentifierKey | None = None,
|
|
1685
|
+
) -> upsert_condition_match_t.Data:
|
|
1686
|
+
"""Creates or updates condition match
|
|
1687
|
+
|
|
1688
|
+
"""
|
|
1689
|
+
args = upsert_condition_match_t.Arguments(
|
|
1690
|
+
name=name,
|
|
1691
|
+
condition_parameters=condition_parameters,
|
|
1692
|
+
output_conditions=output_conditions,
|
|
1693
|
+
explicit_name=explicit_name,
|
|
1694
|
+
existing_condition_match=existing_condition_match,
|
|
1695
|
+
)
|
|
1696
|
+
api_request = APIRequest(
|
|
1697
|
+
method=upsert_condition_match_t.ENDPOINT_METHOD,
|
|
1698
|
+
endpoint=upsert_condition_match_t.ENDPOINT_PATH,
|
|
1699
|
+
args=args,
|
|
1700
|
+
)
|
|
1701
|
+
return self.do_request(api_request=api_request, return_type=upsert_condition_match_t.Data)
|
|
1702
|
+
|
|
1676
1703
|
def upsert_field_options(
|
|
1677
1704
|
self,
|
|
1678
1705
|
*,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# ruff: noqa: E402 Q003
|
|
2
|
+
# fmt: off
|
|
3
|
+
# isort: skip_file
|
|
4
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
5
|
+
# Kept only for SDK backwards compatibility
|
|
6
|
+
from .data_t import RgbColor as RgbColor
|
|
7
|
+
from .data_t import CielabColor as CielabColor
|
|
8
|
+
from .data_t import XyzColor as XyzColor
|
|
9
|
+
from .data_t import LChColor as LChColor
|
|
10
|
+
from .data_t import HslColor as HslColor
|
|
11
|
+
from .data_t import RecipeOutputColor as RecipeOutputColor
|
|
12
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|