datachain 0.7.7__tar.gz → 0.7.9__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.7.7 → datachain-0.7.9}/.pre-commit-config.yaml +1 -1
- {datachain-0.7.7/src/datachain.egg-info → datachain-0.7.9}/PKG-INFO +2 -2
- {datachain-0.7.7 → datachain-0.7.9}/examples/llm_and_nlp/hf-dataset-llm-eval.py +6 -3
- {datachain-0.7.7 → datachain-0.7.9}/pyproject.toml +1 -1
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/cli.py +9 -3
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/data_storage/metastore.py +3 -2
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/func/__init__.py +5 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/func/func.py +190 -145
- datachain-0.7.9/src/datachain/func/numeric.py +162 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/dc.py +1 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/pytorch.py +54 -37
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/remote/studio.py +44 -25
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/functions/array.py +4 -0
- datachain-0.7.9/src/datachain/sql/functions/numeric.py +43 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/sqlite/base.py +68 -1
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/studio.py +2 -2
- {datachain-0.7.7 → datachain-0.7.9/src/datachain.egg-info}/PKG-INFO +2 -2
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain.egg-info/SOURCES.txt +2 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain.egg-info/requires.txt +1 -1
- {datachain-0.7.7 → datachain-0.7.9}/tests/conftest.py +1 -1
- {datachain-0.7.7 → datachain-0.7.9}/tests/func/test_catalog.py +32 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/func/test_ls.py +2 -2
- {datachain-0.7.7 → datachain-0.7.9}/tests/func/test_pull.py +13 -13
- {datachain-0.7.7 → datachain-0.7.9}/tests/test_cli_studio.py +4 -2
- datachain-0.7.9/tests/unit/test_func.py +586 -0
- datachain-0.7.7/tests/unit/test_func.py +0 -256
- {datachain-0.7.7 → datachain-0.7.9}/.cruft.json +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/.gitattributes +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/.github/ISSUE_TEMPLATE/empty_issue.md +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/.github/codecov.yaml +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/.github/dependabot.yml +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/.github/workflows/benchmarks.yml +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/.github/workflows/release.yml +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/.github/workflows/tests-studio.yml +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/.github/workflows/tests.yml +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/.github/workflows/update-template.yaml +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/.gitignore +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/CODE_OF_CONDUCT.rst +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/CONTRIBUTING.rst +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/LICENSE +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/README.rst +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/docs/assets/captioned_cartoons.png +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/docs/assets/datachain-white.svg +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/docs/assets/datachain.svg +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/docs/index.md +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/docs/overrides/main.html +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/docs/references/datachain.md +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/docs/references/datatype.md +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/docs/references/file.md +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/docs/references/index.md +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/docs/references/sql.md +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/docs/references/torch.md +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/docs/references/udf.md +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/computer_vision/iptc_exif_xmp_lib.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/computer_vision/llava2_image_desc_lib.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/computer_vision/openimage-detect.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/computer_vision/ultralytics-bbox.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/computer_vision/ultralytics-pose.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/computer_vision/ultralytics-segment.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/get_started/common_sql_functions.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/get_started/json-csv-reader.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/get_started/torch-loader.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/get_started/udfs/parallel.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/get_started/udfs/simple.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/get_started/udfs/stateful.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/llm_and_nlp/claude-query.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/llm_and_nlp/unstructured-embeddings-gen.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/llm_and_nlp/unstructured-summary-map.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/multimodal/clip_inference.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/multimodal/hf_pipeline.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/multimodal/openai_image_desc_lib.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/multimodal/wds.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/examples/multimodal/wds_filtered.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/mkdocs.yml +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/noxfile.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/setup.cfg +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/__main__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/asyn.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/cache.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/catalog/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/catalog/catalog.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/catalog/datasource.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/catalog/loader.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/cli_utils.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/client/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/client/azure.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/client/fileslice.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/client/fsspec.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/client/gcs.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/client/hf.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/client/local.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/client/s3.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/config.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/data_storage/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/data_storage/db_engine.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/data_storage/job.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/data_storage/schema.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/data_storage/serializer.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/data_storage/sqlite.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/data_storage/warehouse.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/dataset.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/error.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/func/aggregate.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/func/array.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/func/base.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/func/conditional.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/func/path.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/func/random.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/func/string.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/func/window.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/job.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/arrow.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/clip.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/convert/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/convert/flatten.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/convert/python_to_sql.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/convert/sql_to_python.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/convert/unflatten.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/convert/values_to_tuples.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/data_model.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/dataset_info.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/file.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/hf.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/image.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/listing.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/listing_info.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/meta_formats.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/model_store.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/settings.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/signal_schema.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/tar.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/text.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/udf.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/udf_signature.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/utils.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/vfile.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/webdataset.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/lib/webdataset_laion.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/listing.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/model/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/model/bbox.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/model/pose.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/model/segment.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/model/ultralytics/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/model/ultralytics/bbox.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/model/ultralytics/pose.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/model/ultralytics/segment.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/node.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/nodes_fetcher.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/nodes_thread_pool.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/progress.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/py.typed +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/query/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/query/batch.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/query/dataset.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/query/dispatch.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/query/metrics.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/query/params.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/query/queue.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/query/schema.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/query/session.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/remote/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/default/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/default/base.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/functions/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/functions/aggregate.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/functions/conditional.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/functions/path.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/functions/random.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/functions/string.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/selectable.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/sqlite/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/sqlite/types.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/sqlite/vector.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/types.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/sql/utils.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/telemetry.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/toolkit/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/toolkit/split.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/torch/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain/utils.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain.egg-info/dependency_links.txt +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain.egg-info/entry_points.txt +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/src/datachain.egg-info/top_level.txt +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/benchmarks/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/benchmarks/conftest.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/benchmarks/datasets/.dvc/.gitignore +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/benchmarks/datasets/.dvc/config +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/benchmarks/datasets/.gitignore +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/benchmarks/datasets/laion-tiny.npz.dvc +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/benchmarks/test_datachain.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/benchmarks/test_ls.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/benchmarks/test_version.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/data.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/examples/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/examples/test_examples.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/examples/test_wds_e2e.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/examples/wds_data.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/func/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/func/test_client.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/func/test_datachain.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/func/test_dataset_query.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/func/test_datasets.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/func/test_feature_pickling.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/func/test_listing.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/func/test_meta_formats.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/func/test_metrics.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/func/test_pytorch.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/func/test_query.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/func/test_toolkit.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/scripts/feature_class.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/scripts/feature_class_exception.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/scripts/feature_class_parallel.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/scripts/feature_class_parallel_data_model.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/scripts/name_len_slow.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/test_atomicity.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/test_cli_e2e.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/test_query_e2e.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/test_telemetry.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/conftest.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_arrow.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_clip.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_datachain.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_datachain_bootstrap.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_datachain_merge.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_feature.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_feature_utils.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_file.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_hf.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_image.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_listing_info.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_models.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_schema.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_signal_schema.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_sql_to_python.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_text.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_udf_signature.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_utils.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/lib/test_webdataset.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/sql/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/sql/sqlite/__init__.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/sql/sqlite/test_types.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/sql/sqlite/test_utils.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/sql/test_array.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/sql/test_conditional.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/sql/test_path.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/sql/test_random.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/sql/test_selectable.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/sql/test_string.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_asyn.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_cache.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_catalog.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_catalog_loader.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_cli_parsing.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_client.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_client_s3.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_config.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_data_storage.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_database_engine.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_dataset.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_dispatch.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_fileslice.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_listing.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_metastore.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_module_exports.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_query.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_query_metrics.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_query_params.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_serializer.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_session.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_utils.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/unit/test_warehouse.py +0 -0
- {datachain-0.7.7 → datachain-0.7.9}/tests/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: datachain
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.9
|
|
4
4
|
Summary: Wrangle unstructured AI data at scale
|
|
5
5
|
Author-email: Dmitry Petrov <support@dvc.org>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -98,7 +98,7 @@ Requires-Dist: unstructured[embed-huggingface,pdf]<0.16.0; extra == "examples"
|
|
|
98
98
|
Requires-Dist: pdfplumber==0.11.4; extra == "examples"
|
|
99
99
|
Requires-Dist: huggingface_hub[hf_transfer]; extra == "examples"
|
|
100
100
|
Requires-Dist: onnx==1.16.1; extra == "examples"
|
|
101
|
-
Requires-Dist: ultralytics==8.3.
|
|
101
|
+
Requires-Dist: ultralytics==8.3.37; extra == "examples"
|
|
102
102
|
|
|
103
103
|
================
|
|
104
104
|
|logo| DataChain
|
|
@@ -15,9 +15,11 @@ class DialogEval(DataModel):
|
|
|
15
15
|
|
|
16
16
|
# DataChain function to evaluate dialog.
|
|
17
17
|
# DataChain is using types for inputs, results to automatically infer schema.
|
|
18
|
-
def eval_dialog(
|
|
19
|
-
client
|
|
20
|
-
|
|
18
|
+
def eval_dialog(
|
|
19
|
+
client: InferenceClient,
|
|
20
|
+
user_input: str,
|
|
21
|
+
bot_response: str,
|
|
22
|
+
) -> DialogEval:
|
|
21
23
|
completion = client.chat_completion(
|
|
22
24
|
messages=[
|
|
23
25
|
{
|
|
@@ -44,6 +46,7 @@ def eval_dialog(user_input: str, bot_response: str) -> DialogEval:
|
|
|
44
46
|
"hf://datasets/infinite-dataset-hub/MobilePlanAssistant/data.csv"
|
|
45
47
|
)
|
|
46
48
|
.settings(parallel=10)
|
|
49
|
+
.setup(client=lambda: InferenceClient("meta-llama/Llama-3.1-70B-Instruct"))
|
|
47
50
|
.map(response=eval_dialog)
|
|
48
51
|
.to_parquet("hf://datasets/dvcorg/test-datachain-llm-eval/data.parquet")
|
|
49
52
|
)
|
|
@@ -16,7 +16,7 @@ from tabulate import tabulate
|
|
|
16
16
|
from datachain import Session, utils
|
|
17
17
|
from datachain.cli_utils import BooleanOptionalAction, CommaSeparatedArgs, KeyValueArgs
|
|
18
18
|
from datachain.config import Config
|
|
19
|
-
from datachain.error import DataChainError
|
|
19
|
+
from datachain.error import DataChainError, DatasetNotFoundError
|
|
20
20
|
from datachain.lib.dc import DataChain
|
|
21
21
|
from datachain.studio import (
|
|
22
22
|
edit_studio_dataset,
|
|
@@ -1056,7 +1056,10 @@ def rm_dataset(
|
|
|
1056
1056
|
all, local, studio = _determine_flavors(studio, local, all, token)
|
|
1057
1057
|
|
|
1058
1058
|
if all or local:
|
|
1059
|
-
|
|
1059
|
+
try:
|
|
1060
|
+
catalog.remove_dataset(name, version=version, force=force)
|
|
1061
|
+
except DatasetNotFoundError:
|
|
1062
|
+
print("Dataset not found in local", file=sys.stderr)
|
|
1060
1063
|
|
|
1061
1064
|
if (all or studio) and token:
|
|
1062
1065
|
remove_studio_dataset(team, name, version, force)
|
|
@@ -1077,7 +1080,10 @@ def edit_dataset(
|
|
|
1077
1080
|
all, local, studio = _determine_flavors(studio, local, all, token)
|
|
1078
1081
|
|
|
1079
1082
|
if all or local:
|
|
1080
|
-
|
|
1083
|
+
try:
|
|
1084
|
+
catalog.edit_dataset(name, new_name, description, labels)
|
|
1085
|
+
except DatasetNotFoundError:
|
|
1086
|
+
print("Dataset not found in local", file=sys.stderr)
|
|
1081
1087
|
|
|
1082
1088
|
if (all or studio) and token:
|
|
1083
1089
|
edit_studio_dataset(team, name, new_name, description, labels)
|
|
@@ -725,9 +725,10 @@ class AbstractDBMetastore(AbstractMetastore):
|
|
|
725
725
|
|
|
726
726
|
def list_datasets(self) -> Iterator["DatasetListRecord"]:
|
|
727
727
|
"""Lists all datasets."""
|
|
728
|
-
|
|
729
|
-
self.
|
|
728
|
+
query = self._base_list_datasets_query().order_by(
|
|
729
|
+
self._datasets.c.name, self._datasets_versions.c.version
|
|
730
730
|
)
|
|
731
|
+
yield from self._parse_dataset_list(self.db.execute(query))
|
|
731
732
|
|
|
732
733
|
def list_datasets_by_prefix(
|
|
733
734
|
self, prefix: str, conn=None
|
|
@@ -17,6 +17,7 @@ from .aggregate import (
|
|
|
17
17
|
)
|
|
18
18
|
from .array import cosine_distance, euclidean_distance, length, sip_hash_64
|
|
19
19
|
from .conditional import greatest, least
|
|
20
|
+
from .numeric import bit_and, bit_or, bit_xor, int_hash_64
|
|
20
21
|
from .random import rand
|
|
21
22
|
from .window import window
|
|
22
23
|
|
|
@@ -24,6 +25,9 @@ __all__ = [
|
|
|
24
25
|
"any_value",
|
|
25
26
|
"array",
|
|
26
27
|
"avg",
|
|
28
|
+
"bit_and",
|
|
29
|
+
"bit_or",
|
|
30
|
+
"bit_xor",
|
|
27
31
|
"case",
|
|
28
32
|
"collect",
|
|
29
33
|
"concat",
|
|
@@ -33,6 +37,7 @@ __all__ = [
|
|
|
33
37
|
"euclidean_distance",
|
|
34
38
|
"first",
|
|
35
39
|
"greatest",
|
|
40
|
+
"int_hash_64",
|
|
36
41
|
"least",
|
|
37
42
|
"length",
|
|
38
43
|
"literal",
|
|
@@ -2,13 +2,15 @@ import inspect
|
|
|
2
2
|
from collections.abc import Sequence
|
|
3
3
|
from typing import TYPE_CHECKING, Any, Callable, Optional, Union
|
|
4
4
|
|
|
5
|
-
from sqlalchemy import BindParameter, Case, ColumnElement, desc
|
|
5
|
+
from sqlalchemy import BindParameter, Case, ColumnElement, Integer, cast, desc
|
|
6
6
|
from sqlalchemy.ext.hybrid import Comparator
|
|
7
|
+
from sqlalchemy.sql import func as sa_func
|
|
7
8
|
|
|
8
9
|
from datachain.lib.convert.python_to_sql import python_to_sql
|
|
9
10
|
from datachain.lib.convert.sql_to_python import sql_to_python
|
|
10
11
|
from datachain.lib.utils import DataChainColumnError, DataChainParamsError
|
|
11
12
|
from datachain.query.schema import Column, ColumnMeta
|
|
13
|
+
from datachain.sql.functions import numeric
|
|
12
14
|
|
|
13
15
|
from .base import Function
|
|
14
16
|
|
|
@@ -98,94 +100,232 @@ class Func(Function):
|
|
|
98
100
|
return list[col_type] if self.is_array else col_type # type: ignore[valid-type]
|
|
99
101
|
|
|
100
102
|
def __add__(self, other: Union[ColT, float]) -> "Func":
|
|
101
|
-
|
|
103
|
+
if isinstance(other, (int, float)):
|
|
104
|
+
return Func("add", lambda a: a + other, [self])
|
|
105
|
+
return Func("add", lambda a1, a2: a1 + a2, [self, other])
|
|
102
106
|
|
|
103
107
|
def __radd__(self, other: Union[ColT, float]) -> "Func":
|
|
104
|
-
|
|
108
|
+
if isinstance(other, (int, float)):
|
|
109
|
+
return Func("add", lambda a: other + a, [self])
|
|
110
|
+
return Func("add", lambda a1, a2: a1 + a2, [other, self])
|
|
105
111
|
|
|
106
112
|
def __sub__(self, other: Union[ColT, float]) -> "Func":
|
|
107
|
-
|
|
113
|
+
if isinstance(other, (int, float)):
|
|
114
|
+
return Func("sub", lambda a: a - other, [self])
|
|
115
|
+
return Func("sub", lambda a1, a2: a1 - a2, [self, other])
|
|
108
116
|
|
|
109
117
|
def __rsub__(self, other: Union[ColT, float]) -> "Func":
|
|
110
|
-
|
|
118
|
+
if isinstance(other, (int, float)):
|
|
119
|
+
return Func("sub", lambda a: other - a, [self])
|
|
120
|
+
return Func("sub", lambda a1, a2: a1 - a2, [other, self])
|
|
111
121
|
|
|
112
122
|
def __mul__(self, other: Union[ColT, float]) -> "Func":
|
|
113
|
-
|
|
123
|
+
if isinstance(other, (int, float)):
|
|
124
|
+
return Func("mul", lambda a: a * other, [self])
|
|
125
|
+
return Func("mul", lambda a1, a2: a1 * a2, [self, other])
|
|
114
126
|
|
|
115
127
|
def __rmul__(self, other: Union[ColT, float]) -> "Func":
|
|
116
|
-
|
|
128
|
+
if isinstance(other, (int, float)):
|
|
129
|
+
return Func("mul", lambda a: other * a, [self])
|
|
130
|
+
return Func("mul", lambda a1, a2: a1 * a2, [other, self])
|
|
117
131
|
|
|
118
132
|
def __truediv__(self, other: Union[ColT, float]) -> "Func":
|
|
119
|
-
|
|
133
|
+
if isinstance(other, (int, float)):
|
|
134
|
+
return Func("div", lambda a: _truediv(a, other), [self], result_type=float)
|
|
135
|
+
return Func(
|
|
136
|
+
"div", lambda a1, a2: _truediv(a1, a2), [self, other], result_type=float
|
|
137
|
+
)
|
|
120
138
|
|
|
121
139
|
def __rtruediv__(self, other: Union[ColT, float]) -> "Func":
|
|
122
|
-
|
|
140
|
+
if isinstance(other, (int, float)):
|
|
141
|
+
return Func("div", lambda a: _truediv(other, a), [self], result_type=float)
|
|
142
|
+
return Func(
|
|
143
|
+
"div", lambda a1, a2: _truediv(a1, a2), [other, self], result_type=float
|
|
144
|
+
)
|
|
123
145
|
|
|
124
146
|
def __floordiv__(self, other: Union[ColT, float]) -> "Func":
|
|
125
|
-
|
|
147
|
+
if isinstance(other, (int, float)):
|
|
148
|
+
return Func(
|
|
149
|
+
"floordiv", lambda a: _floordiv(a, other), [self], result_type=int
|
|
150
|
+
)
|
|
151
|
+
return Func(
|
|
152
|
+
"floordiv", lambda a1, a2: _floordiv(a1, a2), [self, other], result_type=int
|
|
153
|
+
)
|
|
126
154
|
|
|
127
155
|
def __rfloordiv__(self, other: Union[ColT, float]) -> "Func":
|
|
128
|
-
|
|
156
|
+
if isinstance(other, (int, float)):
|
|
157
|
+
return Func(
|
|
158
|
+
"floordiv", lambda a: _floordiv(other, a), [self], result_type=int
|
|
159
|
+
)
|
|
160
|
+
return Func(
|
|
161
|
+
"floordiv", lambda a1, a2: _floordiv(a1, a2), [other, self], result_type=int
|
|
162
|
+
)
|
|
129
163
|
|
|
130
164
|
def __mod__(self, other: Union[ColT, float]) -> "Func":
|
|
131
|
-
|
|
165
|
+
if isinstance(other, (int, float)):
|
|
166
|
+
return Func("mod", lambda a: a % other, [self], result_type=int)
|
|
167
|
+
return Func("mod", lambda a1, a2: a1 % a2, [self, other], result_type=int)
|
|
132
168
|
|
|
133
169
|
def __rmod__(self, other: Union[ColT, float]) -> "Func":
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
return math_pow(self, other)
|
|
138
|
-
|
|
139
|
-
def __rpow__(self, other: Union[ColT, float]) -> "Func":
|
|
140
|
-
return math_pow(other, self)
|
|
141
|
-
|
|
142
|
-
def __lshift__(self, other: Union[ColT, float]) -> "Func":
|
|
143
|
-
return math_lshift(self, other)
|
|
144
|
-
|
|
145
|
-
def __rlshift__(self, other: Union[ColT, float]) -> "Func":
|
|
146
|
-
return math_lshift(other, self)
|
|
147
|
-
|
|
148
|
-
def __rshift__(self, other: Union[ColT, float]) -> "Func":
|
|
149
|
-
return math_rshift(self, other)
|
|
150
|
-
|
|
151
|
-
def __rrshift__(self, other: Union[ColT, float]) -> "Func":
|
|
152
|
-
return math_rshift(other, self)
|
|
170
|
+
if isinstance(other, (int, float)):
|
|
171
|
+
return Func("mod", lambda a: other % a, [self], result_type=int)
|
|
172
|
+
return Func("mod", lambda a1, a2: a1 % a2, [other, self], result_type=int)
|
|
153
173
|
|
|
154
174
|
def __and__(self, other: Union[ColT, float]) -> "Func":
|
|
155
|
-
|
|
175
|
+
if isinstance(other, (int, float)):
|
|
176
|
+
return Func(
|
|
177
|
+
"and", lambda a: numeric.bit_and(a, other), [self], result_type=int
|
|
178
|
+
)
|
|
179
|
+
return Func(
|
|
180
|
+
"and",
|
|
181
|
+
lambda a1, a2: numeric.bit_and(a1, a2),
|
|
182
|
+
[self, other],
|
|
183
|
+
result_type=int,
|
|
184
|
+
)
|
|
156
185
|
|
|
157
186
|
def __rand__(self, other: Union[ColT, float]) -> "Func":
|
|
158
|
-
|
|
187
|
+
if isinstance(other, (int, float)):
|
|
188
|
+
return Func(
|
|
189
|
+
"and", lambda a: numeric.bit_and(other, a), [self], result_type=int
|
|
190
|
+
)
|
|
191
|
+
return Func(
|
|
192
|
+
"and",
|
|
193
|
+
lambda a1, a2: numeric.bit_and(a1, a2),
|
|
194
|
+
[other, self],
|
|
195
|
+
result_type=int,
|
|
196
|
+
)
|
|
159
197
|
|
|
160
198
|
def __or__(self, other: Union[ColT, float]) -> "Func":
|
|
161
|
-
|
|
199
|
+
if isinstance(other, (int, float)):
|
|
200
|
+
return Func(
|
|
201
|
+
"or", lambda a: numeric.bit_or(a, other), [self], result_type=int
|
|
202
|
+
)
|
|
203
|
+
return Func(
|
|
204
|
+
"or", lambda a1, a2: numeric.bit_or(a1, a2), [self, other], result_type=int
|
|
205
|
+
)
|
|
162
206
|
|
|
163
207
|
def __ror__(self, other: Union[ColT, float]) -> "Func":
|
|
164
|
-
|
|
208
|
+
if isinstance(other, (int, float)):
|
|
209
|
+
return Func(
|
|
210
|
+
"or", lambda a: numeric.bit_or(other, a), [self], result_type=int
|
|
211
|
+
)
|
|
212
|
+
return Func(
|
|
213
|
+
"or", lambda a1, a2: numeric.bit_or(a1, a2), [other, self], result_type=int
|
|
214
|
+
)
|
|
165
215
|
|
|
166
216
|
def __xor__(self, other: Union[ColT, float]) -> "Func":
|
|
167
|
-
|
|
217
|
+
if isinstance(other, (int, float)):
|
|
218
|
+
return Func(
|
|
219
|
+
"xor", lambda a: numeric.bit_xor(a, other), [self], result_type=int
|
|
220
|
+
)
|
|
221
|
+
return Func(
|
|
222
|
+
"xor",
|
|
223
|
+
lambda a1, a2: numeric.bit_xor(a1, a2),
|
|
224
|
+
[self, other],
|
|
225
|
+
result_type=int,
|
|
226
|
+
)
|
|
168
227
|
|
|
169
228
|
def __rxor__(self, other: Union[ColT, float]) -> "Func":
|
|
170
|
-
|
|
229
|
+
if isinstance(other, (int, float)):
|
|
230
|
+
return Func(
|
|
231
|
+
"xor", lambda a: numeric.bit_xor(other, a), [self], result_type=int
|
|
232
|
+
)
|
|
233
|
+
return Func(
|
|
234
|
+
"xor",
|
|
235
|
+
lambda a1, a2: numeric.bit_xor(a1, a2),
|
|
236
|
+
[other, self],
|
|
237
|
+
result_type=int,
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
def __rshift__(self, other: Union[ColT, float]) -> "Func":
|
|
241
|
+
if isinstance(other, (int, float)):
|
|
242
|
+
return Func(
|
|
243
|
+
"rshift",
|
|
244
|
+
lambda a: numeric.bit_rshift(a, other),
|
|
245
|
+
[self],
|
|
246
|
+
result_type=int,
|
|
247
|
+
)
|
|
248
|
+
return Func(
|
|
249
|
+
"rshift",
|
|
250
|
+
lambda a1, a2: numeric.bit_rshift(a1, a2),
|
|
251
|
+
[self, other],
|
|
252
|
+
result_type=int,
|
|
253
|
+
)
|
|
254
|
+
|
|
255
|
+
def __rrshift__(self, other: Union[ColT, float]) -> "Func":
|
|
256
|
+
if isinstance(other, (int, float)):
|
|
257
|
+
return Func(
|
|
258
|
+
"rshift",
|
|
259
|
+
lambda a: numeric.bit_rshift(other, a),
|
|
260
|
+
[self],
|
|
261
|
+
result_type=int,
|
|
262
|
+
)
|
|
263
|
+
return Func(
|
|
264
|
+
"rshift",
|
|
265
|
+
lambda a1, a2: numeric.bit_rshift(a1, a2),
|
|
266
|
+
[other, self],
|
|
267
|
+
result_type=int,
|
|
268
|
+
)
|
|
269
|
+
|
|
270
|
+
def __lshift__(self, other: Union[ColT, float]) -> "Func":
|
|
271
|
+
if isinstance(other, (int, float)):
|
|
272
|
+
return Func(
|
|
273
|
+
"lshift",
|
|
274
|
+
lambda a: numeric.bit_lshift(a, other),
|
|
275
|
+
[self],
|
|
276
|
+
result_type=int,
|
|
277
|
+
)
|
|
278
|
+
return Func(
|
|
279
|
+
"lshift",
|
|
280
|
+
lambda a1, a2: numeric.bit_lshift(a1, a2),
|
|
281
|
+
[self, other],
|
|
282
|
+
result_type=int,
|
|
283
|
+
)
|
|
284
|
+
|
|
285
|
+
def __rlshift__(self, other: Union[ColT, float]) -> "Func":
|
|
286
|
+
if isinstance(other, (int, float)):
|
|
287
|
+
return Func(
|
|
288
|
+
"lshift",
|
|
289
|
+
lambda a: numeric.bit_lshift(other, a),
|
|
290
|
+
[self],
|
|
291
|
+
result_type=int,
|
|
292
|
+
)
|
|
293
|
+
return Func(
|
|
294
|
+
"lshift",
|
|
295
|
+
lambda a1, a2: numeric.bit_lshift(a1, a2),
|
|
296
|
+
[other, self],
|
|
297
|
+
result_type=int,
|
|
298
|
+
)
|
|
171
299
|
|
|
172
300
|
def __lt__(self, other: Union[ColT, float]) -> "Func":
|
|
173
|
-
|
|
301
|
+
if isinstance(other, (int, float)):
|
|
302
|
+
return Func("lt", lambda a: a < other, [self], result_type=bool)
|
|
303
|
+
return Func("lt", lambda a1, a2: a1 < a2, [self, other], result_type=bool)
|
|
174
304
|
|
|
175
305
|
def __le__(self, other: Union[ColT, float]) -> "Func":
|
|
176
|
-
|
|
306
|
+
if isinstance(other, (int, float)):
|
|
307
|
+
return Func("le", lambda a: a <= other, [self], result_type=bool)
|
|
308
|
+
return Func("le", lambda a1, a2: a1 <= a2, [self, other], result_type=bool)
|
|
177
309
|
|
|
178
310
|
def __eq__(self, other):
|
|
179
|
-
|
|
311
|
+
if isinstance(other, (int, float)):
|
|
312
|
+
return Func("eq", lambda a: a == other, [self], result_type=bool)
|
|
313
|
+
return Func("eq", lambda a1, a2: a1 == a2, [self, other], result_type=bool)
|
|
180
314
|
|
|
181
315
|
def __ne__(self, other):
|
|
182
|
-
|
|
316
|
+
if isinstance(other, (int, float)):
|
|
317
|
+
return Func("ne", lambda a: a != other, [self], result_type=bool)
|
|
318
|
+
return Func("ne", lambda a1, a2: a1 != a2, [self, other], result_type=bool)
|
|
183
319
|
|
|
184
320
|
def __gt__(self, other: Union[ColT, float]) -> "Func":
|
|
185
|
-
|
|
321
|
+
if isinstance(other, (int, float)):
|
|
322
|
+
return Func("gt", lambda a: a > other, [self], result_type=bool)
|
|
323
|
+
return Func("gt", lambda a1, a2: a1 > a2, [self, other], result_type=bool)
|
|
186
324
|
|
|
187
325
|
def __ge__(self, other: Union[ColT, float]) -> "Func":
|
|
188
|
-
|
|
326
|
+
if isinstance(other, (int, float)):
|
|
327
|
+
return Func("ge", lambda a: a >= other, [self], result_type=bool)
|
|
328
|
+
return Func("ge", lambda a1, a2: a1 >= a2, [self, other], result_type=bool)
|
|
189
329
|
|
|
190
330
|
def label(self, label: str) -> "Func":
|
|
191
331
|
return Func(
|
|
@@ -283,107 +423,12 @@ def get_db_col_type(signals_schema: "SignalSchema", col: ColT) -> "DataType":
|
|
|
283
423
|
)
|
|
284
424
|
|
|
285
425
|
|
|
286
|
-
def
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
) -> Func:
|
|
292
|
-
"""Returns math function from the columns."""
|
|
293
|
-
cols, args = [], []
|
|
294
|
-
for arg in params:
|
|
295
|
-
if isinstance(arg, (int, float)):
|
|
296
|
-
args.append(arg)
|
|
297
|
-
else:
|
|
298
|
-
cols.append(arg)
|
|
299
|
-
return Func(name, inner, cols=cols, args=args, result_type=result_type)
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
def math_add(*args: Union[ColT, float]) -> Func:
|
|
303
|
-
"""Computes the sum of the column."""
|
|
304
|
-
return math_func("add", lambda a1, a2: a1 + a2, args)
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
def math_sub(*args: Union[ColT, float]) -> Func:
|
|
308
|
-
"""Computes the diff of the column."""
|
|
309
|
-
return math_func("sub", lambda a1, a2: a1 - a2, args)
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
def math_mul(*args: Union[ColT, float]) -> Func:
|
|
313
|
-
"""Computes the product of the column."""
|
|
314
|
-
return math_func("mul", lambda a1, a2: a1 * a2, args)
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
def math_truediv(*args: Union[ColT, float]) -> Func:
|
|
318
|
-
"""Computes the division of the column."""
|
|
319
|
-
return math_func("div", lambda a1, a2: a1 / a2, args, result_type=float)
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
def math_floordiv(*args: Union[ColT, float]) -> Func:
|
|
323
|
-
"""Computes the floor division of the column."""
|
|
324
|
-
return math_func("floordiv", lambda a1, a2: a1 // a2, args, result_type=float)
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
def math_mod(*args: Union[ColT, float]) -> Func:
|
|
328
|
-
"""Computes the modulo of the column."""
|
|
329
|
-
return math_func("mod", lambda a1, a2: a1 % a2, args, result_type=float)
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
def math_pow(*args: Union[ColT, float]) -> Func:
|
|
333
|
-
"""Computes the power of the column."""
|
|
334
|
-
return math_func("pow", lambda a1, a2: a1**a2, args, result_type=float)
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
def math_lshift(*args: Union[ColT, float]) -> Func:
|
|
338
|
-
"""Computes the left shift of the column."""
|
|
339
|
-
return math_func("lshift", lambda a1, a2: a1 << a2, args, result_type=int)
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
def math_rshift(*args: Union[ColT, float]) -> Func:
|
|
343
|
-
"""Computes the right shift of the column."""
|
|
344
|
-
return math_func("rshift", lambda a1, a2: a1 >> a2, args, result_type=int)
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
def math_and(*args: Union[ColT, float]) -> Func:
|
|
348
|
-
"""Computes the logical AND of the column."""
|
|
349
|
-
return math_func("and", lambda a1, a2: a1 & a2, args, result_type=bool)
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
def math_or(*args: Union[ColT, float]) -> Func:
|
|
353
|
-
"""Computes the logical OR of the column."""
|
|
354
|
-
return math_func("or", lambda a1, a2: a1 | a2, args, result_type=bool)
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
def math_xor(*args: Union[ColT, float]) -> Func:
|
|
358
|
-
"""Computes the logical XOR of the column."""
|
|
359
|
-
return math_func("xor", lambda a1, a2: a1 ^ a2, args, result_type=bool)
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
def math_lt(*args: Union[ColT, float]) -> Func:
|
|
363
|
-
"""Computes the less than comparison of the column."""
|
|
364
|
-
return math_func("lt", lambda a1, a2: a1 < a2, args, result_type=bool)
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
def math_le(*args: Union[ColT, float]) -> Func:
|
|
368
|
-
"""Computes the less than or equal comparison of the column."""
|
|
369
|
-
return math_func("le", lambda a1, a2: a1 <= a2, args, result_type=bool)
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
def math_eq(*args: Union[ColT, float]) -> Func:
|
|
373
|
-
"""Computes the equality comparison of the column."""
|
|
374
|
-
return math_func("eq", lambda a1, a2: a1 == a2, args, result_type=bool)
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
def math_ne(*args: Union[ColT, float]) -> Func:
|
|
378
|
-
"""Computes the inequality comparison of the column."""
|
|
379
|
-
return math_func("ne", lambda a1, a2: a1 != a2, args, result_type=bool)
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
def math_gt(*args: Union[ColT, float]) -> Func:
|
|
383
|
-
"""Computes the greater than comparison of the column."""
|
|
384
|
-
return math_func("gt", lambda a1, a2: a1 > a2, args, result_type=bool)
|
|
426
|
+
def _truediv(a, b):
|
|
427
|
+
# Using sqlalchemy.sql.func.divide here instead of / operator
|
|
428
|
+
# because of a bug in ClickHouse SQLAlchemy dialect
|
|
429
|
+
# See https://github.com/xzkostyan/clickhouse-sqlalchemy/issues/335
|
|
430
|
+
return sa_func.divide(a, b)
|
|
385
431
|
|
|
386
432
|
|
|
387
|
-
def
|
|
388
|
-
|
|
389
|
-
return math_func("ge", lambda a1, a2: a1 >= a2, args, result_type=bool)
|
|
433
|
+
def _floordiv(a, b):
|
|
434
|
+
return cast(_truediv(a, b), Integer)
|