UncountablePythonSDK 0.0.159__tar.gz → 0.0.160__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.
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/PKG-INFO +1 -1
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/UncountablePythonSDK.egg-info/PKG-INFO +1 -1
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/UncountablePythonSDK.egg-info/SOURCES.txt +1 -0
- uncountablepythonsdk-0.0.160/docs/static/favicons/manifest.json +18 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/pyproject.toml +1 -1
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/__init__.py +2 -0
- uncountablepythonsdk-0.0.160/pkgs/filesystem_utils/_file_share_session.py +131 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/file_type_utils.py +9 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/emit_open_api.py +21 -15
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/client.py +5 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/worker.py +15 -2
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/edit_recipe_inputs.py +59 -1
- uncountablepythonsdk-0.0.159/docs/static/favicons/manifest.json +0 -18
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/.github/workflows/documentation.yml +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/.github/workflows/publish.yml +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/.gitignore +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/.python-version +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/README.md +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/UncountablePythonSDK.egg-info/requires.txt +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/.gitignore +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/conf.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/index.md +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/integration_examples/create_ingredient.md +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/integration_examples/create_output.md +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/integration_examples/index.md +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/integration_examples/upload_file.md +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/justfile +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/requirements.txt +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/android-chrome-192x192.png +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/android-chrome-512x512.png +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/apple-touch-icon.png +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/browserconfig.xml +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/favicon-16x16.png +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/favicon-32x32.png +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/mstile-150x150.png +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/safari-pinned-tab.svg +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/logo_blue.png +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/async_batch_large_parse.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/basic_auth.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/create_entity.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/create_ingredient_sdk.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/download_files.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/edit_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/concurrent_cron.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/example_cron.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/example_http.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/example_instrument.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/example_parse.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/example_predictions.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/example_wh.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/profile.yaml +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/invoke_uploader.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/oauth.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/set_input_pdf_attribute.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/set_recipe_metadata_file.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/set_recipe_output_file_sdk.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/upload_files.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/argument_parser/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/argument_parser/_is_enum.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/argument_parser/_is_namedtuple.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/argument_parser/argument_parser.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/argument_parser/case_convert.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/_blob_session.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/_gdrive_session.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/_local_session.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/_s3_session.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/_sftp_session.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/filesystem_session.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/py.typed +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/annotation.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/missing_sentry.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/opaque_key.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/serial_alias.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/serial_class.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/serial_generic.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/serial_union.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/unknown.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/yaml.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization_util/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization_util/dataclasses.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization_util/serialization_helpers.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/strenum_compat/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/strenum_compat/strenum_compat.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/__main__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/actions_registry/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/actions_registry/__main__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/builder.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/builder_types.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/config.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/cross_output_links.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/emit_io_ts.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/emit_open_api_util.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/emit_python.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/emit_typescript.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/emit_typescript_util.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/load_types.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/non_discriminated_union_exceptions.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/open_api_util.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/parts/base.py.prepart +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/parts/base.ts.prepart +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/test.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/type_info/__main__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/type_info/emit_type_info.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/ui_entry_actions/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/util.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/value_spec/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/value_spec/__main__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/value_spec/convert_type.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/value_spec/emit_python.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/value_spec/types.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pyproject.toml +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/setup.cfg +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/environment.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/file_upload.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/query/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/query/builder.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/query/column.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/query/row.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/query/types.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/types.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/cli.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/construct_client.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/cron.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/db/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/db/connect.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/db/session.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/entrypoint.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/executors/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/executors/executors.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/executors/generic_upload_executor.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/executors/script_executor.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/http_server/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/http_server/types.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/job.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/command_client.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/command_server.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/constants.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/protocol/command_server.proto +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/types.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/datastore/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/datastore/datastore_sqlite.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/datastore/interface.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/datastore/model.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/job_scheduler.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/queue_runner.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/types.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/request_context.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/scan_profiles.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/scheduler.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/secret_retrieval/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/secret_retrieval/retrieve_secret.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/server.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/telemetry.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/webhook_server/entrypoint.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/py.typed +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/batch/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/batch/execute_batch.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/chemical/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/condition_parameters/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/condition_parameters/upsert_condition_match.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/create_entities.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/create_entity.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/create_or_update_entity.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/export_entities.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/get_entities_data.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/grant_entity_permissions.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/list_aggregate.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/list_entities.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/lock_entity.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/lookup_entity.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/set_barcode.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/set_entity_field_values.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/set_values.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/unlock_entity.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/equipment/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/equipment/associate_equipment_input.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/field_options/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/file_folders/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/file_folders/modify_file_system.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/files/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/files/create_file_record.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/files/download_file.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/id_source/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/id_source/list_id_source.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/id_source/match_id_source.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/input_groups/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/create_inputs.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/get_input_data.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/get_input_names.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/set_input_category.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/set_intermediate_type.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/integrations/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/integrations/publish_realtime_data.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/integrations/push_notification.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/integrations/register_sockets_token.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/listing/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/listing/export_listing.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/listing/fetch_listing.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/material_families/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/notebooks/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/notebooks/add_notebook_content.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/notebooks/get_notebook_content.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/outputs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/outputs/get_output_data.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/outputs/get_output_names.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/outputs/get_output_organization.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/outputs/update_output_condition_parameter.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/permissions/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/permissions/set_entity_permission.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/project/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/project/get_projects.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/project/get_projects_data.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipe_links/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipe_links/remove_recipe_link.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/add_recipe_to_project.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/add_time_series_data.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/archive_recipes.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/clear_recipe_outputs.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/create_mix_order.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/create_recipe.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/create_recipes.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/get_column_calculation_values.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/get_curve.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/get_recipe_links.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/lock_recipes.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/remove_recipe_from_project.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/set_recipe_output_annotations.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/set_recipe_output_file.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/set_recipe_outputs.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/set_recipe_total.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/unlock_recipes.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/runsheet/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/runsheet/complete_async_upload.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/runsheet/export_default_runsheet.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/triggers/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/triggers/run_trigger.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/uploader/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/uploader/complete_async_parse.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/uploader/invoke_uploader.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/user/__init__.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/user/get_current_user_info.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/async_batch_processor.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/async_batch_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/async_jobs.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/async_jobs_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/auth_retrieval.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/auth_retrieval_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/base.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/base_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/calculations.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/calculations_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/chemical_structure.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/chemical_structure_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/client_base.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/client_config.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/client_config_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/curves.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/curves_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/data.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/data_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/entity.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/entity_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/experiment_groups.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/experiment_groups_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/exports.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/exports_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/field_values.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/field_values_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/fields.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/fields_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/generic_upload.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/generic_upload_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/id_source.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/id_source_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/identifier.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/identifier_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/input_attributes.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/input_attributes_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/inputs.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/inputs_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/integration_server.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/integration_server_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/integration_session.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/integration_session_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/integrations.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/integrations_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/job_definition.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/job_definition_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/listing.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/listing_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/notices.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/notices_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/notifications.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/notifications_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/outputs.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/outputs_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/overrides.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/overrides_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/permissions.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/permissions_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/phases.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/phases_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/post_base.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/post_base_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/queued_job.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/queued_job_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_identifiers.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_identifiers_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_inputs_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_links.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_links_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_metadata.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_metadata_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_output_metadata.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_output_metadata_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_step_relationships.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_step_relationships_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_tags.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_tags_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_workflow_steps.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_workflow_steps_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipes.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipes_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/response.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/response_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/runsheet.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/runsheet_format.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/runsheet_format_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/runsheet_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/secret_retrieval.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/secret_retrieval_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/sockets.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/sockets_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/specs.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/specs_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/units.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/units_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/uploader.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/uploader_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/users.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/users_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/webhook_job.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/webhook_job_t.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/workflows.py +0 -0
- {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/workflows_t.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: UncountablePythonSDK
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.160
|
|
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.159 → uncountablepythonsdk-0.0.160}/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.160
|
|
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
|
|
@@ -60,6 +60,7 @@ pkgs/argument_parser/argument_parser.py
|
|
|
60
60
|
pkgs/argument_parser/case_convert.py
|
|
61
61
|
pkgs/filesystem_utils/__init__.py
|
|
62
62
|
pkgs/filesystem_utils/_blob_session.py
|
|
63
|
+
pkgs/filesystem_utils/_file_share_session.py
|
|
63
64
|
pkgs/filesystem_utils/_gdrive_session.py
|
|
64
65
|
pkgs/filesystem_utils/_local_session.py
|
|
65
66
|
pkgs/filesystem_utils/_s3_session.py
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "",
|
|
3
|
+
"icons": [
|
|
4
|
+
{
|
|
5
|
+
"src": "/static/img/icons/android-chrome-192x192.png",
|
|
6
|
+
"sizes": "192x192",
|
|
7
|
+
"type": "image/png"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"src": "/static/img/icons/android-chrome-512x512.png",
|
|
11
|
+
"sizes": "512x512",
|
|
12
|
+
"type": "image/png"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"theme_color": "#ffffff",
|
|
16
|
+
"background_color": "#ffffff",
|
|
17
|
+
"display": "standalone"
|
|
18
|
+
}
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/__init__.py
RENAMED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from ._blob_session import BlobSession as BlobSession
|
|
2
|
+
from ._file_share_session import FileShareSession as FileShareSession
|
|
2
3
|
from ._gdrive_session import GDriveSession as GDriveSession
|
|
3
4
|
from ._gdrive_session import delete_gdrive_file as delete_gdrive_file
|
|
4
5
|
from ._gdrive_session import download_gdrive_file as download_gdrive_file
|
|
@@ -13,6 +14,7 @@ from ._sftp_session import move_sftp_files as move_sftp_files
|
|
|
13
14
|
from .file_type_utils import FileObjectData as FileObjectData
|
|
14
15
|
from .file_type_utils import FileSystemBlobConfig as FileSystemBlobConfig
|
|
15
16
|
from .file_type_utils import FileSystemFileReference as FileSystemFileReference
|
|
17
|
+
from .file_type_utils import FileSystemFileShareConfig as FileSystemFileShareConfig
|
|
16
18
|
from .file_type_utils import FileSystemObject as FileSystemObject
|
|
17
19
|
from .file_type_utils import FileSystemS3Config as FileSystemS3Config
|
|
18
20
|
from .file_type_utils import FileSystemSFTPConfig as FileSystemSFTPConfig
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
from io import BytesIO
|
|
2
|
+
from typing import Self
|
|
3
|
+
|
|
4
|
+
from azure.core.credentials import AzureSasCredential
|
|
5
|
+
from azure.storage.fileshare import ShareClient, ShareDirectoryClient
|
|
6
|
+
|
|
7
|
+
from pkgs.filesystem_utils.file_type_utils import (
|
|
8
|
+
FileObjectData,
|
|
9
|
+
FileSystemFileReference,
|
|
10
|
+
FileSystemFileShareConfig,
|
|
11
|
+
FileSystemObject,
|
|
12
|
+
FileTransfer,
|
|
13
|
+
IncompatibleFileReference,
|
|
14
|
+
)
|
|
15
|
+
from pkgs.filesystem_utils.filesystem_session import FileSystemSession
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class FileShareSession(FileSystemSession):
|
|
19
|
+
def __init__(self, config: FileSystemFileShareConfig) -> None:
|
|
20
|
+
super().__init__()
|
|
21
|
+
self.config = config
|
|
22
|
+
self._share_client: ShareClient | None = None
|
|
23
|
+
|
|
24
|
+
def start(self) -> None:
|
|
25
|
+
self._share_client = ShareClient(
|
|
26
|
+
account_url=self.config.account_url,
|
|
27
|
+
share_name=self.config.share_name,
|
|
28
|
+
credential=self.config.credential,
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
def __enter__(self) -> Self:
|
|
32
|
+
self.start()
|
|
33
|
+
return self
|
|
34
|
+
|
|
35
|
+
def __exit__(self, exc_type: object, exc_val: object, exc_tb: object) -> None:
|
|
36
|
+
self._share_client = None
|
|
37
|
+
|
|
38
|
+
def _list_dir(
|
|
39
|
+
self,
|
|
40
|
+
dir_client: ShareDirectoryClient,
|
|
41
|
+
*,
|
|
42
|
+
recursive: bool,
|
|
43
|
+
valid_extensions: list[str] | None,
|
|
44
|
+
) -> list[FileSystemObject]:
|
|
45
|
+
results: list[FileSystemObject] = []
|
|
46
|
+
for item in dir_client.list_directories_and_files():
|
|
47
|
+
item_path = f"{dir_client.directory_path}/{item['name']}".lstrip("/")
|
|
48
|
+
if item["is_directory"]:
|
|
49
|
+
if recursive:
|
|
50
|
+
assert self._share_client is not None
|
|
51
|
+
results.extend(
|
|
52
|
+
self._list_dir(
|
|
53
|
+
self._share_client.get_directory_client(item_path),
|
|
54
|
+
recursive=recursive,
|
|
55
|
+
valid_extensions=valid_extensions,
|
|
56
|
+
)
|
|
57
|
+
)
|
|
58
|
+
elif valid_extensions is None or any(
|
|
59
|
+
item_path.endswith(ext) for ext in valid_extensions
|
|
60
|
+
):
|
|
61
|
+
results.append(FileSystemFileReference(filepath=item_path))
|
|
62
|
+
return results
|
|
63
|
+
|
|
64
|
+
def list_files(
|
|
65
|
+
self,
|
|
66
|
+
dir_path: FileSystemObject,
|
|
67
|
+
*,
|
|
68
|
+
recursive: bool = False,
|
|
69
|
+
valid_extensions: list[str] | None = None,
|
|
70
|
+
) -> list[FileSystemObject]:
|
|
71
|
+
if not isinstance(dir_path, FileSystemFileReference):
|
|
72
|
+
raise IncompatibleFileReference()
|
|
73
|
+
assert self._share_client is not None, (
|
|
74
|
+
"call to list_files on uninitialized file share session"
|
|
75
|
+
)
|
|
76
|
+
dir_client = self._share_client.get_directory_client(dir_path.filepath)
|
|
77
|
+
return self._list_dir(
|
|
78
|
+
dir_client, recursive=recursive, valid_extensions=valid_extensions
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
def download_files(self, filepaths: list[FileSystemObject]) -> list[FileObjectData]:
|
|
82
|
+
assert self._share_client is not None, (
|
|
83
|
+
"call to download_files on uninitialized file share session"
|
|
84
|
+
)
|
|
85
|
+
downloaded: list[FileObjectData] = []
|
|
86
|
+
for file_object in filepaths:
|
|
87
|
+
if (
|
|
88
|
+
not isinstance(file_object, FileSystemFileReference)
|
|
89
|
+
or not file_object.filename
|
|
90
|
+
):
|
|
91
|
+
raise IncompatibleFileReference()
|
|
92
|
+
file_client = self._share_client.get_file_client(file_object.filepath)
|
|
93
|
+
stream = file_client.download_file()
|
|
94
|
+
file_data = stream.readall()
|
|
95
|
+
downloaded.append(
|
|
96
|
+
FileObjectData(
|
|
97
|
+
file_data=file_data,
|
|
98
|
+
file_IO=BytesIO(file_data),
|
|
99
|
+
filename=file_object.filename,
|
|
100
|
+
filepath=file_object.filepath,
|
|
101
|
+
)
|
|
102
|
+
)
|
|
103
|
+
return downloaded
|
|
104
|
+
|
|
105
|
+
def move_files(self, file_mappings: list[FileTransfer]) -> None:
|
|
106
|
+
assert self._share_client is not None, (
|
|
107
|
+
"call to move_files on uninitialized file share session"
|
|
108
|
+
)
|
|
109
|
+
for src, dest in file_mappings:
|
|
110
|
+
if not isinstance(src, FileSystemFileReference) or not isinstance(
|
|
111
|
+
dest, FileSystemFileReference
|
|
112
|
+
):
|
|
113
|
+
raise IncompatibleFileReference()
|
|
114
|
+
src_client = self._share_client.get_file_client(src.filepath)
|
|
115
|
+
dest_client = self._share_client.get_file_client(dest.filepath)
|
|
116
|
+
source_url = (
|
|
117
|
+
f"{src_client.url}?{self.config.credential.signature}"
|
|
118
|
+
if isinstance(self.config.credential, AzureSasCredential)
|
|
119
|
+
else src_client.url
|
|
120
|
+
)
|
|
121
|
+
dest_client.start_copy_from_url(source_url)
|
|
122
|
+
src_client.delete_file()
|
|
123
|
+
|
|
124
|
+
def delete_files(self, filepaths: list[FileSystemObject]) -> None:
|
|
125
|
+
assert self._share_client is not None, (
|
|
126
|
+
"call to delete_files on uninitialized file share session"
|
|
127
|
+
)
|
|
128
|
+
for file_object in filepaths:
|
|
129
|
+
if not isinstance(file_object, FileSystemFileReference):
|
|
130
|
+
raise IncompatibleFileReference()
|
|
131
|
+
self._share_client.get_file_client(file_object.filepath).delete_file()
|
|
@@ -89,3 +89,12 @@ class FileSystemBlobConfig:
|
|
|
89
89
|
| None
|
|
90
90
|
)
|
|
91
91
|
container: ContainerProperties | str
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
@dataclass(frozen=True, kw_only=True)
|
|
95
|
+
class FileSystemFileShareConfig:
|
|
96
|
+
account_url: str
|
|
97
|
+
credential: (
|
|
98
|
+
AzureNamedKeyCredential | AzureSasCredential | TokenCredential | str | None
|
|
99
|
+
)
|
|
100
|
+
share_name: str
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/emit_open_api.py
RENAMED
|
@@ -93,18 +93,29 @@ def _write_guide_as_html(guide: EmitOpenAPIGuide, *, is_open: bool) -> str:
|
|
|
93
93
|
</details>"""
|
|
94
94
|
|
|
95
95
|
|
|
96
|
+
_FRONTMATTER_RE = re.compile(r"^---\n.*?\n---\n", re.DOTALL)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def _strip_guide_frontmatter(content: str) -> str:
|
|
100
|
+
return _FRONTMATTER_RE.sub("", content).lstrip("\n")
|
|
101
|
+
|
|
102
|
+
|
|
96
103
|
def _open_api_info(
|
|
97
|
-
config: OpenAPIConfig,
|
|
104
|
+
*, config: OpenAPIConfig, root_guides: list[builder.SpecGuide]
|
|
98
105
|
) -> GlobalContextInfo:
|
|
99
|
-
full_guides = "<br/>".join([
|
|
100
|
-
_write_guide_as_html(guide, is_open=True)
|
|
101
|
-
for guide in sorted(guides, key=lambda g: g.ref_name)
|
|
102
|
-
])
|
|
103
|
-
full_description = f"{config.description}<br/>{full_guides}"
|
|
104
106
|
info: GlobalContextInfo = dict()
|
|
105
107
|
info["version"] = "1.0.0"
|
|
106
108
|
info["title"] = "Uncountable API Documentation"
|
|
107
|
-
|
|
109
|
+
sorted_guides = sorted(root_guides, key=lambda g: g.ref_name)
|
|
110
|
+
description_parts = [
|
|
111
|
+
config.description,
|
|
112
|
+
*[
|
|
113
|
+
f'<a id="{guide.ref_name}" />\n\n'
|
|
114
|
+
+ _strip_guide_frontmatter(guide.markdown_content)
|
|
115
|
+
for guide in sorted_guides
|
|
116
|
+
],
|
|
117
|
+
]
|
|
118
|
+
info["description"] = "\n\n".join(description_parts)
|
|
108
119
|
info["x-logo"] = {
|
|
109
120
|
"url": "../static/images/logo_blue.png",
|
|
110
121
|
"altText": "Logo",
|
|
@@ -119,16 +130,11 @@ def _open_api_servers(config: OpenAPIConfig) -> list[EmitOpenAPIServer]:
|
|
|
119
130
|
|
|
120
131
|
|
|
121
132
|
def emit_open_api(builder: builder.SpecBuilder, *, config: OpenAPIConfig) -> None:
|
|
122
|
-
root_guides = builder.guides.get(RootGuideKey(), [])
|
|
123
|
-
openapi_guides = [
|
|
124
|
-
EmitOpenAPIGuide(
|
|
125
|
-
ref_name=guide.ref_name, title=guide.title, html_content=guide.html_content
|
|
126
|
-
)
|
|
127
|
-
for guide in root_guides
|
|
128
|
-
]
|
|
129
133
|
gctx = EmitOpenAPIGlobalContext(
|
|
130
134
|
version="3.0.0",
|
|
131
|
-
info=_open_api_info(
|
|
135
|
+
info=_open_api_info(
|
|
136
|
+
config=config, root_guides=builder.guides.get(RootGuideKey(), [])
|
|
137
|
+
),
|
|
132
138
|
servers=_open_api_servers(config),
|
|
133
139
|
)
|
|
134
140
|
|
|
@@ -330,6 +330,11 @@ class Client(ClientMethods):
|
|
|
330
330
|
headers = self._build_auth_headers()
|
|
331
331
|
headers[UNC_REQUEST_ID_HEADER] = request_id
|
|
332
332
|
headers[UNC_SDK_VERSION_HEADER] = get_version()
|
|
333
|
+
if self._cfg.request_context is not None:
|
|
334
|
+
if self._cfg.request_context.user_locale is not None:
|
|
335
|
+
headers["X-User-Locale"] = self._cfg.request_context.user_locale
|
|
336
|
+
if self._cfg.request_context.user_timezone is not None:
|
|
337
|
+
headers["X-User-Timezone"] = self._cfg.request_context.user_timezone
|
|
333
338
|
method = api_request.method.lower()
|
|
334
339
|
data = {"data": json.dumps(serialize_for_api(api_request.args))}
|
|
335
340
|
match method:
|
|
@@ -23,7 +23,7 @@ from uncountable.integration.queue_runner.datastore.interface import Datastore
|
|
|
23
23
|
from uncountable.integration.queue_runner.types import ListenQueue, ResultQueue
|
|
24
24
|
from uncountable.integration.scan_profiles import load_profiles
|
|
25
25
|
from uncountable.integration.telemetry import JobLogger, Logger, get_otel_tracer
|
|
26
|
-
from uncountable.types import base_t, job_definition_t, queued_job_t
|
|
26
|
+
from uncountable.types import base_t, client_config_t, job_definition_t, queued_job_t
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
class Worker:
|
|
@@ -89,6 +89,16 @@ def _resolve_queued_job_payload(queued_job: queued_job_t.QueuedJob) -> base_t.Js
|
|
|
89
89
|
return queued_job.payload.invocation_context.webhook_payload
|
|
90
90
|
|
|
91
91
|
|
|
92
|
+
def _resolve_queued_job_request_context(
|
|
93
|
+
queued_job: queued_job_t.QueuedJob,
|
|
94
|
+
) -> client_config_t.RequestContext | None:
|
|
95
|
+
match queued_job.payload.invocation_context:
|
|
96
|
+
case queued_job_t.InvocationContextWebhook():
|
|
97
|
+
return queued_job.payload.invocation_context.request_context
|
|
98
|
+
case _:
|
|
99
|
+
return None
|
|
100
|
+
|
|
101
|
+
|
|
92
102
|
def run_queued_job(
|
|
93
103
|
queued_job: queued_job_t.QueuedJob,
|
|
94
104
|
) -> job_definition_t.JobResult:
|
|
@@ -108,8 +118,11 @@ def run_queued_job(
|
|
|
108
118
|
)
|
|
109
119
|
with job_logger.resource_tracking():
|
|
110
120
|
try:
|
|
121
|
+
request_context = _resolve_queued_job_request_context(queued_job)
|
|
111
122
|
client = construct_uncountable_client(
|
|
112
|
-
profile_meta=job_details.profile_metadata,
|
|
123
|
+
profile_meta=job_details.profile_metadata,
|
|
124
|
+
logger=job_logger,
|
|
125
|
+
request_context=request_context,
|
|
113
126
|
)
|
|
114
127
|
batch_processor = AsyncBatchProcessor(client=client)
|
|
115
128
|
|
|
@@ -23,12 +23,15 @@ __all__: list[str] = [
|
|
|
23
23
|
"ENDPOINT_METHOD",
|
|
24
24
|
"ENDPOINT_PATH",
|
|
25
25
|
"MixStepMatchStrategy",
|
|
26
|
+
"PlaceholderAssignmentPlaceholderType",
|
|
26
27
|
"PlaceholderBase",
|
|
27
28
|
"PlaceholderDisplayMode",
|
|
28
29
|
"PlaceholderType",
|
|
30
|
+
"ProductRecipePlaceholderAssignment",
|
|
29
31
|
"RecipeInputEdit",
|
|
30
32
|
"RecipeInputEditAddInput",
|
|
31
33
|
"RecipeInputEditAddInstructions",
|
|
34
|
+
"RecipeInputEditAssignPlaceholder",
|
|
32
35
|
"RecipeInputEditBase",
|
|
33
36
|
"RecipeInputEditChangeBasisViewed",
|
|
34
37
|
"RecipeInputEditClearInputs",
|
|
@@ -41,6 +44,8 @@ __all__: list[str] = [
|
|
|
41
44
|
"RecipeInputEditUpdateAnnotations",
|
|
42
45
|
"RecipeInputEditUpsertInput",
|
|
43
46
|
"RecipeInputPlaceholder",
|
|
47
|
+
"RecipeInputPlaceholderAssignment",
|
|
48
|
+
"RecipeInputPlaceholderAssignmentBase",
|
|
44
49
|
"SubcategoryPlaceholder",
|
|
45
50
|
]
|
|
46
51
|
|
|
@@ -60,6 +65,7 @@ class RecipeInputEditType(StrEnum):
|
|
|
60
65
|
ADD_INSTRUCTIONS = "add_instructions"
|
|
61
66
|
SET_ROLE = "set_role"
|
|
62
67
|
SET_PLACEHOLDER = "set_placeholder"
|
|
68
|
+
ASSIGN_PLACEHOLDER = "assign_placeholder"
|
|
63
69
|
|
|
64
70
|
|
|
65
71
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -269,9 +275,60 @@ class RecipeInputEditPlaceholder(RecipeInputEditBase):
|
|
|
269
275
|
mix_step_match_strategy: MixStepMatchStrategy = MixStepMatchStrategy.FIRST
|
|
270
276
|
|
|
271
277
|
|
|
278
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
279
|
+
class PlaceholderAssignmentPlaceholderType(StrEnum):
|
|
280
|
+
PRODUCT = "product"
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
284
|
+
@serial_class(
|
|
285
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputPlaceholderAssignmentBase",
|
|
286
|
+
)
|
|
287
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
288
|
+
class RecipeInputPlaceholderAssignmentBase:
|
|
289
|
+
type: PlaceholderAssignmentPlaceholderType
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
293
|
+
@serial_class(
|
|
294
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.ProductRecipePlaceholderAssignment",
|
|
295
|
+
parse_require={"type"},
|
|
296
|
+
)
|
|
297
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
298
|
+
class ProductRecipePlaceholderAssignment(RecipeInputPlaceholderAssignmentBase):
|
|
299
|
+
type: typing.Literal[PlaceholderAssignmentPlaceholderType.PRODUCT] = PlaceholderAssignmentPlaceholderType.PRODUCT
|
|
300
|
+
product_key: identifier_t.IdentifierKey
|
|
301
|
+
recipe_key: identifier_t.IdentifierKey
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
305
|
+
RecipeInputPlaceholderAssignment = typing.Annotated[
|
|
306
|
+
typing.Union[ProductRecipePlaceholderAssignment],
|
|
307
|
+
serial_union_annotation(
|
|
308
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputPlaceholderAssignment",
|
|
309
|
+
discriminator="type",
|
|
310
|
+
discriminator_map={
|
|
311
|
+
"product": ProductRecipePlaceholderAssignment,
|
|
312
|
+
},
|
|
313
|
+
),
|
|
314
|
+
]
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
318
|
+
@serial_class(
|
|
319
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditAssignPlaceholder",
|
|
320
|
+
parse_require={"type"},
|
|
321
|
+
)
|
|
322
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
323
|
+
class RecipeInputEditAssignPlaceholder(RecipeInputEditBase):
|
|
324
|
+
type: typing.Literal[RecipeInputEditType.ASSIGN_PLACEHOLDER] = RecipeInputEditType.ASSIGN_PLACEHOLDER
|
|
325
|
+
assignment: RecipeInputPlaceholderAssignment
|
|
326
|
+
mix_step_match_strategy: MixStepMatchStrategy = MixStepMatchStrategy.FIRST
|
|
327
|
+
|
|
328
|
+
|
|
272
329
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
273
330
|
RecipeInputEdit = typing.Annotated[
|
|
274
|
-
RecipeInputEditClearInputs | RecipeInputEditUpsertInput | RecipeInputEditAddInput | RecipeInputEditUpdateAnnotations | RecipeInputEditSetLot | RecipeInputEditSetPropagatedPercentage | RecipeInputEditChangeBasisViewed | RecipeInputEditAddInstructions | RecipeInputEditSetRole | RecipeInputEditPlaceholder,
|
|
331
|
+
RecipeInputEditClearInputs | RecipeInputEditUpsertInput | RecipeInputEditAddInput | RecipeInputEditUpdateAnnotations | RecipeInputEditSetLot | RecipeInputEditSetPropagatedPercentage | RecipeInputEditChangeBasisViewed | RecipeInputEditAddInstructions | RecipeInputEditSetRole | RecipeInputEditPlaceholder | RecipeInputEditAssignPlaceholder,
|
|
275
332
|
serial_union_annotation(
|
|
276
333
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEdit",
|
|
277
334
|
discriminator="type",
|
|
@@ -286,6 +343,7 @@ RecipeInputEdit = typing.Annotated[
|
|
|
286
343
|
"add_instructions": RecipeInputEditAddInstructions,
|
|
287
344
|
"set_role": RecipeInputEditSetRole,
|
|
288
345
|
"set_placeholder": RecipeInputEditPlaceholder,
|
|
346
|
+
"assign_placeholder": RecipeInputEditAssignPlaceholder,
|
|
289
347
|
},
|
|
290
348
|
),
|
|
291
349
|
]
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "",
|
|
3
|
-
"icons": [
|
|
4
|
-
{
|
|
5
|
-
"src": "/static/img/icons/android-chrome-192x192.png",
|
|
6
|
-
"sizes": "192x192",
|
|
7
|
-
"type": "image/png"
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
"src": "/static/img/icons/android-chrome-512x512.png",
|
|
11
|
-
"sizes": "512x512",
|
|
12
|
-
"type": "image/png"
|
|
13
|
-
}
|
|
14
|
-
],
|
|
15
|
-
"theme_color": "#ffffff",
|
|
16
|
-
"background_color": "#ffffff",
|
|
17
|
-
"display": "standalone"
|
|
18
|
-
}
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/.github/workflows/documentation.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/integration_examples/index.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/browserconfig.xml
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/favicon-16x16.png
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/favicon-32x32.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/async_batch_large_parse.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/create_ingredient_sdk.py
RENAMED
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/edit_recipe_inputs.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/set_input_pdf_attribute.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/set_recipe_metadata_file.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/set_recipe_output_file_sdk.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/argument_parser/__init__.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/argument_parser/_is_enum.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/argument_parser/_is_namedtuple.py
RENAMED
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/argument_parser/case_convert.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/_blob_session.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/_s3_session.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/_sftp_session.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/__init__.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/annotation.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/missing_sentry.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/opaque_key.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/serial_alias.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/serial_class.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/serial_generic.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/serial_union.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization_util/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|