datachain 0.3.19__tar.gz → 0.4.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.3.19 → datachain-0.4.0}/.pre-commit-config.yaml +1 -1
- {datachain-0.3.19/src/datachain.egg-info → datachain-0.4.0}/PKG-INFO +1 -1
- {datachain-0.3.19 → datachain-0.4.0}/mkdocs.yml +2 -0
- datachain-0.4.0/overrides/main.html +12 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/catalog/catalog.py +19 -52
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/data_storage/metastore.py +0 -4
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/dataset.py +0 -5
- {datachain-0.3.19 → datachain-0.4.0/src/datachain.egg-info}/PKG-INFO +1 -1
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain.egg-info/SOURCES.txt +1 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/func/test_catalog.py +20 -34
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_query.py +1 -1
- {datachain-0.3.19 → datachain-0.4.0}/.cruft.json +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/.gitattributes +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/.github/ISSUE_TEMPLATE/empty_issue.md +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/.github/codecov.yaml +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/.github/dependabot.yml +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/.github/workflows/benchmarks.yml +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/.github/workflows/release.yml +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/.github/workflows/tests-studio.yml +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/.github/workflows/tests.yml +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/.github/workflows/update-template.yaml +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/.gitignore +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/CODE_OF_CONDUCT.rst +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/CONTRIBUTING.rst +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/LICENSE +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/README.rst +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/docs/assets/captioned_cartoons.png +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/docs/assets/datachain-white.svg +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/docs/assets/datachain.svg +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/docs/assets/flowchart.png +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/docs/index.md +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/docs/references/datachain.md +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/docs/references/datatype.md +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/docs/references/file.md +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/docs/references/index.md +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/docs/references/sql.md +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/docs/references/torch.md +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/docs/references/udf.md +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/computer_vision/iptc_exif_xmp_lib.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/computer_vision/llava2_image_desc_lib.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/computer_vision/openimage-detect.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/get_started/common_sql_functions.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/get_started/json-csv-reader.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/get_started/torch-loader.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/get_started/udfs/parallel.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/get_started/udfs/simple.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/get_started/udfs/stateful.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/llm_and_nlp/claude-query.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/llm_and_nlp/unstructured-embeddings-gen.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/llm_and_nlp/unstructured-summary-map.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/multimodal/clip_inference.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/multimodal/hf_pipeline.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/multimodal/openai_image_desc_lib.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/multimodal/wds.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/examples/multimodal/wds_filtered.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/noxfile.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/pyproject.toml +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/setup.cfg +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/__main__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/asyn.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/cache.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/catalog/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/catalog/datasource.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/catalog/loader.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/cli.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/cli_utils.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/client/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/client/azure.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/client/fileslice.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/client/fsspec.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/client/gcs.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/client/hf.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/client/local.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/client/s3.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/config.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/data_storage/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/data_storage/db_engine.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/data_storage/id_generator.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/data_storage/job.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/data_storage/schema.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/data_storage/serializer.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/data_storage/sqlite.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/data_storage/warehouse.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/error.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/job.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/arrow.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/clip.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/convert/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/convert/flatten.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/convert/python_to_sql.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/convert/sql_to_python.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/convert/unflatten.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/convert/values_to_tuples.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/data_model.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/dataset_info.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/dc.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/file.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/hf.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/image.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/listing.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/listing_info.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/meta_formats.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/model_store.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/pytorch.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/settings.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/signal_schema.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/tar.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/text.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/udf.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/udf_signature.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/utils.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/vfile.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/webdataset.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/lib/webdataset_laion.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/listing.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/node.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/nodes_fetcher.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/nodes_thread_pool.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/progress.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/py.typed +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/query/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/query/batch.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/query/dataset.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/query/dispatch.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/query/metrics.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/query/params.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/query/queue.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/query/schema.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/query/session.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/query/udf.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/remote/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/remote/studio.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/sql/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/sql/default/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/sql/default/base.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/sql/functions/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/sql/functions/array.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/sql/functions/conditional.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/sql/functions/path.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/sql/functions/random.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/sql/functions/string.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/sql/selectable.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/sql/sqlite/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/sql/sqlite/base.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/sql/sqlite/types.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/sql/sqlite/vector.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/sql/types.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/sql/utils.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/storage.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/telemetry.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/torch/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain/utils.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain.egg-info/dependency_links.txt +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain.egg-info/entry_points.txt +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain.egg-info/requires.txt +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/src/datachain.egg-info/top_level.txt +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/benchmarks/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/benchmarks/conftest.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/benchmarks/datasets/.dvc/.gitignore +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/benchmarks/datasets/.dvc/config +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/benchmarks/datasets/.gitignore +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/benchmarks/datasets/laion-tiny.npz.dvc +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/benchmarks/test_datachain.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/benchmarks/test_ls.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/benchmarks/test_version.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/conftest.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/data.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/examples/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/examples/test_examples.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/examples/test_wds_e2e.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/examples/wds_data.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/func/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/func/test_client.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/func/test_datachain.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/func/test_dataset_query.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/func/test_datasets.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/func/test_feature_pickling.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/func/test_listing.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/func/test_ls.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/func/test_meta_formats.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/func/test_metrics.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/func/test_pull.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/func/test_pytorch.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/func/test_query.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/scripts/feature_class.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/scripts/feature_class_parallel.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/scripts/feature_class_parallel_data_model.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/scripts/name_len_slow.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/test_cli_e2e.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/test_query_e2e.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/test_telemetry.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/conftest.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_arrow.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_clip.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_datachain.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_datachain_bootstrap.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_datachain_merge.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_feature.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_feature_utils.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_file.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_hf.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_image.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_schema.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_signal_schema.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_sql_to_python.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_text.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_udf_signature.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_utils.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/lib/test_webdataset.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/sql/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/sql/sqlite/__init__.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/sql/sqlite/test_utils.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/sql/test_array.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/sql/test_conditional.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/sql/test_path.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/sql/test_random.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/sql/test_selectable.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/sql/test_string.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_asyn.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_cache.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_catalog.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_catalog_loader.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_cli_parsing.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_client.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_client_s3.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_data_storage.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_database_engine.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_dataset.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_dispatch.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_fileslice.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_id_generator.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_listing.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_metastore.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_module_exports.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_query_metrics.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_query_params.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_serializer.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_session.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_storage.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_utils.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/unit/test_warehouse.py +0 -0
- {datachain-0.3.19 → datachain-0.4.0}/tests/utils.py +0 -0
|
@@ -15,6 +15,7 @@ validation:
|
|
|
15
15
|
|
|
16
16
|
theme:
|
|
17
17
|
name: material
|
|
18
|
+
custom_dir: overrides
|
|
18
19
|
logo: assets/datachain-white.svg
|
|
19
20
|
favicon: assets/datachain.svg
|
|
20
21
|
icon:
|
|
@@ -71,6 +72,7 @@ nav:
|
|
|
71
72
|
- references/udf.md
|
|
72
73
|
- references/torch.md
|
|
73
74
|
- references/sql.md
|
|
75
|
+
- DataChain Website: https://datachain.ai" target="_blank"
|
|
74
76
|
|
|
75
77
|
markdown_extensions:
|
|
76
78
|
- abbr
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{% extends "base.html" %}
|
|
2
|
+
|
|
3
|
+
{% block scripts %}
|
|
4
|
+
|
|
5
|
+
{{ super() }}
|
|
6
|
+
|
|
7
|
+
<script type="text/javascript">
|
|
8
|
+
!function () { var e, t, n; e = "14ffd92a6cbf5f2", t = function () { Reo.init({ clientID: "14ffd92a6cbf5f2" }) }, (n = document.createElement("script")).src = "https://static.reo.dev/" + e + "/reo.js", n.async = !0, n.onload = t, document.head.appendChild(n) }();
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
{% endblock %}
|
|
@@ -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
|
|
|
@@ -978,7 +979,6 @@ class Catalog:
|
|
|
978
979
|
script_output="",
|
|
979
980
|
create_rows_table=True,
|
|
980
981
|
job_id: Optional[str] = None,
|
|
981
|
-
is_job_result: bool = False,
|
|
982
982
|
) -> DatasetRecord:
|
|
983
983
|
"""
|
|
984
984
|
Creates dataset version if it doesn't exist.
|
|
@@ -1000,7 +1000,6 @@ class Catalog:
|
|
|
1000
1000
|
script_output=script_output,
|
|
1001
1001
|
schema=schema,
|
|
1002
1002
|
job_id=job_id,
|
|
1003
|
-
is_job_result=is_job_result,
|
|
1004
1003
|
ignore_if_exists=True,
|
|
1005
1004
|
)
|
|
1006
1005
|
|
|
@@ -1210,7 +1209,6 @@ class Catalog:
|
|
|
1210
1209
|
size=dataset_version.size,
|
|
1211
1210
|
preview=dataset_version.preview,
|
|
1212
1211
|
job_id=dataset_version.job_id,
|
|
1213
|
-
is_job_result=dataset_version.is_job_result,
|
|
1214
1212
|
)
|
|
1215
1213
|
# to avoid re-creating rows table, we are just renaming it for a new version
|
|
1216
1214
|
# of target dataset
|
|
@@ -1399,65 +1397,34 @@ class Catalog:
|
|
|
1399
1397
|
dataset = self.get_dataset(name)
|
|
1400
1398
|
return self.update_dataset(dataset, **update_data)
|
|
1401
1399
|
|
|
1402
|
-
def
|
|
1403
|
-
self, dataset_name: str, dataset_version: int, row: RowDict
|
|
1404
|
-
) ->
|
|
1400
|
+
def get_file_from_row(
|
|
1401
|
+
self, dataset_name: str, dataset_version: int, row: RowDict, signal_name: str
|
|
1402
|
+
) -> "File":
|
|
1405
1403
|
"""
|
|
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
|
-
}
|
|
1404
|
+
Function that returns specific file signal from dataset row by name.
|
|
1415
1405
|
"""
|
|
1416
1406
|
from datachain.lib.file import File
|
|
1417
1407
|
from datachain.lib.signal_schema import DEFAULT_DELIMITER, SignalSchema
|
|
1418
1408
|
|
|
1419
1409
|
version = self.get_dataset(dataset_name).get_version(dataset_version)
|
|
1420
|
-
|
|
1421
|
-
file_signals_values = RowDict()
|
|
1422
|
-
|
|
1423
1410
|
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
1411
|
|
|
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
|
|
1412
|
+
if signal_name not in schema.get_signals(File):
|
|
1413
|
+
raise RuntimeError(
|
|
1414
|
+
f"File signal with path {signal_name} not found in ",
|
|
1415
|
+
f"dataset {dataset_name}@v{dataset_version} signals schema",
|
|
1416
|
+
)
|
|
1450
1417
|
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1418
|
+
prefix = signal_name.replace(".", DEFAULT_DELIMITER) + DEFAULT_DELIMITER
|
|
1419
|
+
file_signals = {
|
|
1420
|
+
c_name.removeprefix(prefix): c_value
|
|
1421
|
+
for c_name, c_value in row.items()
|
|
1422
|
+
if c_name.startswith(prefix)
|
|
1423
|
+
and DEFAULT_DELIMITER not in c_name.removeprefix(prefix)
|
|
1424
|
+
and c_name.removeprefix(prefix) in File.model_fields
|
|
1425
|
+
}
|
|
1454
1426
|
|
|
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
|
-
)
|
|
1427
|
+
return File(**file_signals)
|
|
1461
1428
|
|
|
1462
1429
|
def ls(
|
|
1463
1430
|
self,
|
|
@@ -243,7 +243,6 @@ class AbstractMetastore(ABC, Serializable):
|
|
|
243
243
|
size: Optional[int] = None,
|
|
244
244
|
preview: Optional[list[dict]] = None,
|
|
245
245
|
job_id: Optional[str] = None,
|
|
246
|
-
is_job_result: bool = False,
|
|
247
246
|
) -> DatasetRecord:
|
|
248
247
|
"""Creates new dataset version."""
|
|
249
248
|
|
|
@@ -497,7 +496,6 @@ class AbstractDBMetastore(AbstractMetastore):
|
|
|
497
496
|
Column("query_script", Text, nullable=False, default=""),
|
|
498
497
|
Column("schema", JSON, nullable=True),
|
|
499
498
|
Column("job_id", Text, nullable=True),
|
|
500
|
-
Column("is_job_result", Boolean, nullable=False, default=False),
|
|
501
499
|
UniqueConstraint("dataset_id", "version"),
|
|
502
500
|
]
|
|
503
501
|
|
|
@@ -1009,7 +1007,6 @@ class AbstractDBMetastore(AbstractMetastore):
|
|
|
1009
1007
|
size: Optional[int] = None,
|
|
1010
1008
|
preview: Optional[list[dict]] = None,
|
|
1011
1009
|
job_id: Optional[str] = None,
|
|
1012
|
-
is_job_result: bool = False,
|
|
1013
1010
|
conn=None,
|
|
1014
1011
|
) -> DatasetRecord:
|
|
1015
1012
|
"""Creates new dataset version."""
|
|
@@ -1035,7 +1032,6 @@ class AbstractDBMetastore(AbstractMetastore):
|
|
|
1035
1032
|
size=size,
|
|
1036
1033
|
preview=json.dumps(preview or []),
|
|
1037
1034
|
job_id=job_id or os.getenv("DATACHAIN_JOB_ID"),
|
|
1038
|
-
is_job_result=is_job_result,
|
|
1039
1035
|
)
|
|
1040
1036
|
if ignore_if_exists and hasattr(query, "on_conflict_do_nothing"):
|
|
1041
1037
|
# SQLite and PostgreSQL both support 'on_conflict_do_nothing',
|
|
@@ -179,7 +179,6 @@ class DatasetVersion:
|
|
|
179
179
|
sources: str = ""
|
|
180
180
|
query_script: str = ""
|
|
181
181
|
job_id: Optional[str] = None
|
|
182
|
-
is_job_result: bool = False
|
|
183
182
|
|
|
184
183
|
@classmethod
|
|
185
184
|
def parse( # noqa: PLR0913
|
|
@@ -201,7 +200,6 @@ class DatasetVersion:
|
|
|
201
200
|
sources: str = "",
|
|
202
201
|
query_script: str = "",
|
|
203
202
|
job_id: Optional[str] = None,
|
|
204
|
-
is_job_result: bool = False,
|
|
205
203
|
):
|
|
206
204
|
return cls(
|
|
207
205
|
id,
|
|
@@ -221,7 +219,6 @@ class DatasetVersion:
|
|
|
221
219
|
sources,
|
|
222
220
|
query_script,
|
|
223
221
|
job_id,
|
|
224
|
-
is_job_result,
|
|
225
222
|
)
|
|
226
223
|
|
|
227
224
|
def __eq__(self, other):
|
|
@@ -327,7 +324,6 @@ class DatasetRecord:
|
|
|
327
324
|
version_query_script: Optional[str],
|
|
328
325
|
version_schema: str,
|
|
329
326
|
version_job_id: Optional[str] = None,
|
|
330
|
-
version_is_job_result: bool = False,
|
|
331
327
|
) -> "DatasetRecord":
|
|
332
328
|
labels_lst: list[str] = json.loads(labels) if labels else []
|
|
333
329
|
schema_dct: dict[str, Any] = json.loads(schema) if schema else {}
|
|
@@ -353,7 +349,6 @@ class DatasetRecord:
|
|
|
353
349
|
version_sources, # type: ignore[arg-type]
|
|
354
350
|
version_query_script, # type: ignore[arg-type]
|
|
355
351
|
version_job_id,
|
|
356
|
-
version_is_job_result,
|
|
357
352
|
)
|
|
358
353
|
|
|
359
354
|
return cls(
|
|
@@ -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")
|
|
@@ -39,7 +39,7 @@ def test_args(catalog, mock_popen):
|
|
|
39
39
|
mock_popen.assert_called_once_with(["mypython", "-c", "pass"], env=expected_env)
|
|
40
40
|
|
|
41
41
|
|
|
42
|
-
def test_capture_output(
|
|
42
|
+
def test_capture_output(catalog, mock_popen):
|
|
43
43
|
mock_popen.stdout = io.BytesIO(b"Hello, World!\rLorem Ipsum\nDolor Sit Amet\nconse")
|
|
44
44
|
lines = []
|
|
45
45
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|