datachain 0.31.2__tar.gz → 0.31.3__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 datachain might be problematic. Click here for more details.
- {datachain-0.31.2 → datachain-0.31.3}/.gitignore +2 -0
- {datachain-0.31.2 → datachain-0.31.3}/PKG-INFO +1 -1
- datachain-0.31.3/docs/api_hooks.py +35 -0
- datachain-0.31.3/docs/templates/main.dot +81 -0
- datachain-0.31.3/docs/templates/operation.dot +47 -0
- datachain-0.31.3/docs/templates/responses.def +61 -0
- {datachain-0.31.2 → datachain-0.31.3}/mkdocs.yml +4 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/catalog/catalog.py +58 -22
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain.egg-info/PKG-INFO +1 -1
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain.egg-info/SOURCES.txt +5 -0
- datachain-0.31.3/tests/unit/sql/sqlite/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_query.py +22 -3
- {datachain-0.31.2 → datachain-0.31.3}/.cruft.json +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/.gitattributes +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/.github/ISSUE_TEMPLATE/empty_issue.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/.github/codecov.yaml +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/.github/dependabot.yml +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/.github/workflows/benchmarks.yml +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/.github/workflows/release.yml +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/.github/workflows/tests-studio.yml +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/.github/workflows/tests.yml +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/.github/workflows/update-template.yaml +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/.pre-commit-config.yaml +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/CODE_OF_CONDUCT.rst +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/LICENSE +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/README.rst +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/assets/captioned_cartoons.png +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/assets/datachain-white.svg +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/assets/datachain.svg +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/commands/auth/login.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/commands/auth/logout.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/commands/auth/team.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/commands/auth/token.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/commands/index.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/commands/job/cancel.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/commands/job/clusters.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/commands/job/logs.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/commands/job/ls.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/commands/job/run.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/contributing.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/css/github-permalink-style.css +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/examples.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/guide/db_migrations.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/guide/delta.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/guide/env.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/guide/index.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/guide/namespaces.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/guide/processing.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/guide/remotes.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/guide/retry.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/index.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/overrides/main.html +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/quick-start.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/data-types/arrowrow.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/data-types/bbox.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/data-types/file.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/data-types/imagefile.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/data-types/index.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/data-types/pose.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/data-types/segment.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/data-types/tarvfile.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/data-types/textfile.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/data-types/videofile.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/datachain.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/func.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/functions/aggregate.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/functions/array.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/functions/conditional.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/functions/numeric.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/functions/path.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/functions/random.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/functions/string.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/functions/window.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/index.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/toolkit.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/torch.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/references/udf.md +0 -0
- /datachain-0.31.2/src/datachain/fs/__init__.py → /datachain-0.31.3/docs/studio/api/.gitkeep +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/docs/tutorials.md +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/computer_vision/iptc_exif_xmp_lib.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/computer_vision/llava2_image_desc_lib.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/computer_vision/openimage-detect.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/computer_vision/ultralytics-bbox.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/computer_vision/ultralytics-pose.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/computer_vision/ultralytics-segment.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/get_started/common_sql_functions.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/get_started/json-csv-reader.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/get_started/nested_datamodel.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/get_started/torch-loader.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/get_started/udfs/parallel.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/get_started/udfs/simple.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/get_started/udfs/stateful.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/incremental_processing/delta.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/incremental_processing/retry.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/incremental_processing/utils.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/llm_and_nlp/claude-query.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/llm_and_nlp/hf-dataset-llm-eval.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/multimodal/audio-to-text.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/multimodal/clip_inference.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/multimodal/hf_pipeline.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/multimodal/openai_image_desc_lib.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/multimodal/wds.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/examples/multimodal/wds_filtered.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/noxfile.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/pyproject.toml +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/setup.cfg +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/__main__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/asyn.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/cache.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/catalog/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/catalog/datasource.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/catalog/loader.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/cli/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/cli/commands/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/cli/commands/datasets.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/cli/commands/du.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/cli/commands/index.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/cli/commands/ls.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/cli/commands/misc.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/cli/commands/query.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/cli/commands/show.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/cli/parser/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/cli/parser/job.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/cli/parser/studio.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/cli/parser/utils.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/cli/utils.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/client/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/client/azure.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/client/fileslice.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/client/fsspec.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/client/gcs.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/client/hf.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/client/local.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/client/s3.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/config.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/data_storage/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/data_storage/db_engine.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/data_storage/job.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/data_storage/metastore.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/data_storage/schema.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/data_storage/serializer.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/data_storage/sqlite.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/data_storage/warehouse.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/dataset.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/delta.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/diff/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/error.py +0 -0
- {datachain-0.31.2/src/datachain/lib → datachain-0.31.3/src/datachain/fs}/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/fs/reference.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/fs/utils.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/func/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/func/aggregate.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/func/array.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/func/base.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/func/conditional.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/func/func.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/func/numeric.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/func/path.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/func/random.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/func/string.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/func/window.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/job.py +0 -0
- {datachain-0.31.2/src/datachain/lib/convert → datachain-0.31.3/src/datachain/lib}/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/arrow.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/audio.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/clip.py +0 -0
- {datachain-0.31.2/src/datachain/remote → datachain-0.31.3/src/datachain/lib/convert}/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/convert/flatten.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/convert/python_to_sql.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/convert/sql_to_python.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/convert/unflatten.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/convert/values_to_tuples.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/data_model.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/dataset_info.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/dc/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/dc/csv.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/dc/database.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/dc/datachain.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/dc/datasets.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/dc/hf.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/dc/json.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/dc/listings.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/dc/pandas.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/dc/parquet.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/dc/records.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/dc/storage.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/dc/storage_pattern.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/dc/utils.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/dc/values.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/file.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/hf.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/image.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/listing.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/listing_info.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/meta_formats.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/model_store.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/namespaces.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/projects.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/pytorch.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/settings.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/signal_schema.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/tar.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/text.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/udf.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/udf_signature.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/utils.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/video.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/webdataset.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/lib/webdataset_laion.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/listing.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/model/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/model/bbox.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/model/pose.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/model/segment.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/model/ultralytics/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/model/ultralytics/bbox.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/model/ultralytics/pose.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/model/ultralytics/segment.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/model/utils.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/namespace.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/node.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/nodes_fetcher.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/nodes_thread_pool.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/progress.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/project.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/py.typed +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/query/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/query/batch.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/query/dataset.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/query/dispatch.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/query/metrics.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/query/params.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/query/queue.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/query/schema.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/query/session.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/query/udf.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/query/utils.py +0 -0
- {datachain-0.31.2/src/datachain/sql/functions → datachain-0.31.3/src/datachain/remote}/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/remote/studio.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/script_meta.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/semver.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/default/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/default/base.py +0 -0
- {datachain-0.31.2/tests/benchmarks → datachain-0.31.3/src/datachain/sql/functions}/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/functions/aggregate.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/functions/array.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/functions/conditional.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/functions/numeric.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/functions/path.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/functions/random.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/functions/string.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/postgresql_dialect.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/postgresql_types.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/selectable.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/sqlite/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/sqlite/base.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/sqlite/types.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/sqlite/vector.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/types.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/sql/utils.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/studio.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/telemetry.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/toolkit/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/toolkit/split.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/torch/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain/utils.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain.egg-info/dependency_links.txt +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain.egg-info/entry_points.txt +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain.egg-info/requires.txt +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/src/datachain.egg-info/top_level.txt +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/__init__.py +0 -0
- {datachain-0.31.2/tests/examples → datachain-0.31.3/tests/benchmarks}/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/benchmarks/conftest.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/benchmarks/datasets/.dvc/.gitignore +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/benchmarks/datasets/.dvc/config +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/benchmarks/datasets/.gitignore +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/benchmarks/datasets/laion-tiny.npz.dvc +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/benchmarks/test_datachain.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/benchmarks/test_ls.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/benchmarks/test_version.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/conftest.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/data.py +0 -0
- {datachain-0.31.2/tests/func → datachain-0.31.3/tests/examples}/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/examples/test_examples.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/examples/test_wds_e2e.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/examples/wds_data.py +0 -0
- {datachain-0.31.2/tests/func/functions → datachain-0.31.3/tests/func}/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/data/Big_Buck_Bunny_360_10s_1MB.mp4 +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/data/lena.jpg +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/fake-service-account-credentials.json +0 -0
- {datachain-0.31.2/tests/func/model → datachain-0.31.3/tests/func/functions}/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/functions/test_aggregate.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/functions/test_array.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/functions/test_conditional.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/functions/test_numeric.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/functions/test_path.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/functions/test_random.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/functions/test_string.py +0 -0
- {datachain-0.31.2/tests/unit → datachain-0.31.3/tests/func/model}/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/model/data/running-mask0.png +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/model/data/running-mask1.png +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/model/data/running.jpg +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/model/data/ships.jpg +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/model/test_yolo.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_audio.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_batching.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_catalog.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_client.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_cloud_transfer.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_data_storage.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_datachain.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_datachain_merge.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_dataset_query.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_datasets.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_delta.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_feature_pickling.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_file.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_hf.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_hidden_field.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_image.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_listing.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_ls.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_meta_formats.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_metastore.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_metrics.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_mutate.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_pull.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_pytorch.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_query.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_read_database.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_read_dataset_remote.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_read_dataset_version_specifiers.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_retry.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_session.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_storage_pattern.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_studio_datetime_parsing.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_to_database.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_toolkit.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_video.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/func/test_warehouse.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/scripts/feature_class.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/scripts/feature_class_exception.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/scripts/feature_class_parallel.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/scripts/feature_class_parallel_data_model.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/scripts/name_len_slow.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/test_atomicity.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/test_cli_e2e.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/test_cli_studio.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/test_import_time.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/test_query_e2e.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/test_telemetry.py +0 -0
- {datachain-0.31.2/tests/unit/lib → datachain-0.31.3/tests/unit}/__init__.py +0 -0
- {datachain-0.31.2/tests/unit/model → datachain-0.31.3/tests/unit/lib}/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/conftest.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_arrow.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_audio.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_clip.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_datachain.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_datachain_bootstrap.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_datachain_merge.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_diff.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_feature.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_feature_utils.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_file.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_hf.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_image.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_listing_info.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_namespace.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_partition_by.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_project.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_python_to_sql.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_schema.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_settings.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_signal_schema.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_sql_to_python.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_storage_pattern.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_text.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_udf.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_udf_signature.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_utils.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/lib/test_webdataset.py +0 -0
- {datachain-0.31.2/tests/unit/sql → datachain-0.31.3/tests/unit/model}/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/model/test_bbox.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/model/test_pose.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/model/test_segment.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/model/test_utils.py +0 -0
- {datachain-0.31.2/tests/unit/sql/sqlite → datachain-0.31.3/tests/unit/sql}/__init__.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/sql/sqlite/test_types.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/sql/sqlite/test_utils.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/sql/test_array.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/sql/test_conditional.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/sql/test_path.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/sql/test_random.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/sql/test_selectable.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/sql/test_string.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_asyn.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_cache.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_catalog.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_catalog_loader.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_cli_datasets.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_cli_parsing.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_client.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_client_gcs.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_client_s3.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_config.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_data_storage.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_database_engine.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_dataset.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_dispatch.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_fileslice.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_func.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_listing.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_metastore.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_module_exports.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_pytorch.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_query_metrics.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_query_params.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_script_meta.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_semver.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_serializer.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_session.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_utils.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/unit/test_warehouse.py +0 -0
- {datachain-0.31.2 → datachain-0.31.3}/tests/utils.py +0 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# ruff: noqa: INP001
|
|
2
|
+
def on_pre_build(**kwargs):
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
import requests
|
|
6
|
+
|
|
7
|
+
# Download OpenAPI spec
|
|
8
|
+
response = requests.get(
|
|
9
|
+
"https://studio.datachain.ai/api/openapi.json",
|
|
10
|
+
timeout=30,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
# Write to file
|
|
14
|
+
print("Writing OpenAPI spec to docs/openapi.json")
|
|
15
|
+
with open("docs/openapi.json", "w") as f:
|
|
16
|
+
f.write(response.text)
|
|
17
|
+
|
|
18
|
+
# Generate API docs using widdershins
|
|
19
|
+
print("Generating API docs using widdershins")
|
|
20
|
+
cmd = [
|
|
21
|
+
"npx widdershins",
|
|
22
|
+
"docs/openapi.json",
|
|
23
|
+
"-o docs/studio/api/index.md",
|
|
24
|
+
"--language_tabs 'python:Python'",
|
|
25
|
+
"--language_tabs 'shell:curl'",
|
|
26
|
+
"--expandBody true",
|
|
27
|
+
"--summary",
|
|
28
|
+
"--shallowSchemas",
|
|
29
|
+
"--omitBody",
|
|
30
|
+
"--resolve",
|
|
31
|
+
"--httpsnippet",
|
|
32
|
+
"-u docs/templates",
|
|
33
|
+
"--omitHeader",
|
|
34
|
+
]
|
|
35
|
+
os.system(" ".join(cmd)) # noqa: S605
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
<h1 id="{{=data.title_prefix||''}}">{{=data.api.info && data.api.info.title}} {{=data.version||''}}</h1>
|
|
2
|
+
|
|
3
|
+
> Scroll down for {{? data.header.language_tabs.length}}code samples, {{?}}example requests and responses.{{? data.header.language_tabs.length}} .{{?}}
|
|
4
|
+
|
|
5
|
+
{{? data.api.info && data.api.info.description}}{{=data.api.info.description||''}}{{?}}
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
{{? data.api.info && data.api.info.termsOfService}}<a href="{{=data.api.info.termsOfService||''}}">Terms of service</a>{{?}}
|
|
9
|
+
{{? data.api.info && data.api.info.contact}}{{? data.api.info.contact.email}}Email: <a href="mailto:{{=data.api.info.contact.email||''}}">{{=data.api.info.contact.name || 'Support'}}</a> {{?}}{{? data.api.info.contact.url}}Web: <a href="{{=data.api.info.contact.url||''}}">{{= data.api.info.contact.name || 'Support'}}</a> {{?}}{{?}}
|
|
10
|
+
{{? data.api.info && data.api.info.license}}{{? data.api.info.license.url}}License: <a href="{{=data.api.info.license.url||''}}">{{=data.api.info.license.name||''}}</a>{{??}} License: {{=data.api.info.license.name||''}}{{?}}{{?}}
|
|
11
|
+
{{= data.tags.endSection }}
|
|
12
|
+
|
|
13
|
+
{{? data.api.components && data.api.components.securitySchemes && data.def && data.def.security}}
|
|
14
|
+
{{#def.security}}
|
|
15
|
+
{{?}}
|
|
16
|
+
|
|
17
|
+
{{ for (var r in data.resources) { }}
|
|
18
|
+
{{ data.resource = data.resources[r]; }}
|
|
19
|
+
|
|
20
|
+
{{= data.tags.section }}
|
|
21
|
+
<h1 id="{{=data.title_prefix||''+'-'+data.utils.slugify(r)}}">{{= r||''}}</h1>
|
|
22
|
+
|
|
23
|
+
{{? data.resource.description }}{{= data.resource.description||''}}{{?}}
|
|
24
|
+
|
|
25
|
+
{{? data.resource.externalDocs}}
|
|
26
|
+
<a href="{{=data.resource.externalDocs.url||''}}">{{=data.resource.externalDocs.description||'External documentation'}}</a>
|
|
27
|
+
{{?}}
|
|
28
|
+
|
|
29
|
+
{{ for (var m in data.resource.methods) { }}
|
|
30
|
+
{{ data.operationUniqueName = m; }}
|
|
31
|
+
{{ data.method = data.resource.methods[m]; }}
|
|
32
|
+
{{ data.operationUniqueSlug = data.method.slug; }}
|
|
33
|
+
{{ data.operation = data.method.operation; }}
|
|
34
|
+
{{= data.templates.operation(data) }}
|
|
35
|
+
{{ } /* of methods */ }}
|
|
36
|
+
|
|
37
|
+
{{= data.tags.endSection }}
|
|
38
|
+
{{ } /* of resources */ }}
|
|
39
|
+
|
|
40
|
+
{{? data.api.components && data.api.components.schemas }}
|
|
41
|
+
{{= data.tags.section }}
|
|
42
|
+
|
|
43
|
+
# Schemas
|
|
44
|
+
|
|
45
|
+
{{ for (var s in data.components.schemas) { }}
|
|
46
|
+
{{ var origSchema = data.components.schemas[s]; }}
|
|
47
|
+
{{ var schema = data.api.components.schemas[s]; }}
|
|
48
|
+
|
|
49
|
+
{{= data.tags.section }}
|
|
50
|
+
<h2 id="tocS_{{=s||''}}">{{=s||''}}</h2>
|
|
51
|
+
{{ /* backwards compatibility */ }}
|
|
52
|
+
<a id="schema{{=s.toLowerCase()||''}}"></a>
|
|
53
|
+
<a id="schema_{{=s||''}}"></a>
|
|
54
|
+
<a id="tocS{{=s.toLowerCase()||''}}"></a>
|
|
55
|
+
<a id="tocs{{=s.toLowerCase()||''}}"></a>
|
|
56
|
+
|
|
57
|
+
{{? data.options.yaml }}
|
|
58
|
+
```yaml
|
|
59
|
+
{{=data.utils.yaml.stringify(data.utils.getSample(schema,data.options,{quiet:true},data.api))}}
|
|
60
|
+
{{??}}
|
|
61
|
+
```json
|
|
62
|
+
{{=data.utils.safejson(data.utils.getSample(schema,data.options,{quiet:true},data.api),null,2)}}
|
|
63
|
+
{{?}}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
{{= data.tags.endSection }}
|
|
69
|
+
{{= data.tags.endSection }}
|
|
70
|
+
|
|
71
|
+
{{ } /* of schemas */ }}
|
|
72
|
+
|
|
73
|
+
{{?}}
|
|
74
|
+
|
|
75
|
+
{{? data.options.footer}}
|
|
76
|
+
{{#def.footer}}
|
|
77
|
+
{{?}}
|
|
78
|
+
|
|
79
|
+
{{? data.options.discovery}}
|
|
80
|
+
{{#def.discovery}}
|
|
81
|
+
{{?}}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{{= data.tags.section }}
|
|
2
|
+
|
|
3
|
+
## {{= data.operationUniqueName||''}}
|
|
4
|
+
|
|
5
|
+
{{? data.operation.operationId}}
|
|
6
|
+
<a id="opId{{=data.operation.operationId||''}}"></a>
|
|
7
|
+
{{?}}
|
|
8
|
+
|
|
9
|
+
{{ data.methodUpper = data.method.verb.toUpperCase(); }}
|
|
10
|
+
{{ data.url = data.utils.slashes(data.baseUrl + data.method.path); }}
|
|
11
|
+
{{ data.parameters = data.operation.parameters; }}
|
|
12
|
+
{{ data.enums = []; }}
|
|
13
|
+
{{ data.utils.fakeProdCons(data); }}
|
|
14
|
+
{{ data.utils.fakeBodyParameter(data); }}
|
|
15
|
+
{{ data.utils.mergePathParameters(data); }}
|
|
16
|
+
{{ data.utils.getParameters(data); }}
|
|
17
|
+
|
|
18
|
+
{{? data.options.codeSamples || data.operation["x-code-samples"] }}
|
|
19
|
+
> Code samples
|
|
20
|
+
|
|
21
|
+
{{? data.utils.getCodeSamples(data) }}{{= data.utils.getCodeSamples(data) }}{{?}}
|
|
22
|
+
{{?}}
|
|
23
|
+
|
|
24
|
+
`{{= data.methodUpper||''}} {{=data.method.path||''}}`
|
|
25
|
+
|
|
26
|
+
{{? data.operation.summary && !data.options.tocSummary}}*{{= data.operation.summary||'' }}*{{?}}
|
|
27
|
+
|
|
28
|
+
{{? data.operation.description}}{{= data.operation.description||'' }}{{?}}
|
|
29
|
+
|
|
30
|
+
{{? data.operation.requestBody}}
|
|
31
|
+
> Body parameter
|
|
32
|
+
|
|
33
|
+
{{? data.bodyParameter.exampleValues.description }}
|
|
34
|
+
> {{= data.bodyParameter.exampleValues.description||'' }}
|
|
35
|
+
{{?}}
|
|
36
|
+
|
|
37
|
+
{{? data.utils.getBodyParameterExamples(data) }}{{= data.utils.getBodyParameterExamples(data) }}{{?}}
|
|
38
|
+
{{?}}
|
|
39
|
+
|
|
40
|
+
{{#def.responses}}
|
|
41
|
+
|
|
42
|
+
{{ data.security = data.operation.security ? data.operation.security : data.api.security; }}
|
|
43
|
+
{{? data.security && data.security.length }}
|
|
44
|
+
{{??}}
|
|
45
|
+
{{#def.authentication_none}}
|
|
46
|
+
{{?}}
|
|
47
|
+
{{= data.tags.endSection }}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{{ data.responses = data.utils.getResponses(data); }}
|
|
2
|
+
{{ data.responseSchemas = false; }}
|
|
3
|
+
{{~ data.responses :response }}
|
|
4
|
+
{{ if (response.content) data.responseSchemas = true; }}
|
|
5
|
+
{{~}}
|
|
6
|
+
|
|
7
|
+
{{? data.responseSchemas }}
|
|
8
|
+
> Example responses
|
|
9
|
+
|
|
10
|
+
{{? data.utils.getResponseExamples(data) }}{{= data.utils.getResponseExamples(data) }}{{?}}
|
|
11
|
+
{{?}}
|
|
12
|
+
|
|
13
|
+
{{= data.tags.section }}
|
|
14
|
+
<h3 id="{{=data.operationUniqueSlug||''}}-responses">Responses</h3>
|
|
15
|
+
|
|
16
|
+
|Status|Meaning|Description|Schema|
|
|
17
|
+
|---|---|---|---|
|
|
18
|
+
{{~ data.responses :r}}|{{=r.status}}|{{=r.meaning}}|{{=r.description || 'none'}}|{{=r.schema||'none'}}|
|
|
19
|
+
{{~}}
|
|
20
|
+
|
|
21
|
+
{{ data.responseSchemas = false; }}
|
|
22
|
+
{{~ data.responses :response }}
|
|
23
|
+
{{ if (response.content && !response.$ref && !data.utils.isPrimitive(response.type)) data.responseSchemas = true; }}
|
|
24
|
+
{{~}}
|
|
25
|
+
{{? data.responseSchemas }}
|
|
26
|
+
<h3 id="{{=data.operationUniqueSlug||''}}-responseschema">Response Schema</h3>
|
|
27
|
+
{{~ data.responses :response}}
|
|
28
|
+
{{? response.content && !response.$ref && !data.utils.isPrimitive(response.type)}}
|
|
29
|
+
{{? Object.keys(response.content).length }}
|
|
30
|
+
{{ var responseKey = Object.keys(response.content)[0]; }}
|
|
31
|
+
{{ var responseSchema = response.content[responseKey].schema; }}
|
|
32
|
+
{{ var enums = []; }}
|
|
33
|
+
{{ var blocks = data.utils.schemaToArray(responseSchema,0,{trim:true,join:true},data); }}
|
|
34
|
+
{{ for (var block of blocks) {
|
|
35
|
+
for (var p of block.rows) {
|
|
36
|
+
if (p.schema && p.schema.enum) {
|
|
37
|
+
for (var e of p.schema.enum) {
|
|
38
|
+
enums.push({name:p.name,value:e});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}}
|
|
44
|
+
|
|
45
|
+
Status Code **{{=response.status||''}}**
|
|
46
|
+
|
|
47
|
+
{{ data.response = response; }}
|
|
48
|
+
|
|
49
|
+
{{?}}
|
|
50
|
+
{{?}}
|
|
51
|
+
{{~}}
|
|
52
|
+
{{?}}
|
|
53
|
+
{{ data.responseHeaders = data.utils.getResponseHeaders(data); }}
|
|
54
|
+
{{? data.responseHeaders.length }}
|
|
55
|
+
### Response Headers
|
|
56
|
+
|Status|Header|Type|Format|Description|
|
|
57
|
+
|---|---|---|---|---|
|
|
58
|
+
{{~ data.responseHeaders :h}}|{{=h.status}}|{{=h.header}}|{{=h.type}}|{{=h.format||''}}|{{=h.description||'none'}}|
|
|
59
|
+
{{~}}
|
|
60
|
+
{{?}}
|
|
61
|
+
{{= data.tags.endSection }}
|
|
@@ -117,6 +117,8 @@ nav:
|
|
|
117
117
|
- Environment Variables: guide/env.md
|
|
118
118
|
- Namespaces: guide/namespaces.md
|
|
119
119
|
- Local DB Migrations: guide/db_migrations.md
|
|
120
|
+
- 🔗 Studio:
|
|
121
|
+
- API: studio/api/index.md
|
|
120
122
|
- 🤝 Contributing: contributing.md
|
|
121
123
|
|
|
122
124
|
- DataChain Website ↗: https://datachain.ai" target="_blank"
|
|
@@ -161,6 +163,8 @@ extra:
|
|
|
161
163
|
- icon: fontawesome/brands/linkedin
|
|
162
164
|
link: https://www.linkedin.com/company/dvc-ai
|
|
163
165
|
|
|
166
|
+
hooks:
|
|
167
|
+
- docs/api_hooks.py
|
|
164
168
|
plugins:
|
|
165
169
|
- search
|
|
166
170
|
- section-index
|
|
@@ -144,19 +144,26 @@ def shutdown_process(
|
|
|
144
144
|
return proc.wait()
|
|
145
145
|
|
|
146
146
|
|
|
147
|
-
def
|
|
147
|
+
def process_output(stream: IO[bytes], callback: Callable[[str], None]) -> None:
|
|
148
148
|
buffer = b""
|
|
149
|
-
while byt := stream.read(1): # Read one byte at a time
|
|
150
|
-
buffer += byt
|
|
151
149
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
buffer = b"" # Clear buffer for next line
|
|
150
|
+
try:
|
|
151
|
+
while byt := stream.read(1): # Read one byte at a time
|
|
152
|
+
buffer += byt
|
|
156
153
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
154
|
+
if byt in (b"\n", b"\r"): # Check for newline or carriage return
|
|
155
|
+
line = buffer.decode("utf-8", errors="replace")
|
|
156
|
+
callback(line)
|
|
157
|
+
buffer = b"" # Clear buffer for the next line
|
|
158
|
+
|
|
159
|
+
if buffer: # Handle any remaining data in the buffer
|
|
160
|
+
line = buffer.decode("utf-8", errors="replace")
|
|
161
|
+
callback(line)
|
|
162
|
+
finally:
|
|
163
|
+
try:
|
|
164
|
+
stream.close() # Ensure output is closed
|
|
165
|
+
except Exception: # noqa: BLE001, S110
|
|
166
|
+
pass
|
|
160
167
|
|
|
161
168
|
|
|
162
169
|
class DatasetRowsFetcher(NodesThreadPool):
|
|
@@ -1760,13 +1767,13 @@ class Catalog:
|
|
|
1760
1767
|
recursive=recursive,
|
|
1761
1768
|
)
|
|
1762
1769
|
|
|
1770
|
+
@staticmethod
|
|
1763
1771
|
def query(
|
|
1764
|
-
self,
|
|
1765
1772
|
query_script: str,
|
|
1766
1773
|
env: Optional[Mapping[str, str]] = None,
|
|
1767
1774
|
python_executable: str = sys.executable,
|
|
1768
|
-
|
|
1769
|
-
|
|
1775
|
+
stdout_callback: Optional[Callable[[str], None]] = None,
|
|
1776
|
+
stderr_callback: Optional[Callable[[str], None]] = None,
|
|
1770
1777
|
params: Optional[dict[str, str]] = None,
|
|
1771
1778
|
job_id: Optional[str] = None,
|
|
1772
1779
|
interrupt_timeout: Optional[int] = None,
|
|
@@ -1781,13 +1788,18 @@ class Catalog:
|
|
|
1781
1788
|
},
|
|
1782
1789
|
)
|
|
1783
1790
|
popen_kwargs: dict[str, Any] = {}
|
|
1784
|
-
|
|
1785
|
-
|
|
1791
|
+
|
|
1792
|
+
if stdout_callback is not None:
|
|
1793
|
+
popen_kwargs = {"stdout": subprocess.PIPE}
|
|
1794
|
+
if stderr_callback is not None:
|
|
1795
|
+
popen_kwargs["stderr"] = subprocess.PIPE
|
|
1786
1796
|
|
|
1787
1797
|
def raise_termination_signal(sig: int, _: Any) -> NoReturn:
|
|
1788
1798
|
raise TerminationSignal(sig)
|
|
1789
1799
|
|
|
1790
|
-
|
|
1800
|
+
stdout_thread: Optional[Thread] = None
|
|
1801
|
+
stderr_thread: Optional[Thread] = None
|
|
1802
|
+
|
|
1791
1803
|
with subprocess.Popen(cmd, env=env, **popen_kwargs) as proc: # noqa: S603
|
|
1792
1804
|
logger.info("Starting process %s", proc.pid)
|
|
1793
1805
|
|
|
@@ -1801,10 +1813,20 @@ class Catalog:
|
|
|
1801
1813
|
orig_sigterm_handler = signal.getsignal(signal.SIGTERM)
|
|
1802
1814
|
signal.signal(signal.SIGTERM, raise_termination_signal)
|
|
1803
1815
|
try:
|
|
1804
|
-
if
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1816
|
+
if stdout_callback is not None:
|
|
1817
|
+
stdout_thread = Thread(
|
|
1818
|
+
target=process_output,
|
|
1819
|
+
args=(proc.stdout, stdout_callback),
|
|
1820
|
+
daemon=True,
|
|
1821
|
+
)
|
|
1822
|
+
stdout_thread.start()
|
|
1823
|
+
if stderr_callback is not None:
|
|
1824
|
+
stderr_thread = Thread(
|
|
1825
|
+
target=process_output,
|
|
1826
|
+
args=(proc.stderr, stderr_callback),
|
|
1827
|
+
daemon=True,
|
|
1828
|
+
)
|
|
1829
|
+
stderr_thread.start()
|
|
1808
1830
|
|
|
1809
1831
|
proc.wait()
|
|
1810
1832
|
except TerminationSignal as exc:
|
|
@@ -1822,8 +1844,22 @@ class Catalog:
|
|
|
1822
1844
|
finally:
|
|
1823
1845
|
signal.signal(signal.SIGTERM, orig_sigterm_handler)
|
|
1824
1846
|
signal.signal(signal.SIGINT, orig_sigint_handler)
|
|
1825
|
-
|
|
1826
|
-
|
|
1847
|
+
# wait for the reader thread
|
|
1848
|
+
thread_join_timeout_seconds = 30
|
|
1849
|
+
if stdout_thread is not None:
|
|
1850
|
+
stdout_thread.join(timeout=thread_join_timeout_seconds)
|
|
1851
|
+
if stdout_thread.is_alive():
|
|
1852
|
+
logger.warning(
|
|
1853
|
+
"stdout thread is still alive after %s seconds",
|
|
1854
|
+
thread_join_timeout_seconds,
|
|
1855
|
+
)
|
|
1856
|
+
if stderr_thread is not None:
|
|
1857
|
+
stderr_thread.join(timeout=thread_join_timeout_seconds)
|
|
1858
|
+
if stderr_thread.is_alive():
|
|
1859
|
+
logger.warning(
|
|
1860
|
+
"stderr thread is still alive after %s seconds",
|
|
1861
|
+
thread_join_timeout_seconds,
|
|
1862
|
+
)
|
|
1827
1863
|
|
|
1828
1864
|
logger.info("Process %s exited with return code %s", proc.pid, proc.returncode)
|
|
1829
1865
|
if proc.returncode in (
|
|
@@ -18,6 +18,7 @@ pyproject.toml
|
|
|
18
18
|
.github/workflows/tests-studio.yml
|
|
19
19
|
.github/workflows/tests.yml
|
|
20
20
|
.github/workflows/update-template.yaml
|
|
21
|
+
docs/api_hooks.py
|
|
21
22
|
docs/contributing.md
|
|
22
23
|
docs/examples.md
|
|
23
24
|
docs/index.md
|
|
@@ -70,6 +71,10 @@ docs/references/functions/path.md
|
|
|
70
71
|
docs/references/functions/random.md
|
|
71
72
|
docs/references/functions/string.md
|
|
72
73
|
docs/references/functions/window.md
|
|
74
|
+
docs/studio/api/.gitkeep
|
|
75
|
+
docs/templates/main.dot
|
|
76
|
+
docs/templates/operation.dot
|
|
77
|
+
docs/templates/responses.def
|
|
73
78
|
examples/computer_vision/iptc_exif_xmp_lib.py
|
|
74
79
|
examples/computer_vision/llava2_image_desc_lib.py
|
|
75
80
|
examples/computer_vision/openimage-detect.py
|
|
File without changes
|
|
@@ -42,12 +42,31 @@ def test_args(catalog, mock_popen):
|
|
|
42
42
|
mock_popen.assert_called_once_with(["mypython", "-c", "pass"], env=expected_env)
|
|
43
43
|
|
|
44
44
|
|
|
45
|
+
def test_capture_stdout(catalog, mock_popen):
|
|
46
|
+
mock_popen.stdout = io.BytesIO(b"Hello, World!\rLorem Ipsum\nDolor Sit Amet\nconse")
|
|
47
|
+
stdout = []
|
|
48
|
+
|
|
49
|
+
catalog.query("pass", stdout_callback=stdout.append)
|
|
50
|
+
assert stdout == ["Hello, World!\r", "Lorem Ipsum\n", "Dolor Sit Amet\n", "conse"]
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def test_capture_stderr(catalog, mock_popen):
|
|
54
|
+
mock_popen.stderr = io.BytesIO(b"Hello, World!\rLorem Ipsum\nDolor Sit Amet\nconse")
|
|
55
|
+
stderr = []
|
|
56
|
+
|
|
57
|
+
catalog.query("pass", stderr_callback=stderr.append)
|
|
58
|
+
assert stderr == ["Hello, World!\r", "Lorem Ipsum\n", "Dolor Sit Amet\n", "conse"]
|
|
59
|
+
|
|
60
|
+
|
|
45
61
|
def test_capture_output(catalog, mock_popen):
|
|
46
62
|
mock_popen.stdout = io.BytesIO(b"Hello, World!\rLorem Ipsum\nDolor Sit Amet\nconse")
|
|
47
|
-
|
|
63
|
+
mock_popen.stderr = io.BytesIO(b"foo\nbar")
|
|
64
|
+
stdout = []
|
|
65
|
+
stderr = []
|
|
48
66
|
|
|
49
|
-
catalog.query("pass",
|
|
50
|
-
assert
|
|
67
|
+
catalog.query("pass", stdout_callback=stdout.append, stderr_callback=stderr.append)
|
|
68
|
+
assert stdout == ["Hello, World!\r", "Lorem Ipsum\n", "Dolor Sit Amet\n", "conse"]
|
|
69
|
+
assert stderr == ["foo\n", "bar"]
|
|
51
70
|
|
|
52
71
|
|
|
53
72
|
def test_canceled_by_user(catalog, mock_popen):
|
|
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
|
|
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
|
|
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
|
|
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
|