pixeltable 0.3.4__tar.gz → 0.3.5__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.3.4 → pixeltable-0.3.5}/PKG-INFO +34 -49
- {pixeltable-0.3.4 → pixeltable-0.3.5}/README.md +17 -31
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/__init__.py +1 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/__version__.py +2 -2
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/catalog/catalog.py +9 -2
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/catalog/column.py +1 -1
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/catalog/dir.py +1 -1
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/catalog/table.py +1 -1
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/catalog/table_version.py +12 -2
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/catalog/table_version_path.py +2 -2
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/catalog/view.py +64 -20
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/dataframe.py +10 -5
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/env.py +12 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exec/expr_eval/evaluators.py +4 -2
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exec/expr_eval/expr_eval_node.py +4 -1
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/comparison.py +8 -4
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/data_row.py +5 -3
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/expr.py +2 -2
- pixeltable-0.3.5/pixeltable/exprs/function_call.py +455 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/func/aggregate_function.py +29 -15
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/func/callable_function.py +11 -8
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/func/expr_template_function.py +3 -9
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/func/function.py +148 -74
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/func/signature.py +65 -30
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/func/udf.py +1 -1
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/__init__.py +1 -0
- pixeltable-0.3.5/pixeltable/functions/deepseek.py +121 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/openai.py +23 -9
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/video.py +14 -7
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/globals.py +14 -3
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/index/embedding_index.py +4 -13
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/io/globals.py +88 -77
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/io/hf_datasets.py +34 -34
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/io/pandas.py +75 -76
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/io/parquet.py +19 -27
- pixeltable-0.3.5/pixeltable/io/utils.py +115 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/iterators/audio.py +2 -1
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/iterators/video.py +1 -1
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/__init__.py +2 -1
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/convert_15.py +18 -8
- pixeltable-0.3.5/pixeltable/metadata/converters/convert_27.py +31 -0
- pixeltable-0.3.5/pixeltable/metadata/converters/convert_28.py +15 -0
- pixeltable-0.3.5/pixeltable/metadata/converters/convert_29.py +111 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/util.py +12 -1
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/notes.py +3 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/schema.py +8 -0
- pixeltable-0.3.5/pixeltable/share/__init__.py +1 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/share/packager.py +41 -13
- pixeltable-0.3.5/pixeltable/share/publish.py +97 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/type_system.py +40 -14
- pixeltable-0.3.5/pixeltable/utils/__init__.py +58 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/utils/arrow.py +40 -7
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/utils/formatter.py +1 -1
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pyproject.toml +54 -51
- pixeltable-0.3.4/pixeltable/exprs/function_call.py +0 -613
- pixeltable-0.3.4/pixeltable/share/__init__.py +0 -0
- pixeltable-0.3.4/pixeltable/utils/__init__.py +0 -17
- {pixeltable-0.3.4 → pixeltable-0.3.5}/LICENSE +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/catalog/__init__.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/catalog/globals.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/catalog/insertable_table.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/catalog/named_function.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/catalog/path.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/catalog/path_dict.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/catalog/schema_object.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exceptions.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exec/__init__.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exec/aggregation_node.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exec/cache_prefetch_node.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exec/component_iteration_node.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exec/data_row_batch.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exec/exec_context.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exec/exec_node.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exec/expr_eval/__init__.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exec/expr_eval/globals.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exec/expr_eval/row_buffer.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exec/expr_eval/schedulers.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exec/in_memory_data_node.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exec/row_update_node.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exec/sql_node.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/__init__.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/arithmetic_expr.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/array_slice.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/column_property_ref.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/column_ref.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/compound_predicate.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/expr_dict.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/expr_set.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/globals.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/in_predicate.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/inline_expr.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/is_null.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/json_mapper.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/json_path.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/literal.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/method_ref.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/object_ref.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/row_builder.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/rowid_ref.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/similarity_expr.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/sql_element_cache.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/type_cast.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/exprs/variable.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/ext/__init__.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/ext/functions/__init__.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/ext/functions/whisperx.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/ext/functions/yolox.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/func/__init__.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/func/function_registry.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/func/globals.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/func/query_template_function.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/func/tools.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/anthropic.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/audio.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/fireworks.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/gemini.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/globals.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/huggingface.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/image.py +7 -7
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/json.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/llama_cpp.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/math.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/mistralai.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/ollama.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/replicate.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/string.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/timestamp.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/together.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/util.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/vision.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/functions/whisper.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/index/__init__.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/index/base.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/index/btree.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/io/__init__.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/io/external_store.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/io/fiftyone.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/io/label_studio.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/iterators/__init__.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/iterators/base.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/iterators/document.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/iterators/image.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/iterators/string.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/convert_10.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/convert_12.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/convert_13.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/convert_14.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/convert_16.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/convert_17.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/convert_18.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/convert_19.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/convert_20.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/convert_21.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/convert_22.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/convert_23.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/convert_24.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/convert_25.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/metadata/converters/convert_26.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/plan.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/py.typed +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/store.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/utils/coco.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/utils/code.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/utils/console_output.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/utils/description_helper.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/utils/documents.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/utils/filecache.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/utils/http_server.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/utils/iceberg.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/utils/media_store.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/utils/pytorch.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/utils/s3.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/utils/sql.py +0 -0
- {pixeltable-0.3.4 → pixeltable-0.3.5}/pixeltable/utils/transactional_directory.py +0 -0
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: pixeltable
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.5
|
|
4
4
|
Summary: AI Data Infrastructure: Declarative, Multimodal, and Incremental
|
|
5
|
-
Home-page: https://pixeltable.com/
|
|
6
5
|
License: Apache-2.0
|
|
7
6
|
Keywords: data-science,machine-learning,database,ai,computer-vision,chatbot,ml,artificial-intelligence,feature-engineering,multimodal,mlops,feature-store,vector-database,llm,genai
|
|
8
7
|
Author: Pixeltable, Inc.
|
|
9
|
-
Author-email: contact@pixeltable.com
|
|
8
|
+
Author-email: contact@pixeltable.com>
|
|
10
9
|
Requires-Python: >=3.9,<4.0
|
|
11
10
|
Classifier: Intended Audience :: Developers
|
|
12
11
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -14,7 +13,6 @@ Classifier: License :: OSI Approved :: Apache Software License
|
|
|
14
13
|
Classifier: Operating System :: MacOS
|
|
15
14
|
Classifier: Operating System :: Microsoft :: Windows
|
|
16
15
|
Classifier: Operating System :: POSIX :: Linux
|
|
17
|
-
Classifier: Programming Language :: Python :: 3
|
|
18
16
|
Classifier: Programming Language :: Python :: 3.9
|
|
19
17
|
Classifier: Programming Language :: Python :: 3.10
|
|
20
18
|
Classifier: Programming Language :: Python :: 3.11
|
|
@@ -24,36 +22,37 @@ Classifier: Topic :: Database
|
|
|
24
22
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
25
23
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
26
24
|
Requires-Dist: av (>=10.0.0)
|
|
27
|
-
Requires-Dist: beautifulsoup4 (>=4.0.0
|
|
28
|
-
Requires-Dist: cloudpickle (>=2.2.1
|
|
29
|
-
Requires-Dist: ftfy (>=6.2.0
|
|
25
|
+
Requires-Dist: beautifulsoup4 (>=4.0.0)
|
|
26
|
+
Requires-Dist: cloudpickle (>=2.2.1)
|
|
27
|
+
Requires-Dist: ftfy (>=6.2.0)
|
|
30
28
|
Requires-Dist: httpcore (>=1.0.3)
|
|
31
29
|
Requires-Dist: httpx (>=0.27)
|
|
32
|
-
Requires-Dist: jinja2 (>=3.1.3
|
|
33
|
-
Requires-Dist: jmespath (>=1.0.1
|
|
30
|
+
Requires-Dist: jinja2 (>=3.1.3)
|
|
31
|
+
Requires-Dist: jmespath (>=1.0.1)
|
|
34
32
|
Requires-Dist: jsonschema (>=4.1.0)
|
|
35
33
|
Requires-Dist: lxml (>=5.0)
|
|
36
|
-
Requires-Dist: more-itertools (>=10.2
|
|
34
|
+
Requires-Dist: more-itertools (>=10.2)
|
|
37
35
|
Requires-Dist: nest_asyncio (>=1.5)
|
|
38
36
|
Requires-Dist: numpy (>=1.25,<2.0)
|
|
39
37
|
Requires-Dist: pandas (>=2.0,<3.0)
|
|
40
|
-
Requires-Dist: pgvector (>=0.2.1
|
|
38
|
+
Requires-Dist: pgvector (>=0.2.1)
|
|
41
39
|
Requires-Dist: pillow (>=9.3.0)
|
|
42
40
|
Requires-Dist: pixeltable-pgserver (==0.3.1)
|
|
43
|
-
Requires-Dist: psutil (>=5.9.5
|
|
41
|
+
Requires-Dist: psutil (>=5.9.5)
|
|
44
42
|
Requires-Dist: psycopg[binary] (>=3.1.18)
|
|
45
43
|
Requires-Dist: puremagic (>=1.20)
|
|
46
44
|
Requires-Dist: pyarrow (>=13.0.0)
|
|
47
45
|
Requires-Dist: pydantic (>=2.7.4)
|
|
48
46
|
Requires-Dist: pyiceberg (>=0.6.0)
|
|
49
|
-
Requires-Dist: pymupdf (>=1.24.1
|
|
50
|
-
Requires-Dist: pyyaml (>=6.0.1
|
|
51
|
-
Requires-Dist: requests (>=2.31.0
|
|
52
|
-
Requires-Dist: sqlalchemy (>=2.0.23
|
|
53
|
-
Requires-Dist: tenacity (>=8.2
|
|
47
|
+
Requires-Dist: pymupdf (>=1.24.1)
|
|
48
|
+
Requires-Dist: pyyaml (>=6.0.1)
|
|
49
|
+
Requires-Dist: requests (>=2.31.0)
|
|
50
|
+
Requires-Dist: sqlalchemy (>=2.0.23)
|
|
51
|
+
Requires-Dist: tenacity (>=8.2)
|
|
54
52
|
Requires-Dist: toml (>=0.10)
|
|
55
53
|
Requires-Dist: tqdm (>=4.64)
|
|
56
54
|
Project-URL: Documentation, https://docs.pixeltable.com/
|
|
55
|
+
Project-URL: Homepage, https://pixeltable.com/
|
|
57
56
|
Project-URL: Repository, https://github.com/pixeltable/pixeltable
|
|
58
57
|
Description-Content-Type: text/markdown
|
|
59
58
|
|
|
@@ -77,31 +76,22 @@ Description-Content-Type: text/markdown
|
|
|
77
76
|
</a>
|
|
78
77
|
|
|
79
78
|
[Installation](https://docs.pixeltable.com/docs/installation) |
|
|
80
|
-
[Documentation](https://pixeltable.
|
|
79
|
+
[Documentation](https://docs.pixeltable.com/docs/overview/quick-start) |
|
|
81
80
|
[API Reference](https://pixeltable.github.io/pixeltable/) |
|
|
82
81
|
[Code Samples](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#-code-samples) |
|
|
83
82
|
[Computer Vision](https://docs.pixeltable.com/docs/object-detection-in-videos) |
|
|
84
83
|
[LLM](https://docs.pixeltable.com/docs/document-indexing-and-rag)
|
|
85
84
|
</div>
|
|
86
85
|
|
|
86
|
+
## 🔍 What is Pixeltable?
|
|
87
87
|
Pixeltable is a declarative data infrastructure for building multimodal AI applications, enabling incremental storage, transformation, indexing, and orchestration of your data.
|
|
88
|
+
- **Data Ingestion**: Unified interface for all [data types](https://docs.pixeltable.com/docs/datastore/bringing-data) (images, videos, audio, documents, URLs, blob storage, structured data)
|
|
89
|
+
- **Data Transformation**: [Chunking](https://docs.pixeltable.com/docs/datastore/views), [embedding](https://docs.pixeltable.com/docs/datastore/embedding-index), and processing with declarative [computed columns](https://docs.pixeltable.com/docs/datastore/computed-columns)
|
|
90
|
+
- **Indexing & Storage**: Type-safe tables with [built-in vector indexing](https://docs.pixeltable.com/docs/cookbooks/search/website)
|
|
91
|
+
- **Query & Retrieval**: [Queries](https://docs.pixeltable.com/docs/datastore/filtering-and-selecting) combining filtering, sorting, and similarity search
|
|
92
|
+
- **Inference & Generation**: [Integration](https://docs.pixeltable.com/docs/integrations/frameworks#cloud-llm-providers) with AI models (OpenAI, Anthropic, PyTorch, YOLOX, DETR, Together, Hugging Face and more...)
|
|
88
93
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
- **Work with all your data**: Interact with
|
|
92
|
-
[video data](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#import-media-data-into-pixeltable-videos-images-audio)
|
|
93
|
-
at the [frame level](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#text-and-image-similarity-search-on-video-frames-with-embedding-indexes)
|
|
94
|
-
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)
|
|
95
|
-
- **Incremental updates**: Maintain an
|
|
96
|
-
[embedding index](https://docs.pixeltable.com/docs/embedding-vector-indexes) colocated with your data
|
|
97
|
-
- **Lazy evaluation and cache management**: Eliminates the need for
|
|
98
|
-
[manual frame extraction](https://docs.pixeltable.com/docs/object-detection-in-videos)
|
|
99
|
-
- **Integrates with any Python libraries**: Use
|
|
100
|
-
[built-in and custom functions (UDFs)](https://docs.pixeltable.com/docs/user-defined-functions-udfs)
|
|
101
|
-
without complex pipelines
|
|
102
|
-
- **Data format agnostic and extensibility**: Access tables as Parquet files,
|
|
103
|
-
[PyTorch datasets](https://pixeltable.github.io/pixeltable/api/data-frame/#pixeltable.DataFrame.to_pytorch_dataset),
|
|
104
|
-
or [COCO annotations](https://pixeltable.github.io/pixeltable/api/table/#pixeltable.Table.to_coco_dataset)
|
|
94
|
+
All with your [custom functions (UDFs)](https://docs.pixeltable.com/docs/datastore/custom-functions), and built-in caching, versioning, lineage tracking, and incremental computation.
|
|
105
95
|
|
|
106
96
|
## 💾 Installation
|
|
107
97
|
|
|
@@ -120,7 +110,7 @@ Learn how to create tables, populate them with data, and enhance them with built
|
|
|
120
110
|
| 10-Minute Tour of Pixeltable | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/pixeltable-basics.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> | Tables and Data Operations | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/fundamentals/tables-and-data-operations.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> |
|
|
121
111
|
| User-Defined Functions (UDFs) | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/feature-guides/udfs-in-pixeltable.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> | Object Detection Models | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/use-cases/object-detection-in-videos.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> |
|
|
122
112
|
| Incremental Prompt Engineering | <a target="_blank" href="https://colab.research.google.com/github/mistralai/cookbook/blob/main/third_party/Pixeltable/incremental_prompt_engineering_and_model_comparison.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Github"/> | Working with External Files | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/feature-guides/working-with-external-files.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> |
|
|
123
|
-
| Integrating with Label Studio | <a target="_blank" href="https://pixeltable.
|
|
113
|
+
| Integrating with Label Studio | <a target="_blank" href="https://docs.pixeltable.com/docs/cookbooks/vision/label-studio"> <img src="https://img.shields.io/badge/📚 Documentation-013056" alt="Visit our documentation"/></a> | Audio/Video Transcript Indexing | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/use-cases/audio-transcriptions.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> |
|
|
124
114
|
| Multimodal Application | <a target="_blank" href="https://huggingface.co/spaces/Pixeltable/Multimodal-Powerhouse"> <img src="https://img.shields.io/badge/🤗-Gradio App-FF7D04" alt="Visit our Hugging Face Space"/></a> | Document Indexing and RAG | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/use-cases/rag-demo.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> |
|
|
125
115
|
| Context-Aware Discord Bot | <a target="_blank" href="https://github.com/pixeltable/pixeltable/blob/main/docs/sample-apps/context-aware-discord-bot"> <img src="https://img.shields.io/badge/%F0%9F%92%AC-Discord Bot-%235865F2.svg" alt="Visit our documentation"/></a> | Image/Text Similarity Search | <a target="_blank" href="https://github.com/pixeltable/pixeltable/tree/main/docs/sample-apps/text-and-image-similarity-search-nextjs-fastapi"> <img src="https://img.shields.io/badge/🖥️-Next.js + FastAPI-black.svg" alt="Open In Colab"/> |
|
|
126
116
|
|
|
@@ -142,7 +132,7 @@ paths = [
|
|
|
142
132
|
v.insert({'video': prefix + p} for p in paths)
|
|
143
133
|
```
|
|
144
134
|
|
|
145
|
-
Learn how to [work with data in Pixeltable](https://pixeltable.
|
|
135
|
+
Learn how to [work with data in Pixeltable](https://docs.pixeltable.com/docs/datastore/tables-and-operations).
|
|
146
136
|
|
|
147
137
|
### Object detection in images using DETR model
|
|
148
138
|
|
|
@@ -175,7 +165,7 @@ t.select(animal = t.image,
|
|
|
175
165
|
```
|
|
176
166
|
|
|
177
167
|
Learn about computed columns and object detection:
|
|
178
|
-
[Comparing object detection models](https://pixeltable.
|
|
168
|
+
[Comparing object detection models](https://docs.pixeltable.com/docs/examples/use-cases#multimodal-processing).
|
|
179
169
|
|
|
180
170
|
### Extend Pixeltable's capabilities with user-defined functions
|
|
181
171
|
|
|
@@ -190,7 +180,7 @@ def draw_boxes(img: PIL.Image.Image, boxes: list[list[float]]) -> PIL.Image.Imag
|
|
|
190
180
|
```
|
|
191
181
|
|
|
192
182
|
Learn more about user-defined functions:
|
|
193
|
-
[UDFs in Pixeltable](https://pixeltable.
|
|
183
|
+
[UDFs in Pixeltable](https://docs.pixeltable.com/docs/datastore/custom-functions).
|
|
194
184
|
|
|
195
185
|
### Automate data operations with views, e.g., split documents into chunks
|
|
196
186
|
|
|
@@ -206,7 +196,7 @@ chunks_table = pxt.create_view(
|
|
|
206
196
|
```
|
|
207
197
|
|
|
208
198
|
Learn how to leverage views to build your
|
|
209
|
-
[RAG workflow](https://pixeltable.
|
|
199
|
+
[RAG workflow](https://docs.pixeltable.com/docs/cookbooks/chat/memory).
|
|
210
200
|
|
|
211
201
|
### Evaluate model performance
|
|
212
202
|
|
|
@@ -215,7 +205,7 @@ Learn how to leverage views to build your
|
|
|
215
205
|
frames_view.select(mean_ap(frames_view.eval_yolox_tiny), mean_ap(frames_view.eval_yolox_m)).show()
|
|
216
206
|
```
|
|
217
207
|
|
|
218
|
-
Learn how to leverage Pixeltable for [Model analytics](https://
|
|
208
|
+
Learn how to leverage Pixeltable for [Model analytics](https://github.com/pixeltable/pixeltable/blob/main/docs/notebooks/use-cases/object-detection-in-videos.ipynb).
|
|
219
209
|
|
|
220
210
|
### Working with inference services
|
|
221
211
|
|
|
@@ -252,7 +242,7 @@ chat_table.insert([
|
|
|
252
242
|
chat_table.select(chat_table.input, chat_table.response).head()
|
|
253
243
|
```
|
|
254
244
|
|
|
255
|
-
Learn how to interact with inference services such as [Together AI](https://
|
|
245
|
+
Learn how to interact with inference services such as [Together AI](https://github.com/pixeltable/pixeltable/blob/main/docs/notebooks/integrations/working-with-together.ipynb) in Pixeltable.
|
|
256
246
|
|
|
257
247
|
### Text and image similarity search on video frames with embedding indexes
|
|
258
248
|
|
|
@@ -283,7 +273,7 @@ sim = frames_view.frame.similarity(sample_text)
|
|
|
283
273
|
frames_view.order_by(sim, asc=False).limit(5).select(frames_view.frame, sim=sim).collect()
|
|
284
274
|
```
|
|
285
275
|
|
|
286
|
-
Learn how to work with [Embedding and Vector Indexes](https://docs.pixeltable.com/docs/embedding-
|
|
276
|
+
Learn how to work with [Embedding and Vector Indexes](https://docs.pixeltable.com/docs/datastore/embedding-index).
|
|
287
277
|
|
|
288
278
|
## 🔄 AI Stack Comparison
|
|
289
279
|
|
|
@@ -319,11 +309,6 @@ Learn how to work with [Embedding and Vector Indexes](https://docs.pixeltable.co
|
|
|
319
309
|
|
|
320
310
|
## ❓ FAQ
|
|
321
311
|
|
|
322
|
-
### What is Pixeltable?
|
|
323
|
-
|
|
324
|
-
Pixeltable unifies data storage, versioning, and indexing with orchestration and model versioning under a declarative
|
|
325
|
-
table interface, with transformations, model inference, and custom logic represented as computed columns.
|
|
326
|
-
|
|
327
312
|
### What problems does Pixeltable solve?
|
|
328
313
|
|
|
329
314
|
Today's solutions for AI app development require extensive custom coding and infrastructure plumbing.
|
|
@@ -361,7 +346,7 @@ dealing with the customary data plumbing.
|
|
|
361
346
|
infrastructure and orchestration.
|
|
362
347
|
|
|
363
348
|
> [!TIP]
|
|
364
|
-
> Check out the [Integrations](https://pixeltable.
|
|
349
|
+
> Check out the [Integrations](https://docs.pixeltable.com/docs/integrations/frameworks) section, and feel free to submit
|
|
365
350
|
> a request for additional ones.
|
|
366
351
|
|
|
367
352
|
## 🤝 Contributing to Pixeltable
|
|
@@ -18,31 +18,22 @@
|
|
|
18
18
|
</a>
|
|
19
19
|
|
|
20
20
|
[Installation](https://docs.pixeltable.com/docs/installation) |
|
|
21
|
-
[Documentation](https://pixeltable.
|
|
21
|
+
[Documentation](https://docs.pixeltable.com/docs/overview/quick-start) |
|
|
22
22
|
[API Reference](https://pixeltable.github.io/pixeltable/) |
|
|
23
23
|
[Code Samples](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#-code-samples) |
|
|
24
24
|
[Computer Vision](https://docs.pixeltable.com/docs/object-detection-in-videos) |
|
|
25
25
|
[LLM](https://docs.pixeltable.com/docs/document-indexing-and-rag)
|
|
26
26
|
</div>
|
|
27
27
|
|
|
28
|
+
## 🔍 What is Pixeltable?
|
|
28
29
|
Pixeltable is a declarative data infrastructure for building multimodal AI applications, enabling incremental storage, transformation, indexing, and orchestration of your data.
|
|
30
|
+
- **Data Ingestion**: Unified interface for all [data types](https://docs.pixeltable.com/docs/datastore/bringing-data) (images, videos, audio, documents, URLs, blob storage, structured data)
|
|
31
|
+
- **Data Transformation**: [Chunking](https://docs.pixeltable.com/docs/datastore/views), [embedding](https://docs.pixeltable.com/docs/datastore/embedding-index), and processing with declarative [computed columns](https://docs.pixeltable.com/docs/datastore/computed-columns)
|
|
32
|
+
- **Indexing & Storage**: Type-safe tables with [built-in vector indexing](https://docs.pixeltable.com/docs/cookbooks/search/website)
|
|
33
|
+
- **Query & Retrieval**: [Queries](https://docs.pixeltable.com/docs/datastore/filtering-and-selecting) combining filtering, sorting, and similarity search
|
|
34
|
+
- **Inference & Generation**: [Integration](https://docs.pixeltable.com/docs/integrations/frameworks#cloud-llm-providers) with AI models (OpenAI, Anthropic, PyTorch, YOLOX, DETR, Together, Hugging Face and more...)
|
|
29
35
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
- **Work with all your data**: Interact with
|
|
33
|
-
[video data](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#import-media-data-into-pixeltable-videos-images-audio)
|
|
34
|
-
at the [frame level](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#text-and-image-similarity-search-on-video-frames-with-embedding-indexes)
|
|
35
|
-
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)
|
|
36
|
-
- **Incremental updates**: Maintain an
|
|
37
|
-
[embedding index](https://docs.pixeltable.com/docs/embedding-vector-indexes) colocated with your data
|
|
38
|
-
- **Lazy evaluation and cache management**: Eliminates the need for
|
|
39
|
-
[manual frame extraction](https://docs.pixeltable.com/docs/object-detection-in-videos)
|
|
40
|
-
- **Integrates with any Python libraries**: Use
|
|
41
|
-
[built-in and custom functions (UDFs)](https://docs.pixeltable.com/docs/user-defined-functions-udfs)
|
|
42
|
-
without complex pipelines
|
|
43
|
-
- **Data format agnostic and extensibility**: Access tables as Parquet files,
|
|
44
|
-
[PyTorch datasets](https://pixeltable.github.io/pixeltable/api/data-frame/#pixeltable.DataFrame.to_pytorch_dataset),
|
|
45
|
-
or [COCO annotations](https://pixeltable.github.io/pixeltable/api/table/#pixeltable.Table.to_coco_dataset)
|
|
36
|
+
All with your [custom functions (UDFs)](https://docs.pixeltable.com/docs/datastore/custom-functions), and built-in caching, versioning, lineage tracking, and incremental computation.
|
|
46
37
|
|
|
47
38
|
## 💾 Installation
|
|
48
39
|
|
|
@@ -61,7 +52,7 @@ Learn how to create tables, populate them with data, and enhance them with built
|
|
|
61
52
|
| 10-Minute Tour of Pixeltable | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/pixeltable-basics.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> | Tables and Data Operations | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/fundamentals/tables-and-data-operations.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> |
|
|
62
53
|
| User-Defined Functions (UDFs) | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/feature-guides/udfs-in-pixeltable.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> | Object Detection Models | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/use-cases/object-detection-in-videos.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> |
|
|
63
54
|
| Incremental Prompt Engineering | <a target="_blank" href="https://colab.research.google.com/github/mistralai/cookbook/blob/main/third_party/Pixeltable/incremental_prompt_engineering_and_model_comparison.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Github"/> | Working with External Files | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/feature-guides/working-with-external-files.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> |
|
|
64
|
-
| Integrating with Label Studio | <a target="_blank" href="https://pixeltable.
|
|
55
|
+
| Integrating with Label Studio | <a target="_blank" href="https://docs.pixeltable.com/docs/cookbooks/vision/label-studio"> <img src="https://img.shields.io/badge/📚 Documentation-013056" alt="Visit our documentation"/></a> | Audio/Video Transcript Indexing | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/use-cases/audio-transcriptions.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> |
|
|
65
56
|
| Multimodal Application | <a target="_blank" href="https://huggingface.co/spaces/Pixeltable/Multimodal-Powerhouse"> <img src="https://img.shields.io/badge/🤗-Gradio App-FF7D04" alt="Visit our Hugging Face Space"/></a> | Document Indexing and RAG | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/use-cases/rag-demo.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> |
|
|
66
57
|
| Context-Aware Discord Bot | <a target="_blank" href="https://github.com/pixeltable/pixeltable/blob/main/docs/sample-apps/context-aware-discord-bot"> <img src="https://img.shields.io/badge/%F0%9F%92%AC-Discord Bot-%235865F2.svg" alt="Visit our documentation"/></a> | Image/Text Similarity Search | <a target="_blank" href="https://github.com/pixeltable/pixeltable/tree/main/docs/sample-apps/text-and-image-similarity-search-nextjs-fastapi"> <img src="https://img.shields.io/badge/🖥️-Next.js + FastAPI-black.svg" alt="Open In Colab"/> |
|
|
67
58
|
|
|
@@ -83,7 +74,7 @@ paths = [
|
|
|
83
74
|
v.insert({'video': prefix + p} for p in paths)
|
|
84
75
|
```
|
|
85
76
|
|
|
86
|
-
Learn how to [work with data in Pixeltable](https://pixeltable.
|
|
77
|
+
Learn how to [work with data in Pixeltable](https://docs.pixeltable.com/docs/datastore/tables-and-operations).
|
|
87
78
|
|
|
88
79
|
### Object detection in images using DETR model
|
|
89
80
|
|
|
@@ -116,7 +107,7 @@ t.select(animal = t.image,
|
|
|
116
107
|
```
|
|
117
108
|
|
|
118
109
|
Learn about computed columns and object detection:
|
|
119
|
-
[Comparing object detection models](https://pixeltable.
|
|
110
|
+
[Comparing object detection models](https://docs.pixeltable.com/docs/examples/use-cases#multimodal-processing).
|
|
120
111
|
|
|
121
112
|
### Extend Pixeltable's capabilities with user-defined functions
|
|
122
113
|
|
|
@@ -131,7 +122,7 @@ def draw_boxes(img: PIL.Image.Image, boxes: list[list[float]]) -> PIL.Image.Imag
|
|
|
131
122
|
```
|
|
132
123
|
|
|
133
124
|
Learn more about user-defined functions:
|
|
134
|
-
[UDFs in Pixeltable](https://pixeltable.
|
|
125
|
+
[UDFs in Pixeltable](https://docs.pixeltable.com/docs/datastore/custom-functions).
|
|
135
126
|
|
|
136
127
|
### Automate data operations with views, e.g., split documents into chunks
|
|
137
128
|
|
|
@@ -147,7 +138,7 @@ chunks_table = pxt.create_view(
|
|
|
147
138
|
```
|
|
148
139
|
|
|
149
140
|
Learn how to leverage views to build your
|
|
150
|
-
[RAG workflow](https://pixeltable.
|
|
141
|
+
[RAG workflow](https://docs.pixeltable.com/docs/cookbooks/chat/memory).
|
|
151
142
|
|
|
152
143
|
### Evaluate model performance
|
|
153
144
|
|
|
@@ -156,7 +147,7 @@ Learn how to leverage views to build your
|
|
|
156
147
|
frames_view.select(mean_ap(frames_view.eval_yolox_tiny), mean_ap(frames_view.eval_yolox_m)).show()
|
|
157
148
|
```
|
|
158
149
|
|
|
159
|
-
Learn how to leverage Pixeltable for [Model analytics](https://
|
|
150
|
+
Learn how to leverage Pixeltable for [Model analytics](https://github.com/pixeltable/pixeltable/blob/main/docs/notebooks/use-cases/object-detection-in-videos.ipynb).
|
|
160
151
|
|
|
161
152
|
### Working with inference services
|
|
162
153
|
|
|
@@ -193,7 +184,7 @@ chat_table.insert([
|
|
|
193
184
|
chat_table.select(chat_table.input, chat_table.response).head()
|
|
194
185
|
```
|
|
195
186
|
|
|
196
|
-
Learn how to interact with inference services such as [Together AI](https://
|
|
187
|
+
Learn how to interact with inference services such as [Together AI](https://github.com/pixeltable/pixeltable/blob/main/docs/notebooks/integrations/working-with-together.ipynb) in Pixeltable.
|
|
197
188
|
|
|
198
189
|
### Text and image similarity search on video frames with embedding indexes
|
|
199
190
|
|
|
@@ -224,7 +215,7 @@ sim = frames_view.frame.similarity(sample_text)
|
|
|
224
215
|
frames_view.order_by(sim, asc=False).limit(5).select(frames_view.frame, sim=sim).collect()
|
|
225
216
|
```
|
|
226
217
|
|
|
227
|
-
Learn how to work with [Embedding and Vector Indexes](https://docs.pixeltable.com/docs/embedding-
|
|
218
|
+
Learn how to work with [Embedding and Vector Indexes](https://docs.pixeltable.com/docs/datastore/embedding-index).
|
|
228
219
|
|
|
229
220
|
## 🔄 AI Stack Comparison
|
|
230
221
|
|
|
@@ -260,11 +251,6 @@ Learn how to work with [Embedding and Vector Indexes](https://docs.pixeltable.co
|
|
|
260
251
|
|
|
261
252
|
## ❓ FAQ
|
|
262
253
|
|
|
263
|
-
### What is Pixeltable?
|
|
264
|
-
|
|
265
|
-
Pixeltable unifies data storage, versioning, and indexing with orchestration and model versioning under a declarative
|
|
266
|
-
table interface, with transformations, model inference, and custom logic represented as computed columns.
|
|
267
|
-
|
|
268
254
|
### What problems does Pixeltable solve?
|
|
269
255
|
|
|
270
256
|
Today's solutions for AI app development require extensive custom coding and infrastructure plumbing.
|
|
@@ -302,7 +288,7 @@ dealing with the customary data plumbing.
|
|
|
302
288
|
infrastructure and orchestration.
|
|
303
289
|
|
|
304
290
|
> [!TIP]
|
|
305
|
-
> Check out the [Integrations](https://pixeltable.
|
|
291
|
+
> Check out the [Integrations](https://docs.pixeltable.com/docs/integrations/frameworks) section, and feel free to submit
|
|
306
292
|
> a request for additional ones.
|
|
307
293
|
|
|
308
294
|
## 🤝 Contributing to Pixeltable
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
# These version placeholders will be replaced during build.
|
|
2
|
-
__version__ = '0.3.
|
|
3
|
-
__version_tuple__ = (0, 3,
|
|
2
|
+
__version__ = '0.3.5'
|
|
3
|
+
__version_tuple__ = (0, 3, 5)
|
|
@@ -58,7 +58,7 @@ class Catalog:
|
|
|
58
58
|
if session.query(sql.func.count(schema.Dir.id)).scalar() > 0:
|
|
59
59
|
return
|
|
60
60
|
# create a top-level directory, so that every schema object has a directory
|
|
61
|
-
dir_md = schema.DirMd(name='')
|
|
61
|
+
dir_md = schema.DirMd(name='', user=None, additional_md={})
|
|
62
62
|
dir_record = schema.Dir(parent_id=None, md=dataclasses.asdict(dir_md))
|
|
63
63
|
session.add(dir_record)
|
|
64
64
|
session.flush()
|
|
@@ -142,6 +142,7 @@ class Catalog:
|
|
|
142
142
|
base_tbl_id = base_path.tbl_id()
|
|
143
143
|
is_snapshot = view_md is not None and view_md.is_snapshot
|
|
144
144
|
snapshot_only = is_snapshot and view_md.predicate is None and len(schema_version_md.columns) == 0
|
|
145
|
+
include_base_columns = view_md is None or view_md.include_base_columns
|
|
145
146
|
if snapshot_only:
|
|
146
147
|
# this is a pure snapshot, without a physical table backing it
|
|
147
148
|
view_path = base_path
|
|
@@ -158,7 +159,13 @@ class Catalog:
|
|
|
158
159
|
view_path = TableVersionPath(tbl_version, base=base_path)
|
|
159
160
|
|
|
160
161
|
tbl: Table = View(
|
|
161
|
-
tbl_record.id,
|
|
162
|
+
tbl_record.id,
|
|
163
|
+
tbl_record.dir_id,
|
|
164
|
+
tbl_md.name,
|
|
165
|
+
view_path,
|
|
166
|
+
base_tbl_id,
|
|
167
|
+
snapshot_only=snapshot_only,
|
|
168
|
+
include_base_columns=include_base_columns,
|
|
162
169
|
)
|
|
163
170
|
self.tbl_dependents[base_tbl_id].append(tbl)
|
|
164
171
|
|
|
@@ -72,7 +72,7 @@ class Column:
|
|
|
72
72
|
col_type is None
|
|
73
73
|
- when loaded from md store: ``computed_with`` is set and col_type is set
|
|
74
74
|
|
|
75
|
-
``stored`` (only valid for computed
|
|
75
|
+
``stored`` (only valid for computed columns):
|
|
76
76
|
- if True: the column is present in the stored table
|
|
77
77
|
- if False: the column is not present in the stored table and recomputed during a query
|
|
78
78
|
- if None: the system chooses for you (at present, this is always False, but this may change in the future)
|
|
@@ -32,7 +32,7 @@ class Dir(SchemaObject):
|
|
|
32
32
|
def _move(self, new_name: str, new_dir_id: UUID) -> None:
|
|
33
33
|
super()._move(new_name, new_dir_id)
|
|
34
34
|
with Env.get().engine.begin() as conn:
|
|
35
|
-
dir_md = schema.DirMd(name=new_name)
|
|
35
|
+
dir_md = schema.DirMd(name=new_name, user=None, additional_md={})
|
|
36
36
|
conn.execute(
|
|
37
37
|
sql.update(schema.Dir.__table__)
|
|
38
38
|
.values({schema.Dir.parent_id: self._dir_id, schema.Dir.md: dataclasses.asdict(dir_md)})
|
|
@@ -569,7 +569,7 @@ class Table(SchemaObject):
|
|
|
569
569
|
|
|
570
570
|
Args:
|
|
571
571
|
kwargs: Exactly one keyword argument of the form `col_name=expression`.
|
|
572
|
-
stored: Whether the column is materialized and stored or computed on demand.
|
|
572
|
+
stored: Whether the column is materialized and stored or computed on demand.
|
|
573
573
|
print_stats: If `True`, print execution metrics during evaluation.
|
|
574
574
|
on_error: Determines the behavior if an error occurs while evaluating the column expression for at least one
|
|
575
575
|
row.
|
|
@@ -59,6 +59,7 @@ class TableVersion:
|
|
|
59
59
|
schema_version: int
|
|
60
60
|
view_md: Optional[schema.ViewMd]
|
|
61
61
|
is_snapshot: bool
|
|
62
|
+
include_base_columns: bool
|
|
62
63
|
effective_version: Optional[int]
|
|
63
64
|
path: Optional[pxt.catalog.TableVersionPath]
|
|
64
65
|
base: Optional[TableVersion]
|
|
@@ -115,6 +116,7 @@ class TableVersion:
|
|
|
115
116
|
self.view_md = tbl_md.view_md # save this as-is, it's needed for _create_md()
|
|
116
117
|
is_view = tbl_md.view_md is not None
|
|
117
118
|
self.is_snapshot = (is_view and tbl_md.view_md.is_snapshot) or bool(is_snapshot)
|
|
119
|
+
self.include_base_columns = not is_view or tbl_md.view_md.include_base_columns
|
|
118
120
|
self.media_validation = MediaValidation[schema_version_md.media_validation.upper()]
|
|
119
121
|
# a mutable TableVersion doesn't have a static version
|
|
120
122
|
self.effective_version = self.version if self.is_snapshot else None
|
|
@@ -228,6 +230,7 @@ class TableVersion:
|
|
|
228
230
|
column_md = cls._create_column_md(cols)
|
|
229
231
|
table_md = schema.TableMd(
|
|
230
232
|
name=name,
|
|
233
|
+
user=None,
|
|
231
234
|
current_version=0,
|
|
232
235
|
current_schema_version=0,
|
|
233
236
|
next_col_id=len(cols),
|
|
@@ -237,6 +240,7 @@ class TableVersion:
|
|
|
237
240
|
index_md={},
|
|
238
241
|
external_stores=[],
|
|
239
242
|
view_md=view_md,
|
|
243
|
+
additional_md={},
|
|
240
244
|
)
|
|
241
245
|
# create a schema.Table here, we need it to call our c'tor;
|
|
242
246
|
# don't add it to the session yet, we might add index metadata
|
|
@@ -244,7 +248,7 @@ class TableVersion:
|
|
|
244
248
|
tbl_record = schema.Table(id=tbl_id, dir_id=dir_id, md=dataclasses.asdict(table_md))
|
|
245
249
|
|
|
246
250
|
# create schema.TableVersion
|
|
247
|
-
table_version_md = schema.TableVersionMd(created_at=timestamp, version=0, schema_version=0)
|
|
251
|
+
table_version_md = schema.TableVersionMd(created_at=timestamp, version=0, schema_version=0, additional_md={})
|
|
248
252
|
tbl_version_record = schema.TableVersion(
|
|
249
253
|
tbl_id=tbl_record.id, version=0, md=dataclasses.asdict(table_version_md)
|
|
250
254
|
)
|
|
@@ -266,6 +270,7 @@ class TableVersion:
|
|
|
266
270
|
num_retained_versions=num_retained_versions,
|
|
267
271
|
comment=comment,
|
|
268
272
|
media_validation=media_validation.name.lower(),
|
|
273
|
+
additional_md={},
|
|
269
274
|
)
|
|
270
275
|
schema_version_record = schema.TableSchemaVersion(
|
|
271
276
|
tbl_id=tbl_record.id, schema_version=0, md=dataclasses.asdict(schema_version_md)
|
|
@@ -1342,6 +1347,7 @@ class TableVersion:
|
|
|
1342
1347
|
def _create_tbl_md(self) -> schema.TableMd:
|
|
1343
1348
|
return schema.TableMd(
|
|
1344
1349
|
name=self.name,
|
|
1350
|
+
user=None,
|
|
1345
1351
|
current_version=self.version,
|
|
1346
1352
|
current_schema_version=self.schema_version,
|
|
1347
1353
|
next_col_id=self.next_col_id,
|
|
@@ -1351,10 +1357,13 @@ class TableVersion:
|
|
|
1351
1357
|
index_md=self.idx_md,
|
|
1352
1358
|
external_stores=self._create_stores_md(self.external_stores.values()),
|
|
1353
1359
|
view_md=self.view_md,
|
|
1360
|
+
additional_md={},
|
|
1354
1361
|
)
|
|
1355
1362
|
|
|
1356
1363
|
def _create_version_md(self, timestamp: float) -> schema.TableVersionMd:
|
|
1357
|
-
return schema.TableVersionMd(
|
|
1364
|
+
return schema.TableVersionMd(
|
|
1365
|
+
created_at=timestamp, version=self.version, schema_version=self.schema_version, additional_md={}
|
|
1366
|
+
)
|
|
1358
1367
|
|
|
1359
1368
|
def _create_schema_version_md(self, preceding_schema_version: int) -> schema.TableSchemaVersionMd:
|
|
1360
1369
|
column_md: dict[int, schema.SchemaColumn] = {}
|
|
@@ -1372,6 +1381,7 @@ class TableVersion:
|
|
|
1372
1381
|
num_retained_versions=self.num_retained_versions,
|
|
1373
1382
|
comment=self.comment,
|
|
1374
1383
|
media_validation=self.media_validation.name.lower(),
|
|
1384
|
+
additional_md={},
|
|
1375
1385
|
)
|
|
1376
1386
|
|
|
1377
1387
|
def as_dict(self) -> dict:
|
|
@@ -86,7 +86,7 @@ class TableVersionPath:
|
|
|
86
86
|
from pixeltable.exprs import ColumnRef
|
|
87
87
|
|
|
88
88
|
if col_name not in self.tbl_version.cols_by_name:
|
|
89
|
-
if self.base is None:
|
|
89
|
+
if self.base is None or not self.tbl_version.include_base_columns:
|
|
90
90
|
raise AttributeError(f'Column {col_name} unknown')
|
|
91
91
|
return self.base.get_column_ref(col_name)
|
|
92
92
|
col = self.tbl_version.cols_by_name[col_name]
|
|
@@ -95,7 +95,7 @@ class TableVersionPath:
|
|
|
95
95
|
def columns(self) -> list[Column]:
|
|
96
96
|
"""Return all user columns visible in this tbl version path, including columns from bases"""
|
|
97
97
|
result = list(self.tbl_version.cols_by_name.values())
|
|
98
|
-
if self.base is not None:
|
|
98
|
+
if self.base is not None and self.tbl_version.include_base_columns:
|
|
99
99
|
base_cols = self.base.columns()
|
|
100
100
|
# we only include base columns that don't conflict with one of our column names
|
|
101
101
|
result.extend(c for c in base_cols if c.name not in self.tbl_version.cols_by_name)
|