datachain 0.27.0__tar.gz → 0.28.0__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.27.0 → datachain-0.28.0}/PKG-INFO +2 -2
- {datachain-0.27.0 → datachain-0.28.0}/docs/commands/job/run.md +8 -0
- {datachain-0.27.0 → datachain-0.28.0}/mkdocs.yml +1 -1
- {datachain-0.27.0 → datachain-0.28.0}/pyproject.toml +1 -1
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/cli/parser/job.py +5 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/data_storage/job.py +2 -1
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/studio.py +33 -11
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain.egg-info/PKG-INFO +2 -2
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain.egg-info/requires.txt +1 -1
- {datachain-0.27.0 → datachain-0.28.0}/tests/test_cli_studio.py +1 -1
- {datachain-0.27.0 → datachain-0.28.0}/.cruft.json +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/.gitattributes +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/.github/ISSUE_TEMPLATE/empty_issue.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/.github/codecov.yaml +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/.github/dependabot.yml +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/.github/workflows/benchmarks.yml +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/.github/workflows/release.yml +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/.github/workflows/tests-studio.yml +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/.github/workflows/tests.yml +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/.github/workflows/update-template.yaml +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/.gitignore +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/.pre-commit-config.yaml +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/CODE_OF_CONDUCT.rst +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/LICENSE +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/README.rst +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/assets/captioned_cartoons.png +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/assets/datachain-white.svg +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/assets/datachain.svg +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/commands/auth/login.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/commands/auth/logout.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/commands/auth/team.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/commands/auth/token.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/commands/index.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/commands/job/cancel.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/commands/job/clusters.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/commands/job/logs.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/commands/job/ls.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/contributing.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/css/github-permalink-style.css +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/examples.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/guide/db_migrations.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/guide/delta.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/guide/env.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/guide/index.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/guide/namespaces.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/guide/processing.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/guide/remotes.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/guide/retry.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/index.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/overrides/main.html +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/quick-start.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/references/data-types/arrowrow.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/references/data-types/bbox.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/references/data-types/file.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/references/data-types/imagefile.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/references/data-types/index.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/references/data-types/pose.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/references/data-types/segment.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/references/data-types/tarvfile.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/references/data-types/textfile.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/references/data-types/videofile.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/references/datachain.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/references/func.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/references/index.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/references/toolkit.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/references/torch.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/references/udf.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/docs/tutorials.md +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/computer_vision/iptc_exif_xmp_lib.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/computer_vision/llava2_image_desc_lib.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/computer_vision/openimage-detect.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/computer_vision/ultralytics-bbox.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/computer_vision/ultralytics-pose.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/computer_vision/ultralytics-segment.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/get_started/common_sql_functions.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/get_started/json-csv-reader.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/get_started/torch-loader.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/get_started/udfs/parallel.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/get_started/udfs/simple.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/get_started/udfs/stateful.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/incremental_processing/delta.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/incremental_processing/retry.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/incremental_processing/utils.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/llm_and_nlp/claude-query.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/llm_and_nlp/hf-dataset-llm-eval.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/multimodal/audio-to-text.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/multimodal/clip_inference.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/multimodal/hf_pipeline.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/multimodal/openai_image_desc_lib.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/multimodal/wds.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/examples/multimodal/wds_filtered.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/noxfile.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/setup.cfg +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/__main__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/asyn.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/cache.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/catalog/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/catalog/catalog.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/catalog/datasource.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/catalog/loader.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/cli/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/cli/commands/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/cli/commands/datasets.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/cli/commands/du.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/cli/commands/index.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/cli/commands/ls.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/cli/commands/misc.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/cli/commands/query.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/cli/commands/show.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/cli/parser/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/cli/parser/studio.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/cli/parser/utils.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/cli/utils.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/client/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/client/azure.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/client/fileslice.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/client/fsspec.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/client/gcs.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/client/hf.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/client/local.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/client/s3.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/config.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/data_storage/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/data_storage/db_engine.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/data_storage/metastore.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/data_storage/schema.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/data_storage/serializer.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/data_storage/sqlite.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/data_storage/warehouse.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/dataset.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/delta.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/diff/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/error.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/fs/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/fs/reference.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/fs/utils.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/func/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/func/aggregate.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/func/array.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/func/base.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/func/conditional.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/func/func.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/func/numeric.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/func/path.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/func/random.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/func/string.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/func/window.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/job.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/arrow.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/audio.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/clip.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/convert/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/convert/flatten.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/convert/python_to_sql.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/convert/sql_to_python.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/convert/unflatten.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/convert/values_to_tuples.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/data_model.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/dataset_info.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/dc/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/dc/csv.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/dc/database.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/dc/datachain.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/dc/datasets.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/dc/hf.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/dc/json.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/dc/listings.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/dc/pandas.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/dc/parquet.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/dc/records.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/dc/storage.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/dc/utils.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/dc/values.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/file.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/hf.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/image.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/listing.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/listing_info.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/meta_formats.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/model_store.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/namespaces.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/projects.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/pytorch.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/settings.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/signal_schema.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/tar.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/text.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/udf.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/udf_signature.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/utils.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/video.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/webdataset.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/lib/webdataset_laion.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/listing.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/model/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/model/bbox.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/model/pose.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/model/segment.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/model/ultralytics/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/model/ultralytics/bbox.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/model/ultralytics/pose.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/model/ultralytics/segment.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/model/utils.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/namespace.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/node.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/nodes_fetcher.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/nodes_thread_pool.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/progress.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/project.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/py.typed +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/query/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/query/batch.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/query/dataset.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/query/dispatch.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/query/metrics.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/query/params.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/query/queue.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/query/schema.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/query/session.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/query/udf.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/query/utils.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/remote/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/remote/studio.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/script_meta.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/semver.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/default/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/default/base.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/functions/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/functions/aggregate.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/functions/array.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/functions/conditional.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/functions/numeric.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/functions/path.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/functions/random.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/functions/string.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/selectable.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/sqlite/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/sqlite/base.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/sqlite/types.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/sqlite/vector.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/types.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/sql/utils.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/telemetry.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/toolkit/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/toolkit/split.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/torch/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain/utils.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain.egg-info/SOURCES.txt +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain.egg-info/dependency_links.txt +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain.egg-info/entry_points.txt +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/src/datachain.egg-info/top_level.txt +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/benchmarks/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/benchmarks/conftest.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/benchmarks/datasets/.dvc/.gitignore +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/benchmarks/datasets/.dvc/config +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/benchmarks/datasets/.gitignore +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/benchmarks/datasets/laion-tiny.npz.dvc +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/benchmarks/test_datachain.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/benchmarks/test_ls.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/benchmarks/test_version.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/conftest.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/data.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/examples/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/examples/test_examples.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/examples/test_wds_e2e.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/examples/wds_data.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/data/Big_Buck_Bunny_360_10s_1MB.mp4 +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/data/lena.jpg +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/fake-service-account-credentials.json +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/functions/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/functions/test_aggregate.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/functions/test_array.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/functions/test_conditional.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/functions/test_numeric.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/functions/test_path.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/functions/test_random.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/functions/test_string.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/model/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/model/data/running-mask0.png +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/model/data/running-mask1.png +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/model/data/running.jpg +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/model/data/ships.jpg +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/model/test_yolo.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_audio.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_batching.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_catalog.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_client.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_cloud_transfer.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_data_storage.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_datachain.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_datachain_merge.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_dataset_query.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_datasets.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_delta.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_feature_pickling.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_file.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_hf.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_hidden_field.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_image.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_listing.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_ls.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_meta_formats.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_metastore.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_metrics.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_pull.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_pytorch.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_query.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_read_database.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_read_dataset_remote.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_read_dataset_version_specifiers.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_retry.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_session.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_studio_datetime_parsing.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_toolkit.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_video.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/func/test_warehouse.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/scripts/feature_class.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/scripts/feature_class_exception.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/scripts/feature_class_parallel.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/scripts/feature_class_parallel_data_model.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/scripts/name_len_slow.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/test_atomicity.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/test_cli_e2e.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/test_import_time.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/test_query_e2e.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/test_telemetry.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/conftest.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_arrow.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_audio.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_clip.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_datachain.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_datachain_bootstrap.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_datachain_merge.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_diff.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_feature.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_feature_utils.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_file.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_hf.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_image.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_listing_info.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_namespace.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_partition_by.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_project.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_python_to_sql.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_schema.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_signal_schema.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_sql_to_python.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_text.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_udf.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_udf_signature.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_utils.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/lib/test_webdataset.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/model/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/model/test_bbox.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/model/test_pose.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/model/test_segment.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/model/test_utils.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/sql/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/sql/sqlite/__init__.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/sql/sqlite/test_types.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/sql/sqlite/test_utils.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/sql/test_array.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/sql/test_conditional.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/sql/test_path.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/sql/test_random.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/sql/test_selectable.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/sql/test_string.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_asyn.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_cache.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_catalog.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_catalog_loader.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_cli_parsing.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_client.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_client_gcs.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_client_s3.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_config.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_data_storage.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_database_engine.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_dataset.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_dispatch.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_fileslice.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_func.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_listing.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_metastore.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_module_exports.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_pytorch.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_query.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_query_metrics.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_query_params.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_script_meta.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_semver.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_serializer.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_session.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_utils.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/unit/test_warehouse.py +0 -0
- {datachain-0.27.0 → datachain-0.28.0}/tests/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datachain
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.28.0
|
|
4
4
|
Summary: Wrangle unstructured AI data at scale
|
|
5
5
|
Author-email: Dmitry Petrov <support@dvc.org>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -45,7 +45,7 @@ Requires-Dist: datamodel-code-generator>=0.25
|
|
|
45
45
|
Requires-Dist: Pillow<12,>=10.0.0
|
|
46
46
|
Requires-Dist: msgpack<2,>=1.0.4
|
|
47
47
|
Requires-Dist: psutil
|
|
48
|
-
Requires-Dist: huggingface_hub
|
|
48
|
+
Requires-Dist: huggingface_hub<0.34.0
|
|
49
49
|
Requires-Dist: iterative-telemetry>=0.0.10
|
|
50
50
|
Requires-Dist: platformdirs
|
|
51
51
|
Requires-Dist: dvc-studio-client<1,>=0.21
|
|
@@ -14,6 +14,7 @@ usage: datachain job run [-h] [-v] [-q] [--team TEAM] [--env-file ENV_FILE]
|
|
|
14
14
|
[--req-file REQ_FILE] [--req REQ [REQ ...]]
|
|
15
15
|
[--priority PRIORITY]
|
|
16
16
|
[--start-time START_TIME] [--cron CRON]
|
|
17
|
+
[--no-wait]
|
|
17
18
|
file
|
|
18
19
|
```
|
|
19
20
|
|
|
@@ -40,6 +41,7 @@ This command runs a job in Studio using the specified query file. You can config
|
|
|
40
41
|
* `--priority PRIORITY` - Priority for the job in range 0-5. Lower value is higher priority (default: 5)
|
|
41
42
|
* `--start-time START_TIME` - Time to schedule the task in YYYY-MM-DDTHH:mm format or natural language.
|
|
42
43
|
* `--cron CRON` - Cron expression for the cron task.
|
|
44
|
+
* `--no-wait` - Do not wait for the job to finish.
|
|
43
45
|
* `-h`, `--help` - Show the help message and exit.
|
|
44
46
|
* `-v`, `--verbose` - Be verbose.
|
|
45
47
|
* `-q`, `--quiet` - Be quiet.
|
|
@@ -131,6 +133,12 @@ datachain job run --cron "@monthly" query.py
|
|
|
131
133
|
datachain job run --start-time "tomorrow 3pm" --cron "0 0 * * *" query.py
|
|
132
134
|
```
|
|
133
135
|
|
|
136
|
+
12. Start the job and do not wait for the job to complete
|
|
137
|
+
```bash
|
|
138
|
+
# Do not follow or tail the logs from Studio.
|
|
139
|
+
datachain job run query.py --no-wait
|
|
140
|
+
```
|
|
141
|
+
|
|
134
142
|
## Notes
|
|
135
143
|
|
|
136
144
|
* Closing the logs command (e.g., with Ctrl+C) will only stop displaying the logs but will not cancel the job execution
|
|
@@ -177,7 +177,7 @@ plugins:
|
|
|
177
177
|
- https://numpy.org/doc/stable/objects.inv
|
|
178
178
|
- https://pandas.pydata.org/docs/objects.inv
|
|
179
179
|
- https://arrow.apache.org/docs/objects.inv
|
|
180
|
-
- https://docs.sqlalchemy.org/objects.inv
|
|
180
|
+
# - https://docs.sqlalchemy.org/objects.inv # SSL certificate issue
|
|
181
181
|
- https://docs.pydantic.dev/latest/objects.inv
|
|
182
182
|
|
|
183
183
|
watch:
|
|
@@ -109,6 +109,11 @@ def add_jobs_parser(subparsers, parent_parser) -> None:
|
|
|
109
109
|
studio_run_parser.add_argument(
|
|
110
110
|
"--cron", action="store", help="Cron expression for the cron task."
|
|
111
111
|
)
|
|
112
|
+
studio_run_parser.add_argument(
|
|
113
|
+
"--no-wait",
|
|
114
|
+
action="store_true",
|
|
115
|
+
help="Do not wait for the job to finish",
|
|
116
|
+
)
|
|
112
117
|
|
|
113
118
|
studio_ls_help = "List jobs in Studio"
|
|
114
119
|
studio_ls_description = "List jobs in Studio."
|
|
@@ -12,10 +12,11 @@ class JobStatus(int, Enum):
|
|
|
12
12
|
CANCELING = 7
|
|
13
13
|
CANCELED = 8
|
|
14
14
|
CANCELING_SCHEDULED = 9
|
|
15
|
+
TASK = 11
|
|
15
16
|
|
|
16
17
|
@classmethod
|
|
17
18
|
def finished(cls) -> tuple[int, ...]:
|
|
18
|
-
return cls.COMPLETE, cls.FAILED, cls.CANCELED
|
|
19
|
+
return cls.COMPLETE, cls.FAILED, cls.CANCELED, cls.TASK
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
class JobQueryType(int, Enum):
|
|
@@ -8,6 +8,7 @@ import dateparser
|
|
|
8
8
|
import tabulate
|
|
9
9
|
|
|
10
10
|
from datachain.config import Config, ConfigLevel
|
|
11
|
+
from datachain.data_storage.job import JobStatus
|
|
11
12
|
from datachain.dataset import QUERY_DATASET_PREFIX, parse_dataset_name
|
|
12
13
|
from datachain.error import DataChainError
|
|
13
14
|
from datachain.remote.studio import StudioClient
|
|
@@ -20,6 +21,8 @@ POST_LOGIN_MESSAGE = (
|
|
|
20
21
|
"Once you've logged in, return here "
|
|
21
22
|
"and you'll be ready to start using DataChain with Studio."
|
|
22
23
|
)
|
|
24
|
+
RETRY_MAX_TIMES = 10
|
|
25
|
+
RETRY_SLEEP_SEC = 1
|
|
23
26
|
|
|
24
27
|
|
|
25
28
|
def process_jobs_args(args: "Namespace"):
|
|
@@ -46,6 +49,7 @@ def process_jobs_args(args: "Namespace"):
|
|
|
46
49
|
args.cluster,
|
|
47
50
|
args.start_time,
|
|
48
51
|
args.cron,
|
|
52
|
+
args.no_wait,
|
|
49
53
|
)
|
|
50
54
|
|
|
51
55
|
if args.cmd == "cancel":
|
|
@@ -287,17 +291,34 @@ def parse_start_time(start_time_str: Optional[str]) -> Optional[str]:
|
|
|
287
291
|
def show_logs_from_client(client, job_id):
|
|
288
292
|
# Sync usage
|
|
289
293
|
async def _run():
|
|
294
|
+
retry_count = 0
|
|
290
295
|
latest_status = None
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
296
|
+
processed_statuses = set()
|
|
297
|
+
while True:
|
|
298
|
+
async for message in client.tail_job_logs(job_id):
|
|
299
|
+
if "logs" in message:
|
|
300
|
+
for log in message["logs"]:
|
|
301
|
+
print(log["message"], end="")
|
|
302
|
+
elif "job" in message:
|
|
303
|
+
latest_status = message["job"]["status"]
|
|
304
|
+
if latest_status in processed_statuses:
|
|
305
|
+
continue
|
|
306
|
+
processed_statuses.add(latest_status)
|
|
307
|
+
print(f"\n>>>> Job is now in {latest_status} status.")
|
|
308
|
+
|
|
309
|
+
try:
|
|
310
|
+
if retry_count > RETRY_MAX_TIMES or (
|
|
311
|
+
latest_status and JobStatus[latest_status].finished()
|
|
312
|
+
):
|
|
313
|
+
break
|
|
314
|
+
await asyncio.sleep(RETRY_SLEEP_SEC)
|
|
315
|
+
retry_count += 1
|
|
316
|
+
except KeyError:
|
|
317
|
+
pass
|
|
318
|
+
|
|
298
319
|
return latest_status
|
|
299
320
|
|
|
300
|
-
|
|
321
|
+
final_status = asyncio.run(_run())
|
|
301
322
|
|
|
302
323
|
response = client.dataset_job_versions(job_id)
|
|
303
324
|
if not response.ok:
|
|
@@ -314,9 +335,9 @@ def show_logs_from_client(client, job_id):
|
|
|
314
335
|
|
|
315
336
|
exit_code_by_status = {
|
|
316
337
|
"FAILED": 1,
|
|
317
|
-
"
|
|
338
|
+
"CANCELED": 2,
|
|
318
339
|
}
|
|
319
|
-
return exit_code_by_status.get(
|
|
340
|
+
return exit_code_by_status.get(final_status.upper(), 0) if final_status else 0
|
|
320
341
|
|
|
321
342
|
|
|
322
343
|
def create_job(
|
|
@@ -334,6 +355,7 @@ def create_job(
|
|
|
334
355
|
cluster: Optional[str] = None,
|
|
335
356
|
start_time: Optional[str] = None,
|
|
336
357
|
cron: Optional[str] = None,
|
|
358
|
+
no_wait: Optional[bool] = False,
|
|
337
359
|
):
|
|
338
360
|
query_type = "PYTHON" if query_file.endswith(".py") else "SHELL"
|
|
339
361
|
with open(query_file) as f:
|
|
@@ -388,7 +410,7 @@ def create_job(
|
|
|
388
410
|
print("Open the job in Studio at", response.data.get("job", {}).get("url"))
|
|
389
411
|
print("=" * 40)
|
|
390
412
|
|
|
391
|
-
return show_logs_from_client(client, job_id)
|
|
413
|
+
return 0 if no_wait else show_logs_from_client(client, job_id)
|
|
392
414
|
|
|
393
415
|
|
|
394
416
|
def upload_files(client: StudioClient, files: list[str]) -> list[str]:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datachain
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.28.0
|
|
4
4
|
Summary: Wrangle unstructured AI data at scale
|
|
5
5
|
Author-email: Dmitry Petrov <support@dvc.org>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -45,7 +45,7 @@ Requires-Dist: datamodel-code-generator>=0.25
|
|
|
45
45
|
Requires-Dist: Pillow<12,>=10.0.0
|
|
46
46
|
Requires-Dist: msgpack<2,>=1.0.4
|
|
47
47
|
Requires-Dist: psutil
|
|
48
|
-
Requires-Dist: huggingface_hub
|
|
48
|
+
Requires-Dist: huggingface_hub<0.34.0
|
|
49
49
|
Requires-Dist: iterative-telemetry>=0.0.10
|
|
50
50
|
Requires-Dist: platformdirs
|
|
51
51
|
Requires-Dist: dvc-studio-client<1,>=0.21
|
|
@@ -491,7 +491,7 @@ def test_studio_run_task(capsys, mocker, tmp_dir, studio_token):
|
|
|
491
491
|
|
|
492
492
|
|
|
493
493
|
@pytest.mark.parametrize(
|
|
494
|
-
"status,expected_exit_code", [("FAILED", 1), ("
|
|
494
|
+
"status,expected_exit_code", [("FAILED", 1), ("CANCELED", 2), ("COMPLETE", 0)]
|
|
495
495
|
)
|
|
496
496
|
def test_studio_run_non_zero_exit_code(
|
|
497
497
|
capsys, mocker, tmp_dir, status, expected_exit_code
|
|
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
|
|
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
|
|
File without changes
|