UncountablePythonSDK 0.0.75__tar.gz → 0.0.77__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of UncountablePythonSDK might be problematic. Click here for more details.
- {uncountablepythonsdk-0.0.75/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.77}/PKG-INFO +2 -2
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77/UncountablePythonSDK.egg-info}/PKG-INFO +2 -2
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/UncountablePythonSDK.egg-info/SOURCES.txt +6 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/UncountablePythonSDK.egg-info/requires.txt +1 -1
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/docs/requirements.txt +1 -1
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/examples/async_batch.py +3 -3
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/argument_parser/argument_parser.py +7 -7
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/filesystem_utils/_s3_session.py +3 -3
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/serialization/serial_class.py +3 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/builder.py +26 -27
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/config.py +3 -3
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/emit_io_ts.py +6 -6
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/emit_open_api.py +4 -4
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/emit_python.py +20 -20
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/emit_typescript.py +4 -4
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/emit_typescript_util.py +4 -4
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/type_info/emit_type_info.py +6 -6
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pyproject.toml +1 -1
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/core/environment.py +15 -2
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/core/file_upload.py +1 -3
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/construct_client.py +3 -4
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/executors/generic_upload_executor.py +7 -7
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/executors/script_executor.py +3 -3
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/job_scheduler.py +1 -1
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/worker.py +3 -8
- uncountablepythonsdk-0.0.77/uncountable/integration/scan_profiles.py +67 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/secret_retrieval/retrieve_secret.py +1 -1
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/server.py +4 -12
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/telemetry.py +2 -2
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/webhook_server/entrypoint.py +4 -10
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/__init__.py +8 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/create_entities.py +4 -2
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/create_entity.py +4 -2
- uncountablepythonsdk-0.0.77/uncountable/types/api/entity/grant_entity_permissions.py +48 -0
- uncountablepythonsdk-0.0.77/uncountable/types/api/recipes/get_column_calculation_values.py +58 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/async_batch_processor.py +43 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/async_batch_t.py +1 -0
- uncountablepythonsdk-0.0.77/uncountable/types/auth_retrieval.py +12 -0
- uncountablepythonsdk-0.0.77/uncountable/types/auth_retrieval_t.py +75 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/client_base.py +62 -4
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/entity.py +3 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/entity_t.py +20 -0
- uncountablepythonsdk-0.0.77/uncountable/types/integration_server.py +9 -0
- uncountablepythonsdk-0.0.77/uncountable/types/integration_server_t.py +37 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/job_definition.py +1 -5
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/job_definition_t.py +20 -60
- uncountablepythonsdk-0.0.75/uncountable/integration/scan_profiles.py +0 -43
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/.github/workflows/documentation.yml +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/.github/workflows/publish.yml +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/.gitignore +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/README.md +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/docs/.gitignore +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/docs/conf.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/docs/index.md +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/docs/justfile +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/docs/quickstart.md +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/docs/static/favicons/android-chrome-192x192.png +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/docs/static/favicons/android-chrome-512x512.png +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/docs/static/favicons/apple-touch-icon.png +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/docs/static/favicons/browserconfig.xml +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/docs/static/favicons/favicon-16x16.png +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/docs/static/favicons/favicon-32x32.png +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/docs/static/favicons/manifest.json +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/docs/static/favicons/mstile-150x150.png +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/docs/static/favicons/safari-pinned-tab.svg +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/docs/static/logo_blue.png +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/examples/create_entity.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/examples/edit_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/examples/integration-server/jobs/materials_auto/example_cron.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/examples/integration-server/jobs/materials_auto/profile.yaml +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/examples/integration-server/pyproject.toml +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/examples/invoke_uploader.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/examples/set_recipe_metadata_file.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/examples/set_recipe_output_file_sdk.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/examples/upload_files.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/argument_parser/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/argument_parser/_is_enum.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/argument_parser/_is_namedtuple.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/argument_parser/case_convert.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/filesystem_utils/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/filesystem_utils/_gdrive_session.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/filesystem_utils/_local_session.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/filesystem_utils/_sftp_session.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/filesystem_utils/file_type_utils.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/filesystem_utils/filesystem_session.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/py.typed +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/serialization/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/serialization/missing_sentry.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/serialization/opaque_key.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/serialization/serial_union.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/serialization/yaml.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/serialization_util/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/serialization_util/serialization_helpers.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/strenum_compat/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/strenum_compat/strenum_compat.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/__main__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/actions_registry/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/actions_registry/__main__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/emit_open_api_util.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/load_types.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/open_api_util.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/parts/base.py.prepart +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/parts/base.ts.prepart +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/test.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/type_info/__main__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/util.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/value_spec/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/value_spec/__main__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/value_spec/convert_type.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/value_spec/emit_python.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/value_spec/types.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/setup.cfg +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/core/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/core/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/core/client.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/core/types.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/cli.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/cron.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/db/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/db/connect.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/db/session.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/entrypoint.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/executors/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/executors/executors.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/job.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/command_client.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/command_server.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/protocol/command_server.proto +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/types.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/datastore/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/datastore/datastore_sqlite.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/datastore/interface.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/datastore/model.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/queue_runner.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/types.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/scheduler.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/integration/secret_retrieval/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/py.typed +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/batch/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/batch/execute_batch.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/chemical/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/get_entities_data.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/list_entities.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/lock_entity.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/set_values.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/unlock_entity.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/equipment/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/equipment/associate_equipment_input.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/field_options/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/id_source/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/id_source/list_id_source.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/id_source/match_id_source.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/input_groups/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/create_inputs.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/get_input_data.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/get_input_names.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/set_input_category.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/set_intermediate_type.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/material_families/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/outputs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/outputs/get_output_data.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/outputs/get_output_names.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/permissions/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/project/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/project/get_projects.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/project/get_projects_data.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipe_links/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipe_links/remove_recipe_link.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/add_recipe_to_project.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/archive_recipes.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/clear_recipe_outputs.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/create_recipe.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/create_recipes.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/edit_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/get_curve.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/get_recipe_links.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/lock_recipes.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/remove_recipe_from_project.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/set_recipe_output_annotations.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/set_recipe_output_file.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/set_recipe_outputs.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/unlock_recipes.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/triggers/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/triggers/run_trigger.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/uploader/__init__.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/api/uploader/invoke_uploader.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/base.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/base_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/calculations.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/calculations_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/chemical_structure.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/chemical_structure_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/client_config.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/client_config_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/curves.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/curves_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/experiment_groups.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/experiment_groups_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/field_values.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/field_values_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/fields.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/fields_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/generic_upload.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/generic_upload_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/id_source.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/id_source_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/identifier.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/identifier_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/input_attributes.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/input_attributes_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/inputs.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/inputs_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/outputs.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/outputs_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/overrides.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/overrides_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/permissions.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/permissions_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/phases.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/phases_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/post_base.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/post_base_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/queued_job.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/queued_job_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_identifiers.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_identifiers_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_inputs_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_links.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_links_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_metadata.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_metadata_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_output_metadata.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_output_metadata_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_tags.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_tags_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_workflow_steps.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_workflow_steps_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/recipes.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/recipes_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/response.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/response_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/secret_retrieval.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/secret_retrieval_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/units.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/units_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/users.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/users_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/webhook_job.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/webhook_job_t.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/workflows.py +0 -0
- {uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/uncountable/types/workflows_t.py +0 -0
{uncountablepythonsdk-0.0.75/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.77}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: UncountablePythonSDK
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.77
|
|
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
|
|
@@ -16,7 +16,7 @@ Classifier: Topic :: Utilities
|
|
|
16
16
|
Classifier: Typing :: Typed
|
|
17
17
|
Requires-Python: >=3.11
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
|
-
Requires-Dist: aiotus==
|
|
19
|
+
Requires-Dist: aiotus==1.*
|
|
20
20
|
Requires-Dist: aiohttp==3.*
|
|
21
21
|
Requires-Dist: requests==2.*
|
|
22
22
|
Requires-Dist: SQLAlchemy>=1.4.0
|
{uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77/UncountablePythonSDK.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: UncountablePythonSDK
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.77
|
|
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
|
|
@@ -16,7 +16,7 @@ Classifier: Topic :: Utilities
|
|
|
16
16
|
Classifier: Typing :: Typed
|
|
17
17
|
Requires-Python: >=3.11
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
|
-
Requires-Dist: aiotus==
|
|
19
|
+
Requires-Dist: aiotus==1.*
|
|
20
20
|
Requires-Dist: aiohttp==3.*
|
|
21
21
|
Requires-Dist: requests==2.*
|
|
22
22
|
Requires-Dist: SQLAlchemy>=1.4.0
|
|
@@ -136,6 +136,8 @@ uncountable/types/__init__.py
|
|
|
136
136
|
uncountable/types/async_batch.py
|
|
137
137
|
uncountable/types/async_batch_processor.py
|
|
138
138
|
uncountable/types/async_batch_t.py
|
|
139
|
+
uncountable/types/auth_retrieval.py
|
|
140
|
+
uncountable/types/auth_retrieval_t.py
|
|
139
141
|
uncountable/types/base.py
|
|
140
142
|
uncountable/types/base_t.py
|
|
141
143
|
uncountable/types/calculations.py
|
|
@@ -165,6 +167,8 @@ uncountable/types/input_attributes.py
|
|
|
165
167
|
uncountable/types/input_attributes_t.py
|
|
166
168
|
uncountable/types/inputs.py
|
|
167
169
|
uncountable/types/inputs_t.py
|
|
170
|
+
uncountable/types/integration_server.py
|
|
171
|
+
uncountable/types/integration_server_t.py
|
|
168
172
|
uncountable/types/job_definition.py
|
|
169
173
|
uncountable/types/job_definition_t.py
|
|
170
174
|
uncountable/types/outputs.py
|
|
@@ -217,6 +221,7 @@ uncountable/types/api/entity/__init__.py
|
|
|
217
221
|
uncountable/types/api/entity/create_entities.py
|
|
218
222
|
uncountable/types/api/entity/create_entity.py
|
|
219
223
|
uncountable/types/api/entity/get_entities_data.py
|
|
224
|
+
uncountable/types/api/entity/grant_entity_permissions.py
|
|
220
225
|
uncountable/types/api/entity/list_entities.py
|
|
221
226
|
uncountable/types/api/entity/lock_entity.py
|
|
222
227
|
uncountable/types/api/entity/resolve_entity_ids.py
|
|
@@ -267,6 +272,7 @@ uncountable/types/api/recipes/create_recipe.py
|
|
|
267
272
|
uncountable/types/api/recipes/create_recipes.py
|
|
268
273
|
uncountable/types/api/recipes/disassociate_recipe_as_input.py
|
|
269
274
|
uncountable/types/api/recipes/edit_recipe_inputs.py
|
|
275
|
+
uncountable/types/api/recipes/get_column_calculation_values.py
|
|
270
276
|
uncountable/types/api/recipes/get_curve.py
|
|
271
277
|
uncountable/types/api/recipes/get_recipe_calculations.py
|
|
272
278
|
uncountable/types/api/recipes/get_recipe_links.py
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import os
|
|
1
2
|
from decimal import Decimal
|
|
2
3
|
|
|
3
4
|
from uncountable.core import AsyncBatchProcessor, AuthDetailsApiKey, Client
|
|
@@ -11,10 +12,9 @@ from uncountable.types.recipe_identifiers import (
|
|
|
11
12
|
)
|
|
12
13
|
|
|
13
14
|
client = Client(
|
|
14
|
-
base_url=
|
|
15
|
+
base_url=os.environ["UNC_BASE_URL"],
|
|
15
16
|
auth_details=AuthDetailsApiKey(
|
|
16
|
-
api_id="
|
|
17
|
-
api_secret_key="X",
|
|
17
|
+
api_id=os.environ["UNC_API_ID"], api_secret_key=os.environ["UNC_API_SECRET_KEY"]
|
|
18
18
|
),
|
|
19
19
|
)
|
|
20
20
|
batch_loader = AsyncBatchProcessor(client=client)
|
{uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/argument_parser/argument_parser.py
RENAMED
|
@@ -49,7 +49,7 @@ class ParserExtraFieldsError(ParserError):
|
|
|
49
49
|
self.extra_fields = extra_fields
|
|
50
50
|
|
|
51
51
|
def __str__(self) -> str:
|
|
52
|
-
return f"extra fields were provided: {
|
|
52
|
+
return f"extra fields were provided: {', '.join(self.extra_fields)}"
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
def is_optional(field_type: typing.Any) -> bool:
|
|
@@ -268,15 +268,15 @@ def _build_parser_inner(
|
|
|
268
268
|
|
|
269
269
|
def parse_int(value: typing.Any) -> T:
|
|
270
270
|
if isinstance(value, str):
|
|
271
|
-
assert (
|
|
272
|
-
"
|
|
273
|
-
)
|
|
271
|
+
assert "_" not in value, (
|
|
272
|
+
"numbers with underscores not considered integers"
|
|
273
|
+
)
|
|
274
274
|
|
|
275
275
|
dec_value = Decimal(value)
|
|
276
276
|
int_value = int(dec_value)
|
|
277
|
-
assert (
|
|
278
|
-
|
|
279
|
-
)
|
|
277
|
+
assert int_value == dec_value, (
|
|
278
|
+
f"value ({value}) cannot be parsed to int without discarding precision"
|
|
279
|
+
)
|
|
280
280
|
return int_value # type: ignore
|
|
281
281
|
|
|
282
282
|
return parse_int
|
{uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/filesystem_utils/_s3_session.py
RENAMED
|
@@ -76,9 +76,9 @@ class S3Session(FileSystemSession):
|
|
|
76
76
|
filepaths: list[FileSystemObject],
|
|
77
77
|
) -> list[FileObjectData]:
|
|
78
78
|
downloaded_files: list[FileObjectData] = []
|
|
79
|
-
assert (
|
|
80
|
-
|
|
81
|
-
)
|
|
79
|
+
assert self.bucket is not None, (
|
|
80
|
+
"call to download_files on uninitialized s3 session"
|
|
81
|
+
)
|
|
82
82
|
|
|
83
83
|
for file_object in filepaths:
|
|
84
84
|
if (
|
{uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/serialization/serial_class.py
RENAMED
|
@@ -103,6 +103,9 @@ def _get_merged_serial_class_data(type_class: type[Any]) -> _SerialClassData | N
|
|
|
103
103
|
if hasattr(type_class, "__unc_serial_data")
|
|
104
104
|
else None
|
|
105
105
|
)
|
|
106
|
+
if base_class_data is None:
|
|
107
|
+
return None
|
|
108
|
+
|
|
106
109
|
if type_class.__bases__ is not None:
|
|
107
110
|
for base in type_class.__bases__:
|
|
108
111
|
curr_base_class_data = _get_merged_serial_class_data(base)
|
|
@@ -359,9 +359,9 @@ class SpecTypeDefn(SpecType):
|
|
|
359
359
|
property_name_case = NameCase(name_case_raw)
|
|
360
360
|
|
|
361
361
|
if property_name_case != NameCase.preserve:
|
|
362
|
-
assert util.is_valid_property_name(
|
|
363
|
-
name
|
|
364
|
-
)
|
|
362
|
+
assert util.is_valid_property_name(name), (
|
|
363
|
+
f"{name} is not a valid property name"
|
|
364
|
+
)
|
|
365
365
|
|
|
366
366
|
data_type = data.get("type")
|
|
367
367
|
builder.ensure(data_type is not None, "missing `type` entry")
|
|
@@ -535,13 +535,8 @@ class SpecTypeDefnObject(SpecTypeDefn):
|
|
|
535
535
|
base_type: list[SpecType] = [self.base] if self.base is not None else []
|
|
536
536
|
return base_type + prop_types
|
|
537
537
|
|
|
538
|
-
def
|
|
539
|
-
|
|
540
|
-
assert (
|
|
541
|
-
len(self.parameters) == 1
|
|
542
|
-
), "Only single generic parameters current supported"
|
|
543
|
-
return self.parameters[0]
|
|
544
|
-
return None
|
|
538
|
+
def get_generics(self) -> list[str]:
|
|
539
|
+
return self.parameters
|
|
545
540
|
|
|
546
541
|
|
|
547
542
|
class SpecTypeDefnAlias(SpecTypeDefn):
|
|
@@ -595,21 +590,21 @@ class SpecTypeDefnUnion(SpecTypeDefn):
|
|
|
595
590
|
self.discriminator_map = {}
|
|
596
591
|
for sub_type in self.types:
|
|
597
592
|
builder.push_where(sub_type.name)
|
|
598
|
-
assert isinstance(
|
|
599
|
-
|
|
600
|
-
)
|
|
593
|
+
assert isinstance(sub_type, SpecTypeDefnObject), (
|
|
594
|
+
"union-type-must-be-object"
|
|
595
|
+
)
|
|
601
596
|
assert sub_type.properties is not None
|
|
602
597
|
discriminator_type = sub_type.properties.get(self.discriminator)
|
|
603
|
-
assert (
|
|
604
|
-
|
|
605
|
-
)
|
|
598
|
+
assert discriminator_type is not None, (
|
|
599
|
+
f"missing-discriminator-field: {sub_type}"
|
|
600
|
+
)
|
|
606
601
|
prop_type = unwrap_literal_type(discriminator_type.spec_type)
|
|
607
602
|
assert prop_type is not None
|
|
608
603
|
assert prop_type.is_value_to_string()
|
|
609
604
|
discriminant = str(prop_type.value)
|
|
610
|
-
assert (
|
|
611
|
-
discriminant
|
|
612
|
-
)
|
|
605
|
+
assert discriminant not in self.discriminator_map, (
|
|
606
|
+
f"duplicated-discriminant, {discriminant} in {sub_type}"
|
|
607
|
+
)
|
|
613
608
|
self.discriminator_map[discriminant] = sub_type
|
|
614
609
|
|
|
615
610
|
builder.pop_where()
|
|
@@ -929,9 +924,9 @@ class SpecEndpoint:
|
|
|
929
924
|
self.is_external = self.path_root == "api/external"
|
|
930
925
|
self.has_attachment = data.get("has_attachment", False)
|
|
931
926
|
|
|
932
|
-
assert (
|
|
933
|
-
|
|
934
|
-
)
|
|
927
|
+
assert not is_sdk or self.desc is not None, (
|
|
928
|
+
f"Endpoint description required for SDK endpoints, missing: {path}"
|
|
929
|
+
)
|
|
935
930
|
|
|
936
931
|
@property
|
|
937
932
|
def resolved_path(self: Self) -> str:
|
|
@@ -1113,9 +1108,9 @@ class SpecNamespace:
|
|
|
1113
1108
|
continue
|
|
1114
1109
|
|
|
1115
1110
|
if "value" in defn:
|
|
1116
|
-
assert util.is_valid_property_name(
|
|
1117
|
-
name
|
|
1118
|
-
)
|
|
1111
|
+
assert util.is_valid_property_name(name), (
|
|
1112
|
+
f"{name} is not a valid constant name"
|
|
1113
|
+
)
|
|
1119
1114
|
spec_constant = SpecConstant(self, name)
|
|
1120
1115
|
self.constants[name] = spec_constant
|
|
1121
1116
|
continue
|
|
@@ -1134,7 +1129,11 @@ class SpecNamespace:
|
|
|
1134
1129
|
spec_type = SpecTypeDefnStringEnum(self, name)
|
|
1135
1130
|
else:
|
|
1136
1131
|
parameters = (
|
|
1137
|
-
[
|
|
1132
|
+
[
|
|
1133
|
+
parameter.name
|
|
1134
|
+
for name_parameters in parsed_name.parameters
|
|
1135
|
+
for parameter in name_parameters
|
|
1136
|
+
]
|
|
1138
1137
|
if parsed_name.parameters is not None
|
|
1139
1138
|
else None
|
|
1140
1139
|
)
|
|
@@ -1456,4 +1455,4 @@ class SpecBuilder:
|
|
|
1456
1455
|
)
|
|
1457
1456
|
|
|
1458
1457
|
def resolve_proper_name(self, stype: SpecTypeDefn) -> str:
|
|
1459
|
-
return f"{
|
|
1458
|
+
return f"{'.'.join(stype.namespace.path)}.{stype.name}"
|
|
@@ -108,9 +108,9 @@ def parse_yaml_config(config_file: str) -> Config:
|
|
|
108
108
|
raw_config: dict[str, ConfigValueType] = yaml.safe_load(input)
|
|
109
109
|
|
|
110
110
|
raw_type_spec_types = raw_config["type_spec_types"]
|
|
111
|
-
assert isinstance(
|
|
112
|
-
|
|
113
|
-
)
|
|
111
|
+
assert isinstance(raw_type_spec_types, list), (
|
|
112
|
+
"type_spec_types, must be a list of folders"
|
|
113
|
+
)
|
|
114
114
|
type_spec_types = [os.path.abspath(folder) for folder in raw_type_spec_types]
|
|
115
115
|
|
|
116
116
|
api_endpoint = _parse_string_lookup(
|
|
@@ -100,14 +100,14 @@ def _emit_type_io_ts_impl(ctx: EmitTypescriptContext, stype: builder.SpecType) -
|
|
|
100
100
|
else:
|
|
101
101
|
assert len(missable_lines) > 0 and len(required_lines) > 0
|
|
102
102
|
ctx.out.write("IO.intersection([\n")
|
|
103
|
-
ctx.out.write(f"{INDENT}IO.partial({
|
|
103
|
+
ctx.out.write(f"{INDENT}IO.partial({'{'}\n")
|
|
104
104
|
for line in missable_lines:
|
|
105
105
|
ctx.out.write(f"{INDENT}{line}")
|
|
106
|
-
ctx.out.write(f"{INDENT}{
|
|
107
|
-
ctx.out.write(f"{INDENT}IO.type({
|
|
106
|
+
ctx.out.write(f"{INDENT}{'}'}),\n")
|
|
107
|
+
ctx.out.write(f"{INDENT}IO.type({'{'}\n")
|
|
108
108
|
for line in required_lines:
|
|
109
109
|
ctx.out.write(f"{INDENT}{line}")
|
|
110
|
-
ctx.out.write(f"{INDENT}{
|
|
110
|
+
ctx.out.write(f"{INDENT}{'}'}),\n")
|
|
111
111
|
ctx.out.write("])\n")
|
|
112
112
|
|
|
113
113
|
ctx.out.write("\n")
|
|
@@ -125,11 +125,11 @@ def refer_to_io_ts(
|
|
|
125
125
|
spec = refer_to_io_ts(ctx, stype.parameters[0])
|
|
126
126
|
return f"IO.array({spec})"
|
|
127
127
|
if stype.defn_type.name == builder.BaseTypeName.s_union:
|
|
128
|
-
return f
|
|
128
|
+
return f"IO.union([{', '.join([refer_to_io_ts(ctx, p) for p in stype.parameters])}])"
|
|
129
129
|
if stype.defn_type.name == builder.BaseTypeName.s_optional:
|
|
130
130
|
return f"IO.optional({refer_to_io_ts(ctx, stype.parameters[0])})"
|
|
131
131
|
if stype.defn_type.name == builder.BaseTypeName.s_tuple:
|
|
132
|
-
return f"IO.tuple([{
|
|
132
|
+
return f"IO.tuple([{', '.join([refer_to_io_ts(ctx, p) for p in stype.parameters])}])"
|
|
133
133
|
return refer_to_io_ts(ctx, stype.defn_type)
|
|
134
134
|
|
|
135
135
|
assert isinstance(stype, builder.SpecTypeDefn)
|
|
@@ -416,7 +416,7 @@ def _emit_namespace(
|
|
|
416
416
|
{name: value.asdict() for name, value in types.items()},
|
|
417
417
|
)
|
|
418
418
|
|
|
419
|
-
path = f"{config.types_output}/common/{
|
|
419
|
+
path = f"{config.types_output}/common/{'/'.join(namespace.path)}.yaml"
|
|
420
420
|
oa_namespace = {"components": oa_components}
|
|
421
421
|
_rewrite_with_notice(path, yaml.dumps(oa_namespace, sort_keys=False))
|
|
422
422
|
|
|
@@ -559,7 +559,7 @@ def _emit_endpoint(
|
|
|
559
559
|
gctx.tags.add(EmitOpenAPITag(name=tag_name, description=""))
|
|
560
560
|
gctx.tag_groups[tag_group].add(tag_name)
|
|
561
561
|
|
|
562
|
-
ref_path = f"common/{
|
|
562
|
+
ref_path = f"common/{'/'.join(namespace.path)}.yaml#/components/endpoint"
|
|
563
563
|
ep = namespace.endpoint
|
|
564
564
|
gctx.paths.append(
|
|
565
565
|
EmitOpenAPIPath(
|
|
@@ -577,7 +577,7 @@ def _emit_endpoint(
|
|
|
577
577
|
ctx.endpoint = EmitOpenAPIEndpoint(
|
|
578
578
|
method=namespace.endpoint.method.lower(),
|
|
579
579
|
tags=[tag_name],
|
|
580
|
-
summary=f"{
|
|
580
|
+
summary=f"{'/'.join(namespace.path[path_cutoff:])}",
|
|
581
581
|
description=description,
|
|
582
582
|
is_beta=namespace.endpoint.is_beta,
|
|
583
583
|
stability_level=namespace.endpoint.stability_level,
|
|
@@ -694,5 +694,5 @@ def open_api_type(
|
|
|
694
694
|
ctx.namespaces.add(stype.namespace)
|
|
695
695
|
# external namespace resolution
|
|
696
696
|
return OpenAPIRefType(
|
|
697
|
-
source=f"{resolve_namespace_ref(source_path=ctx.namespace.path, ref_path=stype.namespace.path, ref=
|
|
697
|
+
source=f"{resolve_namespace_ref(source_path=ctx.namespace.path, ref_path=stype.namespace.path, ref='/components/schema')}/{stype.name}"
|
|
698
698
|
)
|
|
@@ -296,7 +296,7 @@ def _emit_types(*, builder: builder.SpecBuilder, config: PythonConfig) -> None:
|
|
|
296
296
|
full.write(f"# === END section from {namespace.name}.part.py ===\n")
|
|
297
297
|
|
|
298
298
|
basename = "/".join(namespace.path)
|
|
299
|
-
filename = f"{config.types_output}/{basename}{
|
|
299
|
+
filename = f"{config.types_output}/{basename}{'' if len(namespace.path) > 1 else '_t'}.py"
|
|
300
300
|
util.rewrite_file(filename, full.getvalue())
|
|
301
301
|
|
|
302
302
|
# Deprecated SDK support
|
|
@@ -390,13 +390,13 @@ from .base_t import ObjectId as ObjectId
|
|
|
390
390
|
def _validate_supports_handler_generation(
|
|
391
391
|
stype: builder.SpecTypeDefn, name: str, supports_inheritance: bool = False
|
|
392
392
|
) -> builder.SpecTypeDefnObject:
|
|
393
|
-
assert isinstance(
|
|
394
|
-
|
|
395
|
-
)
|
|
393
|
+
assert isinstance(stype, builder.SpecTypeDefnObject), (
|
|
394
|
+
f"External api {name} must be an object"
|
|
395
|
+
)
|
|
396
396
|
if not supports_inheritance:
|
|
397
|
-
assert (
|
|
398
|
-
|
|
399
|
-
)
|
|
397
|
+
assert stype.base is None or stype.base.is_base, (
|
|
398
|
+
f"Inheritance not supported in external api {name}"
|
|
399
|
+
)
|
|
400
400
|
return stype
|
|
401
401
|
|
|
402
402
|
|
|
@@ -756,7 +756,7 @@ def _emit_properties(
|
|
|
756
756
|
def _named_type_path(ctx: Context, stype: builder.SpecTypeDefn) -> str:
|
|
757
757
|
parts = [] if stype.is_base else stype.namespace.path.copy()
|
|
758
758
|
parts.append(stype.name)
|
|
759
|
-
return f"{ctx.builder.top_namespace}.{
|
|
759
|
+
return f"{ctx.builder.top_namespace}.{'.'.join(parts)}"
|
|
760
760
|
|
|
761
761
|
|
|
762
762
|
def _emit_type(ctx: Context, stype: builder.SpecType) -> None:
|
|
@@ -814,11 +814,11 @@ def _emit_type(ctx: Context, stype: builder.SpecType) -> None:
|
|
|
814
814
|
|
|
815
815
|
class_out = io.StringIO()
|
|
816
816
|
base_class = ""
|
|
817
|
-
|
|
817
|
+
generics = stype.get_generics()
|
|
818
818
|
if not stype.base.is_base:
|
|
819
819
|
base_class = f"({refer_to(ctx, stype.base)})"
|
|
820
|
-
elif
|
|
821
|
-
base_class = f"(typing.Generic[{
|
|
820
|
+
elif len(generics) > 0:
|
|
821
|
+
base_class = f"(typing.Generic[{', '.join(generics)}])"
|
|
822
822
|
class_out.write(f"class {stype.name}{base_class}:\n")
|
|
823
823
|
|
|
824
824
|
emitted_properties_metadata = _emit_type_properties(
|
|
@@ -829,7 +829,7 @@ def _emit_type(ctx: Context, stype: builder.SpecType) -> None:
|
|
|
829
829
|
to_string_values = emitted_properties_metadata.to_string_values
|
|
830
830
|
parse_require = emitted_properties_metadata.parse_require
|
|
831
831
|
|
|
832
|
-
|
|
832
|
+
_emit_generics(ctx, generics)
|
|
833
833
|
|
|
834
834
|
# Emit serial_class decorator
|
|
835
835
|
ctx.out.write("@serial_class(\n")
|
|
@@ -858,14 +858,14 @@ def _emit_type(ctx: Context, stype: builder.SpecType) -> None:
|
|
|
858
858
|
if stype.is_hashable:
|
|
859
859
|
dc_args.extend(["frozen=True", "eq=True"])
|
|
860
860
|
if len(dc_args) > 0:
|
|
861
|
-
dataclass += f
|
|
861
|
+
dataclass += f"({', '.join(dc_args)})"
|
|
862
862
|
|
|
863
863
|
ctx.out.write(f"{dataclass}\n")
|
|
864
864
|
ctx.out.write(class_out.getvalue())
|
|
865
865
|
|
|
866
866
|
|
|
867
|
-
def
|
|
868
|
-
|
|
867
|
+
def _emit_generics(ctx: Context, generics: list[str]) -> None:
|
|
868
|
+
for generic in generics:
|
|
869
869
|
ctx.out.write(f'{generic} = typing.TypeVar("{generic}")\n')
|
|
870
870
|
ctx.out.write(f"{LINE_BREAK}{LINE_BREAK}")
|
|
871
871
|
|
|
@@ -966,9 +966,9 @@ from main.site.framework.types import StaticRouteType
|
|
|
966
966
|
)
|
|
967
967
|
sorted_endpoints = sorted(endpoints, key=_route_identifier)
|
|
968
968
|
|
|
969
|
-
assert len(endpoints) == len(
|
|
970
|
-
|
|
971
|
-
)
|
|
969
|
+
assert len(endpoints) == len(set(map(_route_identifier, endpoints))), (
|
|
970
|
+
"Endpoints are not unique"
|
|
971
|
+
)
|
|
972
972
|
|
|
973
973
|
path_set = set()
|
|
974
974
|
for endpoint in sorted_endpoints:
|
|
@@ -1037,7 +1037,7 @@ def _emit_namespace_imports(
|
|
|
1037
1037
|
if ns.endpoint is not None:
|
|
1038
1038
|
import_alias = "_".join(ns.path[2:]) + "_t"
|
|
1039
1039
|
out.write(
|
|
1040
|
-
f"import {config.types_package}.{
|
|
1040
|
+
f"import {config.types_package}.{'.'.join(ns.path)} as {import_alias}\n"
|
|
1041
1041
|
)
|
|
1042
1042
|
continue
|
|
1043
1043
|
elif from_namespace is not None:
|
|
@@ -1195,7 +1195,7 @@ def _emit_api_argument_lookup(
|
|
|
1195
1195
|
continue
|
|
1196
1196
|
|
|
1197
1197
|
import_alias = "_".join(namespace.path[1:])
|
|
1198
|
-
api_import = f"{config.types_package}.{
|
|
1198
|
+
api_import = f"{config.types_package}.{'.'.join(namespace.path)}"
|
|
1199
1199
|
imports.append(f"import {api_import} as {import_alias}")
|
|
1200
1200
|
|
|
1201
1201
|
route_group = (
|
{uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/emit_typescript.py
RENAMED
|
@@ -48,7 +48,7 @@ def _emit_types(builder: builder.SpecBuilder, config: TypeScriptConfig) -> None:
|
|
|
48
48
|
# Try to capture some common incompleteness errors
|
|
49
49
|
if namespace.endpoint is None or namespace.endpoint.function is None:
|
|
50
50
|
raise Exception(
|
|
51
|
-
f"Namespace {
|
|
51
|
+
f"Namespace {'/'.join(namespace.path)} is incomplete. It should have an endpoint with function, types, and/or constants"
|
|
52
52
|
)
|
|
53
53
|
continue
|
|
54
54
|
|
|
@@ -157,7 +157,7 @@ def _emit_endpoint(
|
|
|
157
157
|
wrap_call = (
|
|
158
158
|
f"{wrap_name}<Arguments>" if is_binary else f"{wrap_name}<Arguments, Response>"
|
|
159
159
|
)
|
|
160
|
-
type_path = f"unc_mat/types/{
|
|
160
|
+
type_path = f"unc_mat/types/{'/'.join(namespace.path)}"
|
|
161
161
|
|
|
162
162
|
if is_binary:
|
|
163
163
|
tsx_response_part = f"""import {{ {wrap_name} }} from "unc_base/api"
|
|
@@ -196,12 +196,12 @@ export const apiCall = {wrap_call}(
|
|
|
196
196
|
)
|
|
197
197
|
{data_loader_body}"""
|
|
198
198
|
|
|
199
|
-
output = f"{config.routes_output}/{
|
|
199
|
+
output = f"{config.routes_output}/{'/'.join(namespace.path)}.tsx"
|
|
200
200
|
util.rewrite_file(output, tsx_api)
|
|
201
201
|
|
|
202
202
|
# Hacky index support, until enough is migrated to regen entirely
|
|
203
203
|
# Emits the import into the UI API index file
|
|
204
|
-
index_path = f"{config.routes_output}/{
|
|
204
|
+
index_path = f"{config.routes_output}/{'/'.join(namespace.path[0:-1])}/index.tsx"
|
|
205
205
|
api_name = f"Api{ts_type_name(namespace.path[0 - 1])}"
|
|
206
206
|
if os.path.exists(index_path):
|
|
207
207
|
with open(index_path) as index:
|
{uncountablepythonsdk-0.0.75 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/emit_typescript_util.py
RENAMED
|
@@ -153,7 +153,7 @@ def emit_type_ts(ctx: EmitTypescriptContext, stype: builder.SpecType) -> None:
|
|
|
153
153
|
ctx.out.write(f"export type {stype.name} = {base_type}{{}}\n")
|
|
154
154
|
else:
|
|
155
155
|
if isinstance(stype, builder.SpecTypeDefnObject) and len(stype.parameters) > 0:
|
|
156
|
-
full_type_name = f
|
|
156
|
+
full_type_name = f"{stype.name}<{', '.join(stype.parameters)}>"
|
|
157
157
|
else:
|
|
158
158
|
full_type_name = stype.name
|
|
159
159
|
ctx.out.write(f"export type {full_type_name} = {base_type}{{")
|
|
@@ -201,7 +201,7 @@ def refer_to_impl(
|
|
|
201
201
|
return f"readonly ({spec})[]" if multi else f"readonly {spec}[]", False
|
|
202
202
|
if stype.defn_type.name == builder.BaseTypeName.s_union:
|
|
203
203
|
return (
|
|
204
|
-
f
|
|
204
|
+
f"({' | '.join([refer_to(ctx, p) for p in stype.parameters])})",
|
|
205
205
|
False,
|
|
206
206
|
)
|
|
207
207
|
if stype.defn_type.name == builder.BaseTypeName.s_literal:
|
|
@@ -209,11 +209,11 @@ def refer_to_impl(
|
|
|
209
209
|
for parameter in stype.parameters:
|
|
210
210
|
assert isinstance(parameter, builder.SpecTypeLiteralWrapper)
|
|
211
211
|
parts.append(refer_to(ctx, parameter))
|
|
212
|
-
return f
|
|
212
|
+
return f"({' | '.join(parts)})", False
|
|
213
213
|
if stype.defn_type.name == builder.BaseTypeName.s_optional:
|
|
214
214
|
return f"{refer_to(ctx, stype.parameters[0])} | null", True
|
|
215
215
|
if stype.defn_type.name == builder.BaseTypeName.s_tuple:
|
|
216
|
-
return f"[{
|
|
216
|
+
return f"[{', '.join([refer_to(ctx, p) for p in stype.parameters])}]", False
|
|
217
217
|
params = ", ".join([refer_to(ctx, p) for p in stype.parameters])
|
|
218
218
|
return f"{refer_to(ctx, stype.defn_type)}<{params}>", False
|
|
219
219
|
|
|
@@ -234,9 +234,9 @@ def _extract_and_validate_layout(
|
|
|
234
234
|
|
|
235
235
|
local_ref_name = None
|
|
236
236
|
if group.ref_name is not None:
|
|
237
|
-
assert (
|
|
238
|
-
|
|
239
|
-
)
|
|
237
|
+
assert base_layout is None or base_layout.get(group.ref_name) is None, (
|
|
238
|
+
f"group-name-duplicate-in-base:{group.ref_name}"
|
|
239
|
+
)
|
|
240
240
|
local_ref_name = group.ref_name
|
|
241
241
|
|
|
242
242
|
if group.extends:
|
|
@@ -255,9 +255,9 @@ def _extract_and_validate_layout(
|
|
|
255
255
|
assert group_ref_name in layout, f"missing-base-group:{group_ref_name}"
|
|
256
256
|
|
|
257
257
|
for prop_ref_name in stype.properties:
|
|
258
|
-
assert (
|
|
259
|
-
prop_ref_name
|
|
260
|
-
)
|
|
258
|
+
assert prop_ref_name in all_fields_group, (
|
|
259
|
+
f"layout-missing-field:{prop_ref_name}"
|
|
260
|
+
)
|
|
261
261
|
|
|
262
262
|
return layout
|
|
263
263
|
|
|
@@ -49,7 +49,7 @@ keywords = [ "uncountable", "sdk", "api", "uncountable-sdk" ]
|
|
|
49
49
|
requires-python = ">=3.11"
|
|
50
50
|
# May be compatible with older versions
|
|
51
51
|
dependencies = [
|
|
52
|
-
"aiotus ==
|
|
52
|
+
"aiotus ==1.*",
|
|
53
53
|
"aiohttp == 3.*",
|
|
54
54
|
"requests == 2.*",
|
|
55
55
|
"SQLAlchemy >= 1.4.0",
|
|
@@ -2,6 +2,8 @@ import functools
|
|
|
2
2
|
import os
|
|
3
3
|
from importlib.metadata import PackageNotFoundError, version
|
|
4
4
|
|
|
5
|
+
from uncountable.types import integration_server_t
|
|
6
|
+
|
|
5
7
|
|
|
6
8
|
@functools.cache
|
|
7
9
|
def get_version() -> str:
|
|
@@ -12,8 +14,8 @@ def get_version() -> str:
|
|
|
12
14
|
return version_str
|
|
13
15
|
|
|
14
16
|
|
|
15
|
-
def
|
|
16
|
-
return os.environ.get("
|
|
17
|
+
def get_server_env() -> str | None:
|
|
18
|
+
return os.environ.get("UNC_SERVER_ENV")
|
|
17
19
|
|
|
18
20
|
|
|
19
21
|
def get_webhook_server_port() -> int:
|
|
@@ -26,3 +28,14 @@ def get_local_admin_server_port() -> int:
|
|
|
26
28
|
|
|
27
29
|
def get_otel_enabled() -> bool:
|
|
28
30
|
return os.environ.get("UNC_OTEL_ENABLED") == "true"
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def get_profiles_module() -> str:
|
|
34
|
+
return os.environ["UNC_PROFILES_MODULE"]
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def get_integration_envs() -> list[integration_server_t.IntegrationEnvironment]:
|
|
38
|
+
return [
|
|
39
|
+
integration_server_t.IntegrationEnvironment(env)
|
|
40
|
+
for env in os.environ.get("UNC_INTEGRATION_ENVS", "prod").split(",")
|
|
41
|
+
]
|
|
@@ -99,9 +99,7 @@ class FileUploader:
|
|
|
99
99
|
file_bytes.bytes_data,
|
|
100
100
|
{"filename": file_bytes.name.encode()},
|
|
101
101
|
client_session=session,
|
|
102
|
-
config=aiotus.RetryConfiguration(
|
|
103
|
-
ssl=False if self._allow_insecure_tls else None
|
|
104
|
-
),
|
|
102
|
+
config=aiotus.RetryConfiguration(ssl=not self._allow_insecure_tls),
|
|
105
103
|
chunksize=_CHUNK_SIZE,
|
|
106
104
|
)
|
|
107
105
|
if location is None:
|
|
@@ -3,22 +3,21 @@ from uncountable.core.client import ClientConfig
|
|
|
3
3
|
from uncountable.core.types import AuthDetailsAll, AuthDetailsOAuth
|
|
4
4
|
from uncountable.integration.secret_retrieval.retrieve_secret import retrieve_secret
|
|
5
5
|
from uncountable.integration.telemetry import JobLogger
|
|
6
|
+
from uncountable.types import auth_retrieval_t
|
|
6
7
|
from uncountable.types.job_definition_t import (
|
|
7
|
-
AuthRetrievalBasic,
|
|
8
|
-
AuthRetrievalOAuth,
|
|
9
8
|
ProfileMetadata,
|
|
10
9
|
)
|
|
11
10
|
|
|
12
11
|
|
|
13
12
|
def _construct_auth_details(profile_meta: ProfileMetadata) -> AuthDetailsAll:
|
|
14
13
|
match profile_meta.auth_retrieval:
|
|
15
|
-
case AuthRetrievalOAuth():
|
|
14
|
+
case auth_retrieval_t.AuthRetrievalOAuth():
|
|
16
15
|
refresh_token = retrieve_secret(
|
|
17
16
|
profile_meta.auth_retrieval.refresh_token_secret,
|
|
18
17
|
profile_metadata=profile_meta,
|
|
19
18
|
)
|
|
20
19
|
return AuthDetailsOAuth(refresh_token=refresh_token)
|
|
21
|
-
case AuthRetrievalBasic():
|
|
20
|
+
case auth_retrieval_t.AuthRetrievalBasic():
|
|
22
21
|
api_id = retrieve_secret(
|
|
23
22
|
profile_meta.auth_retrieval.api_id_secret, profile_metadata=profile_meta
|
|
24
23
|
)
|