pixeltable 0.2.19__tar.gz → 0.2.21__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 pixeltable might be problematic. Click here for more details.
- {pixeltable-0.2.19 → pixeltable-0.2.21}/PKG-INFO +16 -7
- {pixeltable-0.2.19 → pixeltable-0.2.21}/README.md +14 -6
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/__init__.py +7 -19
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/__version__.py +2 -2
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/__init__.py +7 -7
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/globals.py +3 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/insertable_table.py +9 -7
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/table.py +220 -143
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/table_version.py +36 -18
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/table_version_path.py +0 -8
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/view.py +3 -3
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/dataframe.py +9 -24
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/env.py +107 -36
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exceptions.py +7 -4
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/__init__.py +1 -1
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/aggregation_node.py +22 -15
- pixeltable-0.2.21/pixeltable/exec/component_iteration_node.py +100 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/data_row_batch.py +7 -7
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/exec_node.py +35 -7
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/expr_eval_node.py +2 -1
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/in_memory_data_node.py +9 -9
- pixeltable-0.2.21/pixeltable/exec/sql_node.py +425 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/__init__.py +1 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/data_row.py +30 -19
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/expr.py +15 -14
- pixeltable-0.2.21/pixeltable/exprs/expr_dict.py +55 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/expr_set.py +21 -15
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/function_call.py +21 -8
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/json_path.py +3 -6
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/rowid_ref.py +2 -2
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/sql_element_cache.py +5 -1
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/ext/functions/whisperx.py +7 -2
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/callable_function.py +2 -2
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/function_registry.py +6 -7
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/query_template_function.py +11 -12
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/signature.py +17 -15
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/udf.py +0 -4
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/__init__.py +1 -1
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/audio.py +4 -6
- pixeltable-0.2.21/pixeltable/functions/globals.py +146 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/huggingface.py +12 -14
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/image.py +59 -45
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/json.py +0 -1
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/mistralai.py +2 -2
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/openai.py +22 -25
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/string.py +50 -50
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/timestamp.py +20 -20
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/together.py +26 -12
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/video.py +11 -20
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/whisper.py +2 -20
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/globals.py +57 -56
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/index/base.py +2 -2
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/index/btree.py +7 -7
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/index/embedding_index.py +8 -10
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/io/external_store.py +11 -5
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/io/globals.py +3 -1
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/io/hf_datasets.py +4 -4
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/io/label_studio.py +6 -6
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/io/parquet.py +14 -13
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/iterators/document.py +10 -8
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/iterators/video.py +10 -1
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/__init__.py +3 -2
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_14.py +4 -2
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_15.py +1 -1
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_19.py +1 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_20.py +1 -1
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/util.py +9 -8
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/schema.py +32 -21
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/plan.py +136 -154
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/store.py +51 -36
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/tool/create_test_db_dump.py +7 -7
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/tool/doc_plugins/griffe.py +3 -34
- pixeltable-0.2.21/pixeltable/tool/mypy_plugin.py +32 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/type_system.py +243 -60
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/arrow.py +10 -9
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/coco.py +4 -4
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/documents.py +1 -1
- pixeltable-0.2.21/pixeltable/utils/filecache.py +242 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/formatter.py +1 -1
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/http_server.py +2 -5
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/media_store.py +6 -6
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/pytorch.py +10 -11
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/sql.py +2 -1
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pyproject.toml +4 -4
- pixeltable-0.2.19/pixeltable/exec/component_iteration_node.py +0 -79
- pixeltable-0.2.19/pixeltable/exec/sql_node.py +0 -296
- pixeltable-0.2.19/pixeltable/functions/globals.py +0 -102
- pixeltable-0.2.19/pixeltable/utils/filecache.py +0 -195
- pixeltable-0.2.19/pixeltable/utils/help.py +0 -11
- {pixeltable-0.2.19 → pixeltable-0.2.21}/LICENSE +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/catalog.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/column.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/dir.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/named_function.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/path.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/path_dict.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/schema_object.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/cache_prefetch_node.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/exec_context.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/media_validation_node.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/row_update_node.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/arithmetic_expr.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/array_slice.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/column_property_ref.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/column_ref.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/comparison.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/compound_predicate.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/globals.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/in_predicate.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/inline_expr.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/is_null.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/json_mapper.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/literal.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/method_ref.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/object_ref.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/row_builder.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/similarity_expr.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/type_cast.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/variable.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/ext/__init__.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/ext/functions/__init__.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/ext/functions/yolox.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/__init__.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/aggregate_function.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/expr_template_function.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/function.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/globals.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/anthropic.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/fireworks.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/util.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/vision.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/index/__init__.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/io/__init__.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/io/pandas.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/iterators/__init__.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/iterators/base.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/iterators/string.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_10.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_12.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_13.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_16.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_17.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_18.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/notes.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/tool/create_test_video.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/tool/doc_plugins/mkdocstrings.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/tool/doc_plugins/templates/material/udf.html.jinja +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/tool/embed_udf.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/__init__.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/code.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/s3.py +0 -0
- {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/transactional_directory.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pixeltable
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.21
|
|
4
4
|
Summary: Pixeltable: The Multimodal AI Data Plane
|
|
5
5
|
Author: Pixeltable, Inc.
|
|
6
6
|
Author-email: contact@pixeltable.com
|
|
@@ -31,6 +31,7 @@ Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
|
|
|
31
31
|
Requires-Dist: requests (>=2.31.0,<3.0.0)
|
|
32
32
|
Requires-Dist: sqlalchemy (>=2.0.23,<3.0.0)
|
|
33
33
|
Requires-Dist: tenacity (>=8.2,<9.0)
|
|
34
|
+
Requires-Dist: toml (>=0.10)
|
|
34
35
|
Requires-Dist: tqdm (>=4.64)
|
|
35
36
|
Description-Content-Type: text/markdown
|
|
36
37
|
|
|
@@ -38,18 +39,26 @@ Description-Content-Type: text/markdown
|
|
|
38
39
|
<img src="https://raw.githubusercontent.com/pixeltable/pixeltable/main/docs/source/data/pixeltable-logo-large.png" alt="Pixeltable" width="50%" />
|
|
39
40
|
<br></br>
|
|
40
41
|
|
|
41
|
-
[
|
|
43
|
-
](https://opensource.org/licenses/Apache-2.0)
|
|
43
|
+

|
|
44
|
+

|
|
44
45
|
<br>
|
|
45
46
|
[](https://github.com/pixeltable/pixeltable/actions/workflows/pytest.yml)
|
|
46
47
|
[](https://github.com/pixeltable/pixeltable/actions/workflows/nightly.yml)
|
|
47
|
-
[](https://pypi.org/project/pixeltable/)
|
|
49
|
+
<a target="_blank" href="https://huggingface.co/Pixeltable"> <img src="https://img.shields.io/badge/🤗-HF Space-F25022" alt="Visit our Hugging Face space"/></a>
|
|
48
50
|
|
|
49
|
-
[Installation](https://pixeltable.github.io/pixeltable/getting-started/) | [Documentation](https://pixeltable.readme.io/) | [API Reference](https://pixeltable.github.io/pixeltable/) | [Code Samples](https://pixeltable
|
|
51
|
+
[Installation](https://pixeltable.github.io/pixeltable/getting-started/) | [Documentation](https://pixeltable.readme.io/) | [API Reference](https://pixeltable.github.io/pixeltable/) | [Code Samples](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#-code-samples) | [Computer Vision](https://docs.pixeltable.com/docs/object-detection-in-videos) | [LLM](https://docs.pixeltable.com/docs/document-indexing-and-rag)
|
|
50
52
|
</div>
|
|
51
53
|
|
|
52
|
-
Pixeltable is a Python library providing a declarative interface for multimodal data (text, images, audio, video). It features built-in versioning, lineage tracking, and incremental updates, enabling users to store
|
|
54
|
+
Pixeltable is a Python library providing a declarative interface for multimodal data (text, images, audio, video). It features built-in versioning, lineage tracking, and incremental updates, enabling users to **store**, **transform**, **index**, and **iterate** on data for their ML workflows.
|
|
55
|
+
|
|
56
|
+
Data transformations, model inference, and custom logic are embedded as **computed columns**.
|
|
57
|
+
- **Load/Query all data types**: Interact with [video data](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#import-media-data-into-pixeltable-videos-images-audio) at the [frame level](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#text-and-image-similarity-search-on-video-frames-with-embedding-indexes) and documents at the [chunk level](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#automate-data-operations-with-views-eg-split-documents-into-chunks)
|
|
58
|
+
- **Incremental updates for data transformation**: Maintain an [embedding index](https://docs.pixeltable.com/docs/embedding-vector-indexes) colocated with your data
|
|
59
|
+
- **Lazy evaluation and cache management**: Eliminates the need for [manual frame extraction](https://docs.pixeltable.com/docs/object-detection-in-videos)
|
|
60
|
+
- **Integrates with any Python libraries**: Use [built-in and custom functions (UDFs)](https://docs.pixeltable.com/docs/user-defined-functions-udfs) without complex pipelines
|
|
61
|
+
- **Data format agnostic and extensibility**: Access tables as Parquet files, [PyTorch datasets](https://pixeltable.github.io/pixeltable/api/data-frame/#pixeltable.DataFrame.to_pytorch_dataset), or [COCO annotations](https://pixeltable.github.io/pixeltable/api/table/#pixeltable.Table.to_coco_dataset)
|
|
53
62
|
|
|
54
63
|
## 💾 Installation
|
|
55
64
|
|
|
@@ -2,18 +2,26 @@
|
|
|
2
2
|
<img src="https://raw.githubusercontent.com/pixeltable/pixeltable/main/docs/source/data/pixeltable-logo-large.png" alt="Pixeltable" width="50%" />
|
|
3
3
|
<br></br>
|
|
4
4
|
|
|
5
|
-
[
|
|
7
|
-
](https://opensource.org/licenses/Apache-2.0)
|
|
6
|
+

|
|
7
|
+

|
|
8
8
|
<br>
|
|
9
9
|
[](https://github.com/pixeltable/pixeltable/actions/workflows/pytest.yml)
|
|
10
10
|
[](https://github.com/pixeltable/pixeltable/actions/workflows/nightly.yml)
|
|
11
|
-
[](https://pypi.org/project/pixeltable/)
|
|
12
|
+
<a target="_blank" href="https://huggingface.co/Pixeltable"> <img src="https://img.shields.io/badge/🤗-HF Space-F25022" alt="Visit our Hugging Face space"/></a>
|
|
12
13
|
|
|
13
|
-
[Installation](https://pixeltable.github.io/pixeltable/getting-started/) | [Documentation](https://pixeltable.readme.io/) | [API Reference](https://pixeltable.github.io/pixeltable/) | [Code Samples](https://pixeltable
|
|
14
|
+
[Installation](https://pixeltable.github.io/pixeltable/getting-started/) | [Documentation](https://pixeltable.readme.io/) | [API Reference](https://pixeltable.github.io/pixeltable/) | [Code Samples](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#-code-samples) | [Computer Vision](https://docs.pixeltable.com/docs/object-detection-in-videos) | [LLM](https://docs.pixeltable.com/docs/document-indexing-and-rag)
|
|
14
15
|
</div>
|
|
15
16
|
|
|
16
|
-
Pixeltable is a Python library providing a declarative interface for multimodal data (text, images, audio, video). It features built-in versioning, lineage tracking, and incremental updates, enabling users to store
|
|
17
|
+
Pixeltable is a Python library providing a declarative interface for multimodal data (text, images, audio, video). It features built-in versioning, lineage tracking, and incremental updates, enabling users to **store**, **transform**, **index**, and **iterate** on data for their ML workflows.
|
|
18
|
+
|
|
19
|
+
Data transformations, model inference, and custom logic are embedded as **computed columns**.
|
|
20
|
+
- **Load/Query all data types**: Interact with [video data](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#import-media-data-into-pixeltable-videos-images-audio) at the [frame level](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#text-and-image-similarity-search-on-video-frames-with-embedding-indexes) and documents at the [chunk level](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#automate-data-operations-with-views-eg-split-documents-into-chunks)
|
|
21
|
+
- **Incremental updates for data transformation**: Maintain an [embedding index](https://docs.pixeltable.com/docs/embedding-vector-indexes) colocated with your data
|
|
22
|
+
- **Lazy evaluation and cache management**: Eliminates the need for [manual frame extraction](https://docs.pixeltable.com/docs/object-detection-in-videos)
|
|
23
|
+
- **Integrates with any Python libraries**: Use [built-in and custom functions (UDFs)](https://docs.pixeltable.com/docs/user-defined-functions-udfs) without complex pipelines
|
|
24
|
+
- **Data format agnostic and extensibility**: Access tables as Parquet files, [PyTorch datasets](https://pixeltable.github.io/pixeltable/api/data-frame/#pixeltable.DataFrame.to_pytorch_dataset), or [COCO annotations](https://pixeltable.github.io/pixeltable/api/table/#pixeltable.Table.to_coco_dataset)
|
|
17
25
|
|
|
18
26
|
## 💾 Installation
|
|
19
27
|
|
|
@@ -1,25 +1,13 @@
|
|
|
1
|
-
from .catalog import Column, Table,
|
|
1
|
+
from .catalog import Column, InsertableTable, Table, UpdateStatus, View
|
|
2
2
|
from .dataframe import DataFrame
|
|
3
3
|
from .exceptions import Error
|
|
4
4
|
from .exprs import RELATIVE_PATH_ROOT
|
|
5
|
-
from .func import
|
|
6
|
-
from .globals import
|
|
7
|
-
|
|
8
|
-
from .type_system import (
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
IntType,
|
|
12
|
-
FloatType,
|
|
13
|
-
BoolType,
|
|
14
|
-
TimestampType,
|
|
15
|
-
JsonType,
|
|
16
|
-
ArrayType,
|
|
17
|
-
ImageType,
|
|
18
|
-
VideoType,
|
|
19
|
-
AudioType,
|
|
20
|
-
DocumentType,
|
|
21
|
-
)
|
|
22
|
-
from .utils.help import help
|
|
5
|
+
from .func import Aggregator, Function, expr_udf, uda, udf
|
|
6
|
+
from .globals import (array, configure_logging, create_dir, create_table, create_view, drop_dir, drop_table, get_table,
|
|
7
|
+
init, list_dirs, list_functions, list_tables, move)
|
|
8
|
+
from .type_system import (Array, ArrayType, Audio, AudioType, Bool, BoolType, ColumnType, Document, DocumentType, Float,
|
|
9
|
+
FloatType, Image, ImageType, Int, IntType, Json, JsonType, Required, String, StringType,
|
|
10
|
+
Timestamp, TimestampType, Video, VideoType)
|
|
23
11
|
|
|
24
12
|
from . import ext, functions, io, iterators
|
|
25
13
|
from .__version__ import __version__, __version_tuple__
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
# These version placeholders will be replaced during build.
|
|
2
|
-
__version__ = "0.2.
|
|
3
|
-
__version_tuple__ = (0, 2,
|
|
2
|
+
__version__ = "0.2.21"
|
|
3
|
+
__version_tuple__ = (0, 2, 21)
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
from .catalog import Catalog
|
|
2
2
|
from .column import Column
|
|
3
|
-
from .table_version_path import TableVersionPath
|
|
4
|
-
from .table_version import TableVersion
|
|
5
|
-
from .schema_object import SchemaObject
|
|
6
|
-
from .named_function import NamedFunction
|
|
7
3
|
from .dir import Dir
|
|
8
|
-
from .
|
|
4
|
+
from .globals import UpdateStatus, is_valid_identifier, is_valid_path
|
|
9
5
|
from .insertable_table import InsertableTable
|
|
10
|
-
from .
|
|
6
|
+
from .named_function import NamedFunction
|
|
11
7
|
from .path import Path
|
|
12
8
|
from .path_dict import PathDict
|
|
13
|
-
from .
|
|
9
|
+
from .schema_object import SchemaObject
|
|
10
|
+
from .table import Table
|
|
11
|
+
from .table_version import TableVersion
|
|
12
|
+
from .table_version_path import TableVersionPath
|
|
13
|
+
from .view import View
|
|
@@ -16,6 +16,9 @@ _PREDEF_SYMBOLS: Optional[set[str]] = None
|
|
|
16
16
|
|
|
17
17
|
@dataclasses.dataclass
|
|
18
18
|
class UpdateStatus:
|
|
19
|
+
"""
|
|
20
|
+
Information about updates that resulted from a table operation.
|
|
21
|
+
"""
|
|
19
22
|
num_rows: int = 0
|
|
20
23
|
# TODO: disambiguate what this means: # of slots computed or # of columns computed?
|
|
21
24
|
num_computed_values: int = 0
|
|
@@ -10,6 +10,7 @@ import pixeltable as pxt
|
|
|
10
10
|
import pixeltable.type_system as ts
|
|
11
11
|
from pixeltable import exceptions as excs
|
|
12
12
|
from pixeltable.env import Env
|
|
13
|
+
from pixeltable.utils.filecache import FileCache
|
|
13
14
|
|
|
14
15
|
from .catalog import Catalog
|
|
15
16
|
from .globals import UpdateStatus
|
|
@@ -101,21 +102,22 @@ class InsertableTable(Table):
|
|
|
101
102
|
if not isinstance(row, dict):
|
|
102
103
|
raise excs.Error('rows must be a list of dictionaries')
|
|
103
104
|
self._validate_input_rows(rows)
|
|
104
|
-
|
|
105
|
+
status = self._tbl_version.insert(rows, None, print_stats=print_stats, fail_on_exception=fail_on_exception)
|
|
105
106
|
|
|
106
|
-
if
|
|
107
|
+
if status.num_excs == 0:
|
|
107
108
|
cols_with_excs_str = ''
|
|
108
109
|
else:
|
|
109
110
|
cols_with_excs_str = \
|
|
110
|
-
f' across {len(
|
|
111
|
-
cols_with_excs_str += f' ({", ".join(
|
|
111
|
+
f' across {len(status.cols_with_excs)} column{"" if len(status.cols_with_excs) == 1 else "s"}'
|
|
112
|
+
cols_with_excs_str += f' ({", ".join(status.cols_with_excs)})'
|
|
112
113
|
msg = (
|
|
113
|
-
f'Inserted {
|
|
114
|
-
f'with {
|
|
114
|
+
f'Inserted {status.num_rows} row{"" if status.num_rows == 1 else "s"} '
|
|
115
|
+
f'with {status.num_excs} error{"" if status.num_excs == 1 else "s"}{cols_with_excs_str}.'
|
|
115
116
|
)
|
|
116
117
|
print(msg)
|
|
117
118
|
_logger.info(f'InsertableTable {self._name}: {msg}')
|
|
118
|
-
|
|
119
|
+
FileCache.get().emit_eviction_warnings()
|
|
120
|
+
return status
|
|
119
121
|
|
|
120
122
|
def _validate_input_rows(self, rows: List[Dict[str, Any]]) -> None:
|
|
121
123
|
"""Verify that the input rows match the table schema"""
|