datachain 0.14.3__tar.gz → 0.14.4__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.14.3/src/datachain.egg-info → datachain-0.14.4}/PKG-INFO +1 -1
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/dataset_info.py +5 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/dc/datasets.py +2 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/udf.py +3 -3
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/query/dispatch.py +56 -46
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/query/session.py +4 -0
- {datachain-0.14.3 → datachain-0.14.4/src/datachain.egg-info}/PKG-INFO +1 -1
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_datachain.py +11 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_session.py +12 -0
- {datachain-0.14.3 → datachain-0.14.4}/.cruft.json +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/.gitattributes +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/.github/ISSUE_TEMPLATE/empty_issue.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/.github/codecov.yaml +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/.github/dependabot.yml +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/.github/workflows/benchmarks.yml +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/.github/workflows/release.yml +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/.github/workflows/tests-studio.yml +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/.github/workflows/tests.yml +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/.github/workflows/update-template.yaml +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/.gitignore +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/.pre-commit-config.yaml +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/CODE_OF_CONDUCT.rst +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/LICENSE +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/README.rst +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/assets/captioned_cartoons.png +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/assets/datachain-white.svg +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/assets/datachain.svg +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/contributing.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/css/github-permalink-style.css +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/examples.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/index.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/overrides/main.html +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/quick-start.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/data-types/arrowrow.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/data-types/bbox.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/data-types/file.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/data-types/imagefile.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/data-types/index.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/data-types/pose.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/data-types/segment.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/data-types/tarvfile.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/data-types/textfile.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/data-types/videofile.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/datachain.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/func.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/index.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/remotes.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/toolkit.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/torch.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/references/udf.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/docs/tutorials.md +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/computer_vision/iptc_exif_xmp_lib.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/computer_vision/llava2_image_desc_lib.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/computer_vision/openimage-detect.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/computer_vision/ultralytics-bbox.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/computer_vision/ultralytics-pose.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/computer_vision/ultralytics-segment.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/get_started/common_sql_functions.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/get_started/json-csv-reader.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/get_started/torch-loader.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/get_started/udfs/parallel.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/get_started/udfs/simple.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/get_started/udfs/stateful.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/llm_and_nlp/claude-query.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/llm_and_nlp/hf-dataset-llm-eval.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/multimodal/clip_inference.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/multimodal/hf_pipeline.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/multimodal/openai_image_desc_lib.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/multimodal/wds.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/examples/multimodal/wds_filtered.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/mkdocs.yml +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/noxfile.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/pyproject.toml +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/setup.cfg +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/__main__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/asyn.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/cache.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/catalog/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/catalog/catalog.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/catalog/datasource.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/catalog/loader.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/cli/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/cli/commands/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/cli/commands/datasets.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/cli/commands/du.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/cli/commands/index.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/cli/commands/ls.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/cli/commands/misc.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/cli/commands/query.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/cli/commands/show.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/cli/parser/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/cli/parser/job.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/cli/parser/studio.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/cli/parser/utils.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/cli/utils.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/client/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/client/azure.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/client/fileslice.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/client/fsspec.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/client/gcs.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/client/hf.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/client/local.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/client/s3.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/config.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/data_storage/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/data_storage/db_engine.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/data_storage/job.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/data_storage/metastore.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/data_storage/schema.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/data_storage/serializer.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/data_storage/sqlite.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/data_storage/warehouse.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/dataset.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/diff/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/error.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/fs/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/fs/reference.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/fs/utils.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/func/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/func/aggregate.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/func/array.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/func/base.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/func/conditional.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/func/func.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/func/numeric.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/func/path.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/func/random.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/func/string.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/func/window.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/job.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/arrow.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/clip.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/convert/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/convert/flatten.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/convert/python_to_sql.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/convert/sql_to_python.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/convert/unflatten.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/convert/values_to_tuples.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/data_model.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/dc/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/dc/csv.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/dc/datachain.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/dc/hf.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/dc/json.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/dc/listings.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/dc/pandas.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/dc/parquet.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/dc/records.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/dc/storage.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/dc/utils.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/dc/values.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/file.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/hf.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/image.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/listing.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/listing_info.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/meta_formats.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/model_store.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/pytorch.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/settings.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/signal_schema.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/tar.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/text.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/udf_signature.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/utils.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/video.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/webdataset.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/lib/webdataset_laion.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/listing.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/model/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/model/bbox.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/model/pose.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/model/segment.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/model/ultralytics/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/model/ultralytics/bbox.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/model/ultralytics/pose.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/model/ultralytics/segment.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/model/utils.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/node.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/nodes_fetcher.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/nodes_thread_pool.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/progress.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/py.typed +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/query/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/query/batch.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/query/dataset.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/query/metrics.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/query/params.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/query/queue.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/query/schema.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/query/udf.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/query/utils.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/remote/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/remote/studio.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/script_meta.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/default/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/default/base.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/functions/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/functions/aggregate.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/functions/array.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/functions/conditional.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/functions/numeric.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/functions/path.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/functions/random.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/functions/string.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/selectable.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/sqlite/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/sqlite/base.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/sqlite/types.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/sqlite/vector.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/types.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/sql/utils.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/studio.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/telemetry.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/toolkit/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/toolkit/split.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/torch/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain/utils.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain.egg-info/SOURCES.txt +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain.egg-info/dependency_links.txt +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain.egg-info/entry_points.txt +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain.egg-info/requires.txt +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/src/datachain.egg-info/top_level.txt +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/benchmarks/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/benchmarks/conftest.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/benchmarks/datasets/.dvc/.gitignore +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/benchmarks/datasets/.dvc/config +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/benchmarks/datasets/.gitignore +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/benchmarks/datasets/laion-tiny.npz.dvc +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/benchmarks/test_datachain.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/benchmarks/test_ls.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/benchmarks/test_version.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/conftest.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/data.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/examples/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/examples/test_examples.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/examples/test_wds_e2e.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/examples/wds_data.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/data/Big_Buck_Bunny_360_10s_1MB.mp4 +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/data/lena.jpg +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/fake-service-account-credentials.json +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/model/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/model/data/running-mask0.png +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/model/data/running-mask1.png +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/model/data/running.jpg +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/model/data/ships.jpg +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/model/test_yolo.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_catalog.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_client.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_cloud_transfer.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_data_storage.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_datachain_merge.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_dataset_query.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_datasets.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_feature_pickling.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_file.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_hf.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_hidden_field.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_image.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_listing.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_ls.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_meta_formats.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_metrics.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_pull.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_pytorch.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_query.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_session.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_toolkit.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_video.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/func/test_warehouse.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/scripts/feature_class.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/scripts/feature_class_exception.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/scripts/feature_class_parallel.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/scripts/feature_class_parallel_data_model.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/scripts/name_len_slow.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/test_atomicity.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/test_cli_e2e.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/test_cli_studio.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/test_import_time.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/test_query_e2e.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/test_telemetry.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/conftest.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_arrow.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_clip.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_datachain.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_datachain_bootstrap.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_datachain_merge.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_diff.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_feature.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_feature_utils.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_file.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_hf.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_image.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_listing_info.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_python_to_sql.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_schema.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_signal_schema.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_sql_to_python.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_text.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_udf_signature.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_utils.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/lib/test_webdataset.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/model/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/model/test_bbox.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/model/test_pose.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/model/test_segment.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/model/test_utils.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/sql/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/sql/sqlite/__init__.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/sql/sqlite/test_types.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/sql/sqlite/test_utils.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/sql/test_array.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/sql/test_conditional.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/sql/test_path.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/sql/test_random.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/sql/test_selectable.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/sql/test_string.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_asyn.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_cache.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_catalog.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_catalog_loader.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_cli_parsing.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_client.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_client_gcs.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_client_s3.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_config.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_data_storage.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_database_engine.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_dataset.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_dispatch.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_fileslice.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_func.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_listing.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_metastore.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_module_exports.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_pytorch.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_query.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_query_metrics.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_query_params.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_script_meta.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_serializer.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_utils.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/unit/test_warehouse.py +0 -0
- {datachain-0.14.3 → datachain-0.14.4}/tests/utils.py +0 -0
|
@@ -12,6 +12,7 @@ from datachain.dataset import (
|
|
|
12
12
|
)
|
|
13
13
|
from datachain.job import Job
|
|
14
14
|
from datachain.lib.data_model import DataModel
|
|
15
|
+
from datachain.query.session import Session
|
|
15
16
|
from datachain.utils import TIME_ZERO
|
|
16
17
|
|
|
17
18
|
if TYPE_CHECKING:
|
|
@@ -32,6 +33,10 @@ class DatasetInfo(DataModel):
|
|
|
32
33
|
error_message: str = Field(default="")
|
|
33
34
|
error_stack: str = Field(default="")
|
|
34
35
|
|
|
36
|
+
@property
|
|
37
|
+
def is_temp(self) -> bool:
|
|
38
|
+
return Session.is_temp_dataset(self.name)
|
|
39
|
+
|
|
35
40
|
@staticmethod
|
|
36
41
|
def _validate_dict(
|
|
37
42
|
v: Optional[Union[str, dict]],
|
|
@@ -16,7 +16,6 @@ from datachain.lib.convert.flatten import flatten
|
|
|
16
16
|
from datachain.lib.data_model import DataValue
|
|
17
17
|
from datachain.lib.file import File
|
|
18
18
|
from datachain.lib.utils import AbstractUDF, DataChainError, DataChainParamsError
|
|
19
|
-
from datachain.progress import CombinedDownloadCallback
|
|
20
19
|
from datachain.query.batch import (
|
|
21
20
|
Batch,
|
|
22
21
|
BatchingStrategy,
|
|
@@ -327,8 +326,9 @@ def _prefetch_inputs(
|
|
|
327
326
|
|
|
328
327
|
if after_prefetch is None:
|
|
329
328
|
after_prefetch = noop
|
|
330
|
-
if
|
|
331
|
-
|
|
329
|
+
if download_cb and hasattr(download_cb, "increment_file_count"):
|
|
330
|
+
increment_file_count: Callable[[], None] = download_cb.increment_file_count
|
|
331
|
+
after_prefetch = increment_file_count
|
|
332
332
|
|
|
333
333
|
f = partial(_prefetch_input, download_cb=download_cb, after_prefetch=after_prefetch)
|
|
334
334
|
mapper = AsyncMapper(f, prepared_inputs, workers=prefetch)
|
|
@@ -4,9 +4,8 @@ from itertools import chain
|
|
|
4
4
|
from multiprocessing import cpu_count
|
|
5
5
|
from sys import stdin
|
|
6
6
|
from threading import Timer
|
|
7
|
-
from typing import TYPE_CHECKING, Optional
|
|
7
|
+
from typing import TYPE_CHECKING, Literal, Optional
|
|
8
8
|
|
|
9
|
-
import attrs
|
|
10
9
|
import multiprocess
|
|
11
10
|
from cloudpickle import load, loads
|
|
12
11
|
from fsspec.callbacks import DEFAULT_CALLBACK, Callback
|
|
@@ -60,6 +59,7 @@ def udf_entrypoint() -> int:
|
|
|
60
59
|
query = udf_info["query"]
|
|
61
60
|
rows_total = udf_info["rows_total"]
|
|
62
61
|
batching = udf_info["batching"]
|
|
62
|
+
is_generator = udf_info["is_generator"]
|
|
63
63
|
n_workers = udf_info["processes"]
|
|
64
64
|
if n_workers is True:
|
|
65
65
|
n_workers = None # Use default number of CPUs (cores)
|
|
@@ -72,17 +72,20 @@ def udf_entrypoint() -> int:
|
|
|
72
72
|
) as udf_inputs:
|
|
73
73
|
download_cb = get_download_callback()
|
|
74
74
|
processed_cb = get_processed_callback()
|
|
75
|
+
generated_cb = get_generated_callback(is_generator)
|
|
75
76
|
try:
|
|
76
77
|
dispatch.run_udf_parallel(
|
|
77
78
|
udf_inputs,
|
|
78
79
|
rows_total=rows_total,
|
|
79
80
|
n_workers=n_workers,
|
|
80
|
-
processed_cb=processed_cb,
|
|
81
81
|
download_cb=download_cb,
|
|
82
|
+
processed_cb=processed_cb,
|
|
83
|
+
generated_cb=generated_cb,
|
|
82
84
|
)
|
|
83
85
|
finally:
|
|
84
86
|
download_cb.close()
|
|
85
87
|
processed_cb.close()
|
|
88
|
+
generated_cb.close()
|
|
86
89
|
|
|
87
90
|
return 0
|
|
88
91
|
|
|
@@ -128,7 +131,6 @@ class UDFDispatcher:
|
|
|
128
131
|
self.done_queue,
|
|
129
132
|
self.query,
|
|
130
133
|
self.table,
|
|
131
|
-
self.is_generator,
|
|
132
134
|
self.is_batching,
|
|
133
135
|
self.cache,
|
|
134
136
|
self.udf_fields,
|
|
@@ -152,16 +154,14 @@ class UDFDispatcher:
|
|
|
152
154
|
for _ in range(n_workers):
|
|
153
155
|
put_into_queue(task_queue, STOP_SIGNAL)
|
|
154
156
|
|
|
155
|
-
def create_input_queue(self):
|
|
156
|
-
return self.ctx.Queue()
|
|
157
|
-
|
|
158
157
|
def run_udf_parallel( # noqa: C901, PLR0912
|
|
159
158
|
self,
|
|
160
159
|
input_rows: Iterable[RowsOutput],
|
|
161
160
|
rows_total: int,
|
|
162
161
|
n_workers: Optional[int] = None,
|
|
163
|
-
processed_cb: Callback = DEFAULT_CALLBACK,
|
|
164
162
|
download_cb: Callback = DEFAULT_CALLBACK,
|
|
163
|
+
processed_cb: Callback = DEFAULT_CALLBACK,
|
|
164
|
+
generated_cb: Callback = DEFAULT_CALLBACK,
|
|
165
165
|
) -> None:
|
|
166
166
|
n_workers = get_n_workers_from_arg(n_workers)
|
|
167
167
|
|
|
@@ -214,6 +214,8 @@ class UDFDispatcher:
|
|
|
214
214
|
download_cb.relative_update(downloaded)
|
|
215
215
|
if processed := result.get("processed"):
|
|
216
216
|
processed_cb.relative_update(processed)
|
|
217
|
+
if generated := result.get("generated"):
|
|
218
|
+
generated_cb.relative_update(generated)
|
|
217
219
|
|
|
218
220
|
status = result["status"]
|
|
219
221
|
if status in (OK_STATUS, NOTIFY_STATUS):
|
|
@@ -260,46 +262,61 @@ class UDFDispatcher:
|
|
|
260
262
|
p.join()
|
|
261
263
|
|
|
262
264
|
|
|
263
|
-
class
|
|
264
|
-
def __init__(self, queue: "multiprocess.Queue"):
|
|
265
|
+
class DownloadCallback(Callback):
|
|
266
|
+
def __init__(self, queue: "multiprocess.Queue") -> None:
|
|
265
267
|
self.queue = queue
|
|
266
268
|
super().__init__()
|
|
267
269
|
|
|
268
270
|
def relative_update(self, inc: int = 1) -> None:
|
|
271
|
+
# This callback is used to notify the size of the downloaded files
|
|
272
|
+
pass
|
|
273
|
+
|
|
274
|
+
def increment_file_count(self, inc: int = 1) -> None:
|
|
269
275
|
put_into_queue(self.queue, {"status": NOTIFY_STATUS, "downloaded": inc})
|
|
270
276
|
|
|
271
277
|
|
|
272
278
|
class ProcessedCallback(Callback):
|
|
273
|
-
def __init__(
|
|
274
|
-
self
|
|
279
|
+
def __init__(
|
|
280
|
+
self,
|
|
281
|
+
name: Literal["processed", "generated"],
|
|
282
|
+
queue: "multiprocess.Queue",
|
|
283
|
+
) -> None:
|
|
284
|
+
self.name = name
|
|
285
|
+
self.queue = queue
|
|
275
286
|
super().__init__()
|
|
276
287
|
|
|
277
288
|
def relative_update(self, inc: int = 1) -> None:
|
|
278
|
-
self.
|
|
289
|
+
put_into_queue(self.queue, {"status": NOTIFY_STATUS, self.name: inc})
|
|
279
290
|
|
|
280
291
|
|
|
281
|
-
@attrs.define
|
|
282
292
|
class UDFWorker:
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
293
|
+
def __init__(
|
|
294
|
+
self,
|
|
295
|
+
catalog: "Catalog",
|
|
296
|
+
udf: "UDFAdapter",
|
|
297
|
+
task_queue: "multiprocess.Queue",
|
|
298
|
+
done_queue: "multiprocess.Queue",
|
|
299
|
+
query: "Select",
|
|
300
|
+
table: "Table",
|
|
301
|
+
is_batching: bool,
|
|
302
|
+
cache: bool,
|
|
303
|
+
udf_fields: Sequence[str],
|
|
304
|
+
) -> None:
|
|
305
|
+
self.catalog = catalog
|
|
306
|
+
self.udf = udf
|
|
307
|
+
self.task_queue = task_queue
|
|
308
|
+
self.done_queue = done_queue
|
|
309
|
+
self.query = query
|
|
310
|
+
self.table = table
|
|
311
|
+
self.is_batching = is_batching
|
|
312
|
+
self.cache = cache
|
|
313
|
+
self.udf_fields = udf_fields
|
|
314
|
+
|
|
315
|
+
self.download_cb = DownloadCallback(self.done_queue)
|
|
316
|
+
self.processed_cb = ProcessedCallback("processed", self.done_queue)
|
|
317
|
+
self.generated_cb = ProcessedCallback("generated", self.done_queue)
|
|
298
318
|
|
|
299
319
|
def run(self) -> None:
|
|
300
|
-
processed_cb = ProcessedCallback()
|
|
301
|
-
generated_cb = get_generated_callback(self.is_generator)
|
|
302
|
-
|
|
303
320
|
prefetch = self.udf.prefetch
|
|
304
321
|
with _get_cache(self.catalog.cache, prefetch, use_cache=self.cache) as _cache:
|
|
305
322
|
catalog = clone_catalog_with_cache(self.catalog, _cache)
|
|
@@ -308,29 +325,22 @@ class UDFWorker:
|
|
|
308
325
|
self.get_inputs(),
|
|
309
326
|
catalog,
|
|
310
327
|
self.cache,
|
|
311
|
-
download_cb=self.
|
|
312
|
-
processed_cb=processed_cb,
|
|
328
|
+
download_cb=self.download_cb,
|
|
329
|
+
processed_cb=self.processed_cb,
|
|
313
330
|
)
|
|
314
331
|
with safe_closing(udf_results):
|
|
315
332
|
process_udf_outputs(
|
|
316
333
|
catalog.warehouse,
|
|
317
334
|
self.table,
|
|
318
|
-
self.notify_and_process(udf_results
|
|
335
|
+
self.notify_and_process(udf_results),
|
|
319
336
|
self.udf,
|
|
320
|
-
cb=generated_cb,
|
|
337
|
+
cb=self.generated_cb,
|
|
321
338
|
)
|
|
339
|
+
put_into_queue(self.done_queue, {"status": FINISHED_STATUS})
|
|
322
340
|
|
|
323
|
-
|
|
324
|
-
self.done_queue,
|
|
325
|
-
{"status": FINISHED_STATUS, "processed": processed_cb.processed_rows},
|
|
326
|
-
)
|
|
327
|
-
|
|
328
|
-
def notify_and_process(self, udf_results, processed_cb):
|
|
341
|
+
def notify_and_process(self, udf_results):
|
|
329
342
|
for row in udf_results:
|
|
330
|
-
put_into_queue(
|
|
331
|
-
self.done_queue,
|
|
332
|
-
{"status": OK_STATUS, "processed": processed_cb.processed_rows},
|
|
333
|
-
)
|
|
343
|
+
put_into_queue(self.done_queue, {"status": OK_STATUS})
|
|
334
344
|
yield row
|
|
335
345
|
|
|
336
346
|
def get_inputs(self):
|
|
@@ -100,6 +100,10 @@ class Session:
|
|
|
100
100
|
def get_temp_prefix(self) -> str:
|
|
101
101
|
return f"{self.DATASET_PREFIX}{self.name}_"
|
|
102
102
|
|
|
103
|
+
@classmethod
|
|
104
|
+
def is_temp_dataset(cls, name) -> bool:
|
|
105
|
+
return name.startswith(cls.DATASET_PREFIX)
|
|
106
|
+
|
|
103
107
|
def _cleanup_temp_datasets(self) -> None:
|
|
104
108
|
prefix = self.get_temp_prefix()
|
|
105
109
|
try:
|
|
@@ -538,6 +538,17 @@ def test_show(capsys, test_session):
|
|
|
538
538
|
assert f"{i} {first_name[i]}" in normalized_output
|
|
539
539
|
|
|
540
540
|
|
|
541
|
+
def test_show_without_temp_datasets(capsys, test_session):
|
|
542
|
+
dc.read_values(
|
|
543
|
+
key=[1, 2, 3, 4], session=test_session
|
|
544
|
+
).save() # creates temp dataset
|
|
545
|
+
dc.datasets().show()
|
|
546
|
+
captured = capsys.readouterr()
|
|
547
|
+
normalized_output = re.sub(r"\s+", " ", captured.out)
|
|
548
|
+
print(normalized_output)
|
|
549
|
+
assert "Empty result" in normalized_output
|
|
550
|
+
|
|
551
|
+
|
|
541
552
|
def test_class_method_deprecated(capsys, test_session):
|
|
542
553
|
with pytest.warns(DeprecationWarning):
|
|
543
554
|
dc.DataChain.from_values(key=["a", "b", "c"], session=test_session)
|
|
@@ -47,6 +47,18 @@ def test_session_empty_name():
|
|
|
47
47
|
assert name.startswith(Session.GLOBAL_SESSION_NAME + "_")
|
|
48
48
|
|
|
49
49
|
|
|
50
|
+
@pytest.mark.parametrize(
|
|
51
|
+
"name,is_temp",
|
|
52
|
+
(
|
|
53
|
+
("session_global_456b5d_0cda3b", True),
|
|
54
|
+
("session_TestSession_456b5d_0cda3b", True),
|
|
55
|
+
("cats", False),
|
|
56
|
+
),
|
|
57
|
+
)
|
|
58
|
+
def test_is_temp_dataset(name, is_temp):
|
|
59
|
+
assert Session.is_temp_dataset(name) is is_temp
|
|
60
|
+
|
|
61
|
+
|
|
50
62
|
def test_ephemeral_dataset_lifecycle(catalog):
|
|
51
63
|
session_name = "asd3d4"
|
|
52
64
|
with Session(session_name, catalog=catalog) as session:
|
|
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
|