datachain 0.3.19__tar.gz → 0.3.20__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.3.19/src/datachain.egg-info → datachain-0.3.20}/PKG-INFO +1 -1
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/catalog/catalog.py +19 -49
- {datachain-0.3.19 → datachain-0.3.20/src/datachain.egg-info}/PKG-INFO +1 -1
- {datachain-0.3.19 → datachain-0.3.20}/tests/func/test_catalog.py +20 -34
- {datachain-0.3.19 → datachain-0.3.20}/.cruft.json +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/.gitattributes +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/.github/ISSUE_TEMPLATE/empty_issue.md +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/.github/codecov.yaml +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/.github/dependabot.yml +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/.github/workflows/benchmarks.yml +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/.github/workflows/release.yml +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/.github/workflows/tests-studio.yml +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/.github/workflows/tests.yml +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/.github/workflows/update-template.yaml +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/.gitignore +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/.pre-commit-config.yaml +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/CODE_OF_CONDUCT.rst +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/CONTRIBUTING.rst +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/LICENSE +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/README.rst +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/docs/assets/captioned_cartoons.png +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/docs/assets/datachain-white.svg +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/docs/assets/datachain.svg +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/docs/assets/flowchart.png +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/docs/index.md +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/docs/references/datachain.md +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/docs/references/datatype.md +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/docs/references/file.md +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/docs/references/index.md +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/docs/references/sql.md +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/docs/references/torch.md +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/docs/references/udf.md +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/computer_vision/iptc_exif_xmp_lib.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/computer_vision/llava2_image_desc_lib.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/computer_vision/openimage-detect.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/get_started/common_sql_functions.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/get_started/json-csv-reader.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/get_started/torch-loader.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/get_started/udfs/parallel.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/get_started/udfs/simple.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/get_started/udfs/stateful.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/llm_and_nlp/claude-query.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/llm_and_nlp/unstructured-embeddings-gen.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/llm_and_nlp/unstructured-summary-map.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/multimodal/clip_inference.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/multimodal/hf_pipeline.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/multimodal/openai_image_desc_lib.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/multimodal/wds.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/examples/multimodal/wds_filtered.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/mkdocs.yml +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/noxfile.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/pyproject.toml +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/setup.cfg +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/__main__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/asyn.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/cache.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/catalog/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/catalog/datasource.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/catalog/loader.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/cli.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/cli_utils.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/client/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/client/azure.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/client/fileslice.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/client/fsspec.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/client/gcs.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/client/hf.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/client/local.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/client/s3.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/config.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/data_storage/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/data_storage/db_engine.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/data_storage/id_generator.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/data_storage/job.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/data_storage/metastore.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/data_storage/schema.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/data_storage/serializer.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/data_storage/sqlite.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/data_storage/warehouse.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/dataset.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/error.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/job.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/arrow.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/clip.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/convert/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/convert/flatten.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/convert/python_to_sql.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/convert/sql_to_python.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/convert/unflatten.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/convert/values_to_tuples.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/data_model.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/dataset_info.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/dc.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/file.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/hf.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/image.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/listing.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/listing_info.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/meta_formats.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/model_store.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/pytorch.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/settings.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/signal_schema.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/tar.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/text.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/udf.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/udf_signature.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/utils.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/vfile.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/webdataset.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/lib/webdataset_laion.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/listing.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/node.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/nodes_fetcher.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/nodes_thread_pool.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/progress.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/py.typed +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/query/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/query/batch.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/query/dataset.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/query/dispatch.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/query/metrics.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/query/params.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/query/queue.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/query/schema.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/query/session.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/query/udf.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/remote/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/remote/studio.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/sql/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/sql/default/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/sql/default/base.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/sql/functions/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/sql/functions/array.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/sql/functions/conditional.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/sql/functions/path.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/sql/functions/random.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/sql/functions/string.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/sql/selectable.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/sql/sqlite/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/sql/sqlite/base.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/sql/sqlite/types.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/sql/sqlite/vector.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/sql/types.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/sql/utils.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/storage.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/telemetry.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/torch/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain/utils.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain.egg-info/SOURCES.txt +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain.egg-info/dependency_links.txt +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain.egg-info/entry_points.txt +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain.egg-info/requires.txt +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/src/datachain.egg-info/top_level.txt +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/benchmarks/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/benchmarks/conftest.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/benchmarks/datasets/.dvc/.gitignore +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/benchmarks/datasets/.dvc/config +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/benchmarks/datasets/.gitignore +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/benchmarks/datasets/laion-tiny.npz.dvc +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/benchmarks/test_datachain.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/benchmarks/test_ls.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/benchmarks/test_version.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/conftest.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/data.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/examples/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/examples/test_examples.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/examples/test_wds_e2e.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/examples/wds_data.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/func/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/func/test_client.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/func/test_datachain.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/func/test_dataset_query.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/func/test_datasets.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/func/test_feature_pickling.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/func/test_listing.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/func/test_ls.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/func/test_meta_formats.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/func/test_metrics.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/func/test_pull.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/func/test_pytorch.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/func/test_query.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/scripts/feature_class.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/scripts/feature_class_parallel.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/scripts/feature_class_parallel_data_model.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/scripts/name_len_slow.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/test_cli_e2e.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/test_query_e2e.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/test_telemetry.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/conftest.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_arrow.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_clip.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_datachain.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_datachain_bootstrap.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_datachain_merge.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_feature.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_feature_utils.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_file.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_hf.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_image.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_schema.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_signal_schema.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_sql_to_python.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_text.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_udf_signature.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_utils.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/lib/test_webdataset.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/sql/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/sql/sqlite/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/sql/sqlite/test_utils.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/sql/test_array.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/sql/test_conditional.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/sql/test_path.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/sql/test_random.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/sql/test_selectable.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/sql/test_string.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_asyn.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_cache.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_catalog.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_catalog_loader.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_cli_parsing.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_client.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_client_s3.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_data_storage.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_database_engine.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_dataset.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_dispatch.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_fileslice.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_id_generator.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_listing.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_metastore.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_module_exports.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_query.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_query_metrics.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_query_params.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_serializer.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_session.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_storage.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_utils.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/unit/test_warehouse.py +0 -0
- {datachain-0.3.19 → datachain-0.3.20}/tests/utils.py +0 -0
|
@@ -79,6 +79,7 @@ if TYPE_CHECKING:
|
|
|
79
79
|
)
|
|
80
80
|
from datachain.dataset import DatasetVersion
|
|
81
81
|
from datachain.job import Job
|
|
82
|
+
from datachain.lib.file import File
|
|
82
83
|
|
|
83
84
|
logger = logging.getLogger("datachain")
|
|
84
85
|
|
|
@@ -1399,65 +1400,34 @@ class Catalog:
|
|
|
1399
1400
|
dataset = self.get_dataset(name)
|
|
1400
1401
|
return self.update_dataset(dataset, **update_data)
|
|
1401
1402
|
|
|
1402
|
-
def
|
|
1403
|
-
self, dataset_name: str, dataset_version: int, row: RowDict
|
|
1404
|
-
) ->
|
|
1403
|
+
def get_file_from_row(
|
|
1404
|
+
self, dataset_name: str, dataset_version: int, row: RowDict, signal_name: str
|
|
1405
|
+
) -> "File":
|
|
1405
1406
|
"""
|
|
1406
|
-
Function that returns file
|
|
1407
|
-
Note that signal names are without prefix, so if there was 'laion__file__source'
|
|
1408
|
-
in original row, result will have just 'source'
|
|
1409
|
-
Example output:
|
|
1410
|
-
{
|
|
1411
|
-
"source": "s3://ldb-public",
|
|
1412
|
-
"path": "animals/dogs/dog.jpg",
|
|
1413
|
-
...
|
|
1414
|
-
}
|
|
1407
|
+
Function that returns specific file signal from dataset row by name.
|
|
1415
1408
|
"""
|
|
1416
1409
|
from datachain.lib.file import File
|
|
1417
1410
|
from datachain.lib.signal_schema import DEFAULT_DELIMITER, SignalSchema
|
|
1418
1411
|
|
|
1419
1412
|
version = self.get_dataset(dataset_name).get_version(dataset_version)
|
|
1420
|
-
|
|
1421
|
-
file_signals_values = RowDict()
|
|
1422
|
-
|
|
1423
1413
|
schema = SignalSchema.deserialize(version.feature_schema)
|
|
1424
|
-
for file_signals in schema.get_signals(File):
|
|
1425
|
-
prefix = file_signals.replace(".", DEFAULT_DELIMITER) + DEFAULT_DELIMITER
|
|
1426
|
-
file_signals_values[file_signals] = {
|
|
1427
|
-
c_name.removeprefix(prefix): c_value
|
|
1428
|
-
for c_name, c_value in row.items()
|
|
1429
|
-
if c_name.startswith(prefix)
|
|
1430
|
-
and DEFAULT_DELIMITER not in c_name.removeprefix(prefix)
|
|
1431
|
-
}
|
|
1432
1414
|
|
|
1433
|
-
if not
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
# to open object
|
|
1439
|
-
return next(iter(file_signals_values.values()))
|
|
1440
|
-
|
|
1441
|
-
def open_object(
|
|
1442
|
-
self,
|
|
1443
|
-
dataset_name: str,
|
|
1444
|
-
dataset_version: int,
|
|
1445
|
-
row: RowDict,
|
|
1446
|
-
use_cache: bool = True,
|
|
1447
|
-
**config: Any,
|
|
1448
|
-
):
|
|
1449
|
-
from datachain.lib.file import File
|
|
1415
|
+
if signal_name not in schema.get_signals(File):
|
|
1416
|
+
raise RuntimeError(
|
|
1417
|
+
f"File signal with path {signal_name} not found in ",
|
|
1418
|
+
f"dataset {dataset_name}@v{dataset_version} signals schema",
|
|
1419
|
+
)
|
|
1450
1420
|
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1421
|
+
prefix = signal_name.replace(".", DEFAULT_DELIMITER) + DEFAULT_DELIMITER
|
|
1422
|
+
file_signals = {
|
|
1423
|
+
c_name.removeprefix(prefix): c_value
|
|
1424
|
+
for c_name, c_value in row.items()
|
|
1425
|
+
if c_name.startswith(prefix)
|
|
1426
|
+
and DEFAULT_DELIMITER not in c_name.removeprefix(prefix)
|
|
1427
|
+
and c_name.removeprefix(prefix) in File.model_fields
|
|
1428
|
+
}
|
|
1454
1429
|
|
|
1455
|
-
|
|
1456
|
-
client = self.get_client(file_signals["source"], **config)
|
|
1457
|
-
return client.open_object(
|
|
1458
|
-
File._from_row(file_signals),
|
|
1459
|
-
use_cache=use_cache,
|
|
1460
|
-
)
|
|
1430
|
+
return File(**file_signals)
|
|
1461
1431
|
|
|
1462
1432
|
def ls(
|
|
1463
1433
|
self,
|
|
@@ -847,7 +847,7 @@ def test_garbage_collect(cloud_test_catalog, from_cli, capsys):
|
|
|
847
847
|
assert catalog.get_temp_table_names() == []
|
|
848
848
|
|
|
849
849
|
|
|
850
|
-
def
|
|
850
|
+
def test_get_file_from_row(cloud_test_catalog, dogs_dataset):
|
|
851
851
|
catalog = cloud_test_catalog.catalog
|
|
852
852
|
catalog.metastore.update_dataset_version(
|
|
853
853
|
dogs_dataset,
|
|
@@ -863,18 +863,22 @@ def test_get_file_signals(cloud_test_catalog, dogs_dataset):
|
|
|
863
863
|
"name": "Jon",
|
|
864
864
|
"age": 25,
|
|
865
865
|
"f1__source": "s3://first_bucket",
|
|
866
|
-
"
|
|
866
|
+
"f1__path": "image1.jpg",
|
|
867
867
|
"f2__source": "s3://second_bucket",
|
|
868
|
-
"
|
|
868
|
+
"f2__path": "image2.jpg",
|
|
869
869
|
}
|
|
870
870
|
|
|
871
|
-
assert catalog.
|
|
872
|
-
|
|
873
|
-
"
|
|
874
|
-
|
|
871
|
+
assert catalog.get_file_from_row(dogs_dataset.name, 1, row, "f1") == File(
|
|
872
|
+
source="s3://first_bucket",
|
|
873
|
+
path="image1.jpg",
|
|
874
|
+
)
|
|
875
|
+
assert catalog.get_file_from_row(dogs_dataset.name, 1, row, "f2") == File(
|
|
876
|
+
source="s3://second_bucket",
|
|
877
|
+
path="image2.jpg",
|
|
878
|
+
)
|
|
875
879
|
|
|
876
880
|
|
|
877
|
-
def
|
|
881
|
+
def test_get_file_from_row_with_custom_types(cloud_test_catalog, dogs_dataset):
|
|
878
882
|
catalog = cloud_test_catalog.catalog
|
|
879
883
|
catalog.metastore.update_dataset_version(
|
|
880
884
|
dogs_dataset,
|
|
@@ -885,7 +889,7 @@ def test_get_file_signals_with_custom_types(cloud_test_catalog, dogs_dataset):
|
|
|
885
889
|
"f1": "File@v1",
|
|
886
890
|
"f2": "File@v1",
|
|
887
891
|
"_custom_types": {
|
|
888
|
-
"File@v1": {"source": "str", "
|
|
892
|
+
"File@v1": {"source": "str", "path": "str"},
|
|
889
893
|
},
|
|
890
894
|
},
|
|
891
895
|
)
|
|
@@ -893,36 +897,18 @@ def test_get_file_signals_with_custom_types(cloud_test_catalog, dogs_dataset):
|
|
|
893
897
|
"name": "Jon",
|
|
894
898
|
"age": 25,
|
|
895
899
|
"f1__source": "s3://first_bucket",
|
|
896
|
-
"
|
|
900
|
+
"f1__path": "image1.jpg",
|
|
897
901
|
"f2__source": "s3://second_bucket",
|
|
898
|
-
"
|
|
899
|
-
}
|
|
900
|
-
|
|
901
|
-
assert catalog.get_file_signals(dogs_dataset.name, 1, row) == {
|
|
902
|
-
"source": "s3://first_bucket",
|
|
903
|
-
"name": "image1.jpg",
|
|
902
|
+
"f2__path": "image2.jpg",
|
|
904
903
|
}
|
|
905
904
|
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
catalog.metastore.update_dataset_version(
|
|
910
|
-
dogs_dataset,
|
|
911
|
-
1,
|
|
912
|
-
feature_schema={
|
|
913
|
-
"name": "str",
|
|
914
|
-
"age": "str",
|
|
915
|
-
},
|
|
905
|
+
assert catalog.get_file_from_row(dogs_dataset.name, 1, row, "f1") == File(
|
|
906
|
+
source="s3://first_bucket",
|
|
907
|
+
path="image1.jpg",
|
|
916
908
|
)
|
|
917
|
-
row = {
|
|
918
|
-
"name": "Jon",
|
|
919
|
-
"age": 25,
|
|
920
|
-
}
|
|
921
|
-
|
|
922
|
-
assert catalog.get_file_signals(dogs_dataset.name, 1, row) is None
|
|
923
909
|
|
|
924
910
|
|
|
925
|
-
def
|
|
911
|
+
def test_get_file_from_row_no_signals(cloud_test_catalog, dogs_dataset):
|
|
926
912
|
catalog = cloud_test_catalog.catalog
|
|
927
913
|
catalog.metastore.update_dataset_version(
|
|
928
914
|
dogs_dataset,
|
|
@@ -938,4 +924,4 @@ def test_open_object_no_file_signals(cloud_test_catalog, dogs_dataset):
|
|
|
938
924
|
}
|
|
939
925
|
|
|
940
926
|
with pytest.raises(RuntimeError):
|
|
941
|
-
assert catalog.
|
|
927
|
+
assert catalog.get_file_from_row(dogs_dataset.name, 1, row, "missing")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|