UncountablePythonSDK 0.0.162__tar.gz → 0.0.163__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.162 → uncountablepythonsdk-0.0.163}/PKG-INFO +1 -1
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/UncountablePythonSDK.egg-info/PKG-INFO +1 -1
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/UncountablePythonSDK.egg-info/SOURCES.txt +2 -0
- uncountablepythonsdk-0.0.163/docs/integration_examples/add_file_to_folder.md +57 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/integration_examples/index.md +1 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/argument_parser/__init__.py +3 -3
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/argument_parser/argument_parser.py +50 -36
- uncountablepythonsdk-0.0.163/pkgs/argument_parser/parser_error.py +60 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/core/query/column.py +1 -1
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/command_server/command_server.py +11 -7
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/datastore/datastore_sqlite.py +10 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/datastore/model.py +5 -1
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/.github/workflows/documentation.yml +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/.github/workflows/publish.yml +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/.gitignore +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/.python-version +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/README.md +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/UncountablePythonSDK.egg-info/requires.txt +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/.gitignore +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/conf.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/index.md +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/integration_examples/create_ingredient.md +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/integration_examples/create_output.md +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/integration_examples/upload_file.md +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/justfile +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/requirements.txt +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/static/favicons/android-chrome-192x192.png +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/static/favicons/android-chrome-512x512.png +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/static/favicons/apple-touch-icon.png +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/static/favicons/browserconfig.xml +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/static/favicons/favicon-16x16.png +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/static/favicons/favicon-32x32.png +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/static/favicons/manifest.json +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/static/favicons/mstile-150x150.png +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/static/favicons/safari-pinned-tab.svg +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/static/logo_blue.png +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/async_batch_large_parse.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/basic_auth.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/create_entity.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/create_ingredient_sdk.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/download_files.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/edit_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/integration-server/jobs/materials_auto/concurrent_cron.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/integration-server/jobs/materials_auto/example_cron.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/integration-server/jobs/materials_auto/example_http.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/integration-server/jobs/materials_auto/example_instrument.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/integration-server/jobs/materials_auto/example_parse.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/integration-server/jobs/materials_auto/example_predictions.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/integration-server/jobs/materials_auto/example_wh.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/integration-server/jobs/materials_auto/profile.yaml +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/integration-server/pyproject.toml +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/invoke_uploader.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/oauth.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/set_input_pdf_attribute.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/set_recipe_metadata_file.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/set_recipe_output_file_sdk.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/upload_files.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/argument_parser/_is_enum.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/argument_parser/_is_namedtuple.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/argument_parser/case_convert.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/filesystem_utils/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/filesystem_utils/_blob_session.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/filesystem_utils/_file_share_session.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/filesystem_utils/_gdrive_session.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/filesystem_utils/_local_session.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/filesystem_utils/_s3_session.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/filesystem_utils/_sftp_session.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/filesystem_utils/file_type_utils.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/filesystem_utils/filesystem_session.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/py.typed +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/annotation.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/missing_sentry.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/opaque_key.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/serial_alias.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/serial_class.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/serial_generic.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/serial_union.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/unknown.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/yaml.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization_util/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization_util/dataclasses.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization_util/serialization_helpers.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/strenum_compat/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/strenum_compat/strenum_compat.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/__main__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/actions_registry/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/actions_registry/__main__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/builder.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/builder_types.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/config.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/cross_output_links.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/emit_io_ts.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/emit_open_api.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/emit_open_api_util.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/emit_python.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/emit_typescript.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/emit_typescript_util.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/load_types.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/non_discriminated_union_exceptions.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/open_api_util.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/parts/base.py.prepart +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/parts/base.ts.prepart +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/test.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/type_info/__main__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/type_info/emit_type_info.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/ui_entry_actions/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/util.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/value_spec/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/value_spec/__main__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/value_spec/convert_type.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/value_spec/emit_python.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/type_spec/value_spec/types.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pyproject.toml +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/setup.cfg +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/core/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/core/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/core/client.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/core/environment.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/core/file_upload.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/core/query/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/core/query/builder.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/core/query/row.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/core/query/types.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/core/types.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/cli.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/construct_client.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/cron.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/db/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/db/connect.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/db/session.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/entrypoint.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/executors/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/executors/executors.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/executors/generic_upload_executor.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/executors/script_executor.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/http_server/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/http_server/types.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/job.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/command_server/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/command_server/command_client.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/command_server/constants.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/command_server/protocol/command_server.proto +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/command_server/types.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/datastore/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/datastore/interface.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/job_scheduler.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/queue_runner.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/types.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/queue_runner/worker.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/request_context.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/scan_profiles.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/scheduler.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/secret_retrieval/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/secret_retrieval/retrieve_secret.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/server.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/telemetry.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/integration/webhook_server/entrypoint.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/py.typed +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/batch/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/batch/execute_batch.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/chemical/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/condition_parameters/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/condition_parameters/upsert_condition_match.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/create_entities.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/create_entity.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/create_or_update_entity.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/export_entities.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/get_entities_data.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/grant_entity_permissions.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/list_aggregate.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/list_entities.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/lock_entity.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/lookup_entity.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/set_barcode.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/set_entity_field_values.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/set_values.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/entity/unlock_entity.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/equipment/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/equipment/associate_equipment_input.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/field_options/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/file_folders/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/file_folders/add_file_to_folder.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/file_folders/modify_file_system.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/files/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/files/download_file.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/id_source/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/id_source/list_id_source.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/id_source/match_id_source.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/input_groups/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/inputs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/inputs/create_inputs.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/inputs/get_input_data.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/inputs/get_input_names.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/inputs/set_input_category.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/inputs/set_intermediate_type.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/integrations/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/integrations/publish_realtime_data.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/integrations/push_notification.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/integrations/register_sockets_token.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/listing/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/listing/export_listing.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/listing/fetch_listing.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/material_families/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/notebooks/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/notebooks/add_notebook_content.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/notebooks/get_notebook_content.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/outputs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/outputs/get_output_data.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/outputs/get_output_names.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/outputs/get_output_organization.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/outputs/update_output_condition_parameter.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/permissions/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/permissions/set_entity_permission.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/project/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/project/get_projects.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/project/get_projects_data.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipe_links/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipe_links/remove_recipe_link.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/add_recipe_to_project.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/add_time_series_data.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/archive_recipes.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/clear_recipe_outputs.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/create_mix_order.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/create_recipe.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/create_recipes.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/edit_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/get_column_calculation_values.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/get_curve.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/get_recipe_links.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/lock_recipes.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/remove_recipe_from_project.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/set_recipe_output_annotations.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/set_recipe_output_file.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/set_recipe_outputs.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/set_recipe_total.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/unlock_recipes.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/upsert_recipe_workflow_step.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/recipes/upsert_step_relationships.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/runsheet/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/runsheet/complete_async_upload.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/runsheet/export_default_runsheet.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/triggers/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/triggers/run_trigger.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/uploader/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/uploader/complete_async_parse.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/uploader/invoke_uploader.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/user/__init__.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/api/user/get_current_user_info.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/async_batch_processor.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/async_batch_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/async_jobs.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/async_jobs_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/auth_retrieval.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/auth_retrieval_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/base.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/base_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/calculations.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/calculations_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/chemical_structure.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/chemical_structure_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/client_base.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/client_config.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/client_config_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/curves.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/curves_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/data.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/data_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/entity.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/entity_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/experiment_groups.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/experiment_groups_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/exports.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/exports_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/field_values.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/field_values_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/fields.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/fields_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/generic_upload.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/generic_upload_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/id_source.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/id_source_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/identifier.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/identifier_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/input_attributes.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/input_attributes_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/inputs.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/inputs_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/integration_server.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/integration_server_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/integration_session.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/integration_session_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/integrations.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/integrations_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/job_definition.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/job_definition_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/listing.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/listing_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/notices.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/notices_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/notifications.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/notifications_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/outputs.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/outputs_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/overrides.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/overrides_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/permissions.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/permissions_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/phases.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/phases_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/post_base.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/post_base_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/queued_job.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/queued_job_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_identifiers.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_identifiers_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_inputs_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_links.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_links_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_metadata.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_metadata_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_output_metadata.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_output_metadata_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_step_relationships.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_step_relationships_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_tags.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_tags_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_workflow_step_types.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_workflow_step_types_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_workflow_steps.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipe_workflow_steps_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipes.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/recipes_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/response.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/response_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/runsheet.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/runsheet_format.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/runsheet_format_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/runsheet_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/secret_retrieval.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/secret_retrieval_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/sockets.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/sockets_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/specs.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/specs_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/step_relationships.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/step_relationships_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/units.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/units_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/uploader.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/uploader_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/users.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/users_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/webhook_job.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/webhook_job_t.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/types/workflows.py +0 -0
- {uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/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.163
|
|
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.162 → uncountablepythonsdk-0.0.163}/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.163
|
|
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
|
|
@@ -14,6 +14,7 @@ docs/conf.py
|
|
|
14
14
|
docs/index.md
|
|
15
15
|
docs/justfile
|
|
16
16
|
docs/requirements.txt
|
|
17
|
+
docs/integration_examples/add_file_to_folder.md
|
|
17
18
|
docs/integration_examples/create_ingredient.md
|
|
18
19
|
docs/integration_examples/create_output.md
|
|
19
20
|
docs/integration_examples/index.md
|
|
@@ -58,6 +59,7 @@ pkgs/argument_parser/_is_enum.py
|
|
|
58
59
|
pkgs/argument_parser/_is_namedtuple.py
|
|
59
60
|
pkgs/argument_parser/argument_parser.py
|
|
60
61
|
pkgs/argument_parser/case_convert.py
|
|
62
|
+
pkgs/argument_parser/parser_error.py
|
|
61
63
|
pkgs/filesystem_utils/__init__.py
|
|
62
64
|
pkgs/filesystem_utils/_blob_session.py
|
|
63
65
|
pkgs/filesystem_utils/_file_share_session.py
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Add a File to a Folder
|
|
2
|
+
|
|
3
|
+
This is a two-step workflow: first upload the file using `upload_files`, then place it in a target folder using `add_file_to_folder`.
|
|
4
|
+
|
|
5
|
+
## Step 1: Upload the file
|
|
6
|
+
|
|
7
|
+
```{code-block} python
|
|
8
|
+
from io import BytesIO
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
from uncountable.core import AuthDetailsApiKey, Client
|
|
12
|
+
from uncountable.core.client import ClientConfig
|
|
13
|
+
from uncountable.core.file_upload import DataFileUpload, UploadedFile
|
|
14
|
+
|
|
15
|
+
client: Client = Client(
|
|
16
|
+
base_url="<BASE_URL>",
|
|
17
|
+
auth_details=AuthDetailsApiKey(
|
|
18
|
+
api_id="<API_ID>", api_secret_key="<API_SECRET_KEY>"
|
|
19
|
+
),
|
|
20
|
+
config=ClientConfig(allow_insecure_tls=False),
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
filepath = Path("<YOUR_FILE_PATH>")
|
|
24
|
+
file_io: BytesIO = BytesIO(filepath.read_bytes())
|
|
25
|
+
|
|
26
|
+
upload_file_response: list[UploadedFile] = client.upload_files(
|
|
27
|
+
file_uploads=[DataFileUpload(data=file_io, name=filepath.name)]
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
file_id = upload_file_response[0].file_id
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Step 2: Add the file to a folder
|
|
34
|
+
|
|
35
|
+
```{code-block} python
|
|
36
|
+
from uncountable.types import identifier_t
|
|
37
|
+
|
|
38
|
+
response = client.add_file_to_folder(
|
|
39
|
+
file_id=file_id,
|
|
40
|
+
folder_key=identifier_t.IdentifierKeyId(id=<FOLDER_ID>),
|
|
41
|
+
)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Example Response:
|
|
45
|
+
```{code}
|
|
46
|
+
Data(modification_made=True, result_id=4521, entity=Entity(id=892, type=<EntityType.FILE_FOLDER_MEMBERSHIP: 'file_folder_membership'>), result_values=None)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
To add the file to the root folder instead of a specific folder:
|
|
50
|
+
|
|
51
|
+
```{code-block} python
|
|
52
|
+
response = client.add_file_to_folder(
|
|
53
|
+
file_id=file_id,
|
|
54
|
+
folder_key=identifier_t.IdentifierKeyRefName(ref_name="root"),
|
|
55
|
+
)
|
|
56
|
+
```
|
|
57
|
+
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/argument_parser/__init__.py
RENAMED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
from ._is_enum import is_string_enum_class as is_string_enum_class
|
|
2
2
|
from .argument_parser import CachedParser as CachedParser
|
|
3
3
|
from .argument_parser import ParserBase as ParserBase
|
|
4
|
-
from .argument_parser import ParserError as ParserError
|
|
5
|
-
from .argument_parser import ParserExtraFieldsError as ParserExtraFieldsError
|
|
6
4
|
from .argument_parser import ParserFunction as ParserFunction
|
|
7
5
|
from .argument_parser import ParserOptions as ParserOptions
|
|
8
|
-
from .argument_parser import ParserTypeError as ParserTypeError
|
|
9
6
|
from .argument_parser import SourceEncoding as SourceEncoding
|
|
10
7
|
from .argument_parser import build_parser as build_parser
|
|
11
8
|
from .argument_parser import is_missing as is_missing
|
|
@@ -14,3 +11,6 @@ from .argument_parser import is_union as is_union
|
|
|
14
11
|
from .case_convert import camel_to_snake_case as camel_to_snake_case
|
|
15
12
|
from .case_convert import kebab_to_pascal_case as kebab_to_pascal_case
|
|
16
13
|
from .case_convert import snake_to_camel_case as snake_to_camel_case
|
|
14
|
+
from .parser_error import ParserError as ParserError
|
|
15
|
+
from .parser_error import ParserExtraFieldsError as ParserExtraFieldsError
|
|
16
|
+
from .parser_error import ParserTypeError as ParserTypeError
|
|
@@ -26,6 +26,7 @@ from pkgs.serialization import (
|
|
|
26
26
|
from ._is_enum import is_string_enum_class
|
|
27
27
|
from ._is_namedtuple import is_namedtuple_type
|
|
28
28
|
from .case_convert import camel_to_snake_case, snake_to_camel_case
|
|
29
|
+
from .parser_error import ParserError, ParserExtraFieldsError, ParserTypeError
|
|
29
30
|
|
|
30
31
|
T = typing.TypeVar("T")
|
|
31
32
|
ParserFunction = typing.Callable[[typing.Any], T]
|
|
@@ -72,22 +73,6 @@ class ParserContext:
|
|
|
72
73
|
cache: ParserCache
|
|
73
74
|
|
|
74
75
|
|
|
75
|
-
class ParserError(BaseException): ...
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
class ParserExtraFieldsError(ParserError):
|
|
79
|
-
extra_fields: set[str]
|
|
80
|
-
|
|
81
|
-
def __init__(self, extra_fields: set[str]) -> None:
|
|
82
|
-
self.extra_fields = extra_fields
|
|
83
|
-
|
|
84
|
-
def __str__(self) -> str:
|
|
85
|
-
return f"extra fields were provided: {', '.join(self.extra_fields)}"
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
class ParserTypeError(ParserError): ...
|
|
89
|
-
|
|
90
|
-
|
|
91
76
|
def is_union(field_type: typing.Any) -> bool:
|
|
92
77
|
origin = typing.get_origin(field_type)
|
|
93
78
|
return origin is typing.Union or origin is types.UnionType
|
|
@@ -152,8 +137,10 @@ def _invoke_fallback_parsers(
|
|
|
152
137
|
except Exception as e:
|
|
153
138
|
exceptions.append(e)
|
|
154
139
|
continue
|
|
155
|
-
raise
|
|
156
|
-
f"Unhandled value {value} cannot be cast to a member of {original_type}"
|
|
140
|
+
raise ParserError(
|
|
141
|
+
f"Unhandled value {value} cannot be cast to a member of {original_type}",
|
|
142
|
+
value=value,
|
|
143
|
+
expected_type=original_type,
|
|
157
144
|
) from ExceptionGroup("Fallback Parser Exception", exceptions)
|
|
158
145
|
|
|
159
146
|
|
|
@@ -169,7 +156,9 @@ def _invoke_membership_parser(
|
|
|
169
156
|
if value == test_value:
|
|
170
157
|
return test_value
|
|
171
158
|
|
|
172
|
-
raise
|
|
159
|
+
raise ParserError(
|
|
160
|
+
f"Expected value from {expected_values} but got value {value}", value=value
|
|
161
|
+
)
|
|
173
162
|
|
|
174
163
|
|
|
175
164
|
# Uses `is` to compare
|
|
@@ -179,8 +168,10 @@ def _build_identity_parser(
|
|
|
179
168
|
def parse(value: typing.Any) -> T:
|
|
180
169
|
if value is identity_value:
|
|
181
170
|
return identity_value
|
|
182
|
-
raise
|
|
183
|
-
f"Expected value {identity_value} (type: {type(identity_value)}) but got value {value} (type: {type(value)})"
|
|
171
|
+
raise ParserError(
|
|
172
|
+
f"Expected value {identity_value} (type: {type(identity_value)}) but got value {value} (type: {type(value)})",
|
|
173
|
+
value=value,
|
|
174
|
+
expected_type=type(identity_value),
|
|
184
175
|
)
|
|
185
176
|
|
|
186
177
|
return parse
|
|
@@ -206,12 +197,12 @@ def _build_parser_discriminated_union(
|
|
|
206
197
|
else:
|
|
207
198
|
discriminant = value.get(discriminator)
|
|
208
199
|
if discriminant is None:
|
|
209
|
-
raise
|
|
200
|
+
raise ParserError("missing-union-discriminant")
|
|
210
201
|
if not isinstance(discriminant, str):
|
|
211
|
-
raise
|
|
202
|
+
raise ParserError("union-discriminant-is-not-string", value=discriminant)
|
|
212
203
|
parser = discriminator_map.get(discriminant)
|
|
213
204
|
if parser is None:
|
|
214
|
-
raise
|
|
205
|
+
raise ParserError("missing-type-for-union-discriminant", value=discriminant)
|
|
215
206
|
return parser(value)
|
|
216
207
|
|
|
217
208
|
return parse
|
|
@@ -384,18 +375,22 @@ def _build_parser_inner(
|
|
|
384
375
|
if origin in (list, set):
|
|
385
376
|
args = typing.get_args(parsed_type)
|
|
386
377
|
if len(args) != 1:
|
|
387
|
-
raise
|
|
378
|
+
raise ParserError(
|
|
379
|
+
"List types only support one argument", expected_type=parsed_type
|
|
380
|
+
)
|
|
388
381
|
arg_parser = _build_parser_inner(args[0], context, type_var_map)
|
|
389
382
|
|
|
390
383
|
def parse_element(value: typing.Any) -> typing.Any:
|
|
391
384
|
try:
|
|
392
385
|
return arg_parser(value)
|
|
393
386
|
except Exception as e:
|
|
394
|
-
raise
|
|
387
|
+
raise ParserError("Failed to parse element", value=value) from e
|
|
395
388
|
|
|
396
389
|
def parse(value: typing.Any) -> typing.Any:
|
|
397
390
|
if not isinstance(value, list):
|
|
398
|
-
raise
|
|
391
|
+
raise ParserError(
|
|
392
|
+
"value is not a list", value=value, expected_type=parsed_type
|
|
393
|
+
)
|
|
399
394
|
return origin(parse_element(x) for x in value)
|
|
400
395
|
|
|
401
396
|
return parse
|
|
@@ -403,7 +398,10 @@ def _build_parser_inner(
|
|
|
403
398
|
if origin is dict:
|
|
404
399
|
args = typing.get_args(parsed_type)
|
|
405
400
|
if len(args) != 2:
|
|
406
|
-
raise
|
|
401
|
+
raise ParserError(
|
|
402
|
+
"Dict types only support two arguments for now",
|
|
403
|
+
expected_type=parsed_type,
|
|
404
|
+
)
|
|
407
405
|
k_inner_parser = _build_parser_inner(
|
|
408
406
|
args[0],
|
|
409
407
|
context,
|
|
@@ -479,7 +477,11 @@ def _build_parser_inner(
|
|
|
479
477
|
return value # type: ignore
|
|
480
478
|
if isinstance(value, (float, int)):
|
|
481
479
|
return str(value) # type: ignore
|
|
482
|
-
raise
|
|
480
|
+
raise ParserError(
|
|
481
|
+
f"Invalid string value: {type(value)}: {value}",
|
|
482
|
+
value=value,
|
|
483
|
+
expected_type=str,
|
|
484
|
+
)
|
|
483
485
|
|
|
484
486
|
return parse_str
|
|
485
487
|
|
|
@@ -488,7 +490,11 @@ def _build_parser_inner(
|
|
|
488
490
|
def parse_as_numeric_type(value: typing.Any) -> T:
|
|
489
491
|
numeric_value: Decimal | float = parsed_type(value) # type: ignore
|
|
490
492
|
if math.isnan(numeric_value):
|
|
491
|
-
raise
|
|
493
|
+
raise ParserError(
|
|
494
|
+
f"Invalid numeric value: {numeric_value}",
|
|
495
|
+
value=numeric_value,
|
|
496
|
+
expected_type=parsed_type,
|
|
497
|
+
)
|
|
492
498
|
|
|
493
499
|
return numeric_value # type: ignore
|
|
494
500
|
|
|
@@ -500,7 +506,7 @@ def _build_parser_inner(
|
|
|
500
506
|
if parsed_type is MissingSentryType:
|
|
501
507
|
|
|
502
508
|
def error(value: typing.Any) -> T:
|
|
503
|
-
raise
|
|
509
|
+
raise ParserError("Missing type cannot be parsed directly")
|
|
504
510
|
|
|
505
511
|
return error
|
|
506
512
|
|
|
@@ -519,7 +525,9 @@ def _build_parser_inner(
|
|
|
519
525
|
type_var_map,
|
|
520
526
|
)
|
|
521
527
|
|
|
522
|
-
raise
|
|
528
|
+
raise ParserError(
|
|
529
|
+
f"Unhandled type {parsed_type}/{origin}", expected_type=parsed_type
|
|
530
|
+
)
|
|
523
531
|
|
|
524
532
|
|
|
525
533
|
# Take in map of parameter name to materialized type
|
|
@@ -583,7 +591,9 @@ def _build_parser_dataclass(
|
|
|
583
591
|
field_value: typing.Any
|
|
584
592
|
if field_raw_value == dataclasses.MISSING:
|
|
585
593
|
if serial_class_data.has_parse_require(field.name):
|
|
586
|
-
raise
|
|
594
|
+
raise ParserError(
|
|
595
|
+
"missing-required-field", field_name=field.name
|
|
596
|
+
)
|
|
587
597
|
if _has_field_default(field):
|
|
588
598
|
field_value = _get_field_default(field)
|
|
589
599
|
elif is_missing(field_type):
|
|
@@ -596,7 +606,9 @@ def _build_parser_dataclass(
|
|
|
596
606
|
# Backwards compatibilty to dataclasses that didn't set a default value
|
|
597
607
|
field_value = False
|
|
598
608
|
else:
|
|
599
|
-
raise
|
|
609
|
+
raise ParserError(
|
|
610
|
+
"missing-value-for-field", field_name=field.name
|
|
611
|
+
)
|
|
600
612
|
elif (
|
|
601
613
|
field_raw_value is None
|
|
602
614
|
and not is_optional(field_type)
|
|
@@ -612,8 +624,10 @@ def _build_parser_dataclass(
|
|
|
612
624
|
data[field.name] = field_value
|
|
613
625
|
|
|
614
626
|
except Exception as e:
|
|
615
|
-
raise
|
|
616
|
-
f"unable-to-parse-field:{field.name}",
|
|
627
|
+
raise ParserError(
|
|
628
|
+
f"unable-to-parse-field:{field.name}",
|
|
629
|
+
field_name=field.name,
|
|
630
|
+
value=field_raw_value,
|
|
617
631
|
) from e
|
|
618
632
|
|
|
619
633
|
if context.options.strict_property_parsing:
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
_UNSET = object()
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ParserError(ValueError):
|
|
9
|
+
"""Raised when argument parsing fails. Carries structured context about the failure."""
|
|
10
|
+
|
|
11
|
+
def __init__(
|
|
12
|
+
self,
|
|
13
|
+
message: str,
|
|
14
|
+
*,
|
|
15
|
+
value: typing.Any = _UNSET,
|
|
16
|
+
expected_type: typing.Any = None,
|
|
17
|
+
field_name: str | None = None,
|
|
18
|
+
) -> None:
|
|
19
|
+
self.error_message = message
|
|
20
|
+
self.value = value
|
|
21
|
+
self.expected_type = expected_type
|
|
22
|
+
self.field_name = field_name
|
|
23
|
+
super().__init__(message)
|
|
24
|
+
|
|
25
|
+
def error_chain(self) -> list[ParserError]:
|
|
26
|
+
errors: list[ParserError] = []
|
|
27
|
+
current: BaseException | None = self
|
|
28
|
+
while isinstance(current, ParserError):
|
|
29
|
+
errors.append(current)
|
|
30
|
+
current = current.__cause__
|
|
31
|
+
return errors
|
|
32
|
+
|
|
33
|
+
def format_error_chain(self) -> str:
|
|
34
|
+
messages: list[str] = []
|
|
35
|
+
current: BaseException | None = self
|
|
36
|
+
while current is not None:
|
|
37
|
+
if isinstance(current, ParserError):
|
|
38
|
+
messages.append(current.error_message)
|
|
39
|
+
current = current.__cause__
|
|
40
|
+
else:
|
|
41
|
+
messages.append(str(current))
|
|
42
|
+
break
|
|
43
|
+
|
|
44
|
+
if len(messages) <= 1:
|
|
45
|
+
return self.error_message
|
|
46
|
+
|
|
47
|
+
return " → ".join(messages)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class ParserExtraFieldsError(ParserError):
|
|
51
|
+
extra_fields: set[str]
|
|
52
|
+
|
|
53
|
+
def __init__(self, extra_fields: set[str]) -> None:
|
|
54
|
+
self.extra_fields = extra_fields
|
|
55
|
+
super().__init__(
|
|
56
|
+
f"extra fields were provided: {', '.join(extra_fields)}",
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class ParserTypeError(ParserError): ...
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/uncountable/core/query/column.py
RENAMED
|
@@ -294,7 +294,7 @@ class BooleanColumn[
|
|
|
294
294
|
) -> ColumnFilter:
|
|
295
295
|
return ColumnFilter(
|
|
296
296
|
identifier=self.identifier,
|
|
297
|
-
filter=lambda x: listing_t.
|
|
297
|
+
filter=lambda x: listing_t.FilterSpecEqualsBoolean(column=x, value=other),
|
|
298
298
|
)
|
|
299
299
|
|
|
300
300
|
|
|
@@ -159,13 +159,17 @@ async def serve(command_queue: CommandQueue, datastore: DatastoreSqlite) -> None
|
|
|
159
159
|
else None
|
|
160
160
|
)
|
|
161
161
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
162
|
+
loop = asyncio.get_running_loop()
|
|
163
|
+
queued_job_metadata = await loop.run_in_executor(
|
|
164
|
+
None,
|
|
165
|
+
lambda: datastore.list_queued_job_metadata(
|
|
166
|
+
status=job_status,
|
|
167
|
+
limit=request.limit,
|
|
168
|
+
offset=request.offset,
|
|
169
|
+
job_ref_name=request.job_ref_name or None,
|
|
170
|
+
submitted_from=submitted_from,
|
|
171
|
+
submitted_to=submitted_to,
|
|
172
|
+
),
|
|
169
173
|
)
|
|
170
174
|
|
|
171
175
|
response_list: list[ListQueuedJobsResult.ListQueuedJobsResultItem] = []
|
|
@@ -36,6 +36,16 @@ class DatastoreSqlite(Datastore):
|
|
|
36
36
|
connection.execute(
|
|
37
37
|
text("alter table queued_jobs add column status VARCHAR")
|
|
38
38
|
)
|
|
39
|
+
connection.execute(
|
|
40
|
+
text(
|
|
41
|
+
"create index if not exists ix_queued_jobs_status on queued_jobs (status)"
|
|
42
|
+
)
|
|
43
|
+
)
|
|
44
|
+
connection.execute(
|
|
45
|
+
text(
|
|
46
|
+
"create index if not exists ix_queued_jobs_submitted_at on queued_jobs (submitted_at)"
|
|
47
|
+
)
|
|
48
|
+
)
|
|
39
49
|
|
|
40
50
|
def add_job_to_queue(
|
|
41
51
|
self, job_payload: queued_job_t.QueuedJobPayload, job_ref_name: str
|
|
@@ -13,7 +13,10 @@ class QueuedJob(Base):
|
|
|
13
13
|
id = Column(Text, primary_key=True)
|
|
14
14
|
job_ref_name = Column(Text, nullable=False, index=True)
|
|
15
15
|
submitted_at = Column(
|
|
16
|
-
DateTime(timezone=True),
|
|
16
|
+
DateTime(timezone=True),
|
|
17
|
+
server_default=func.current_timestamp(),
|
|
18
|
+
nullable=False,
|
|
19
|
+
index=True,
|
|
17
20
|
)
|
|
18
21
|
payload = Column(JSON, nullable=False)
|
|
19
22
|
num_attempts = Column(BigInteger, nullable=False, default=0, server_default="0")
|
|
@@ -21,4 +24,5 @@ class QueuedJob(Base):
|
|
|
21
24
|
Enum(queued_job_t.JobStatus, length=None),
|
|
22
25
|
default=queued_job_t.JobStatus.QUEUED,
|
|
23
26
|
nullable=True,
|
|
27
|
+
index=True,
|
|
24
28
|
)
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/static/favicons/browserconfig.xml
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/static/favicons/favicon-16x16.png
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/static/favicons/favicon-32x32.png
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/docs/static/favicons/manifest.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/async_batch_large_parse.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/create_ingredient_sdk.py
RENAMED
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/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
|
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/set_input_pdf_attribute.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/set_recipe_metadata_file.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/examples/set_recipe_output_file_sdk.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/argument_parser/_is_enum.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/argument_parser/_is_namedtuple.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/argument_parser/case_convert.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/filesystem_utils/__init__.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/filesystem_utils/_blob_session.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/filesystem_utils/_s3_session.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/filesystem_utils/_sftp_session.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/__init__.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/annotation.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/missing_sentry.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/opaque_key.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/serial_alias.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/serial_class.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/serial_generic.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.162 → uncountablepythonsdk-0.0.163}/pkgs/serialization/serial_union.py
RENAMED
|
File without changes
|
|
File without changes
|