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.

Files changed (152) hide show
  1. {pixeltable-0.2.19 → pixeltable-0.2.21}/PKG-INFO +16 -7
  2. {pixeltable-0.2.19 → pixeltable-0.2.21}/README.md +14 -6
  3. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/__init__.py +7 -19
  4. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/__version__.py +2 -2
  5. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/__init__.py +7 -7
  6. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/globals.py +3 -0
  7. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/insertable_table.py +9 -7
  8. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/table.py +220 -143
  9. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/table_version.py +36 -18
  10. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/table_version_path.py +0 -8
  11. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/view.py +3 -3
  12. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/dataframe.py +9 -24
  13. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/env.py +107 -36
  14. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exceptions.py +7 -4
  15. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/__init__.py +1 -1
  16. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/aggregation_node.py +22 -15
  17. pixeltable-0.2.21/pixeltable/exec/component_iteration_node.py +100 -0
  18. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/data_row_batch.py +7 -7
  19. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/exec_node.py +35 -7
  20. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/expr_eval_node.py +2 -1
  21. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/in_memory_data_node.py +9 -9
  22. pixeltable-0.2.21/pixeltable/exec/sql_node.py +425 -0
  23. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/__init__.py +1 -0
  24. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/data_row.py +30 -19
  25. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/expr.py +15 -14
  26. pixeltable-0.2.21/pixeltable/exprs/expr_dict.py +55 -0
  27. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/expr_set.py +21 -15
  28. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/function_call.py +21 -8
  29. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/json_path.py +3 -6
  30. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/rowid_ref.py +2 -2
  31. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/sql_element_cache.py +5 -1
  32. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/ext/functions/whisperx.py +7 -2
  33. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/callable_function.py +2 -2
  34. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/function_registry.py +6 -7
  35. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/query_template_function.py +11 -12
  36. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/signature.py +17 -15
  37. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/udf.py +0 -4
  38. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/__init__.py +1 -1
  39. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/audio.py +4 -6
  40. pixeltable-0.2.21/pixeltable/functions/globals.py +146 -0
  41. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/huggingface.py +12 -14
  42. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/image.py +59 -45
  43. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/json.py +0 -1
  44. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/mistralai.py +2 -2
  45. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/openai.py +22 -25
  46. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/string.py +50 -50
  47. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/timestamp.py +20 -20
  48. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/together.py +26 -12
  49. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/video.py +11 -20
  50. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/whisper.py +2 -20
  51. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/globals.py +57 -56
  52. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/index/base.py +2 -2
  53. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/index/btree.py +7 -7
  54. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/index/embedding_index.py +8 -10
  55. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/io/external_store.py +11 -5
  56. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/io/globals.py +3 -1
  57. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/io/hf_datasets.py +4 -4
  58. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/io/label_studio.py +6 -6
  59. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/io/parquet.py +14 -13
  60. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/iterators/document.py +10 -8
  61. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/iterators/video.py +10 -1
  62. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/__init__.py +3 -2
  63. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_14.py +4 -2
  64. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_15.py +1 -1
  65. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_19.py +1 -0
  66. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_20.py +1 -1
  67. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/util.py +9 -8
  68. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/schema.py +32 -21
  69. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/plan.py +136 -154
  70. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/store.py +51 -36
  71. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/tool/create_test_db_dump.py +7 -7
  72. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/tool/doc_plugins/griffe.py +3 -34
  73. pixeltable-0.2.21/pixeltable/tool/mypy_plugin.py +32 -0
  74. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/type_system.py +243 -60
  75. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/arrow.py +10 -9
  76. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/coco.py +4 -4
  77. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/documents.py +1 -1
  78. pixeltable-0.2.21/pixeltable/utils/filecache.py +242 -0
  79. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/formatter.py +1 -1
  80. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/http_server.py +2 -5
  81. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/media_store.py +6 -6
  82. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/pytorch.py +10 -11
  83. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/sql.py +2 -1
  84. {pixeltable-0.2.19 → pixeltable-0.2.21}/pyproject.toml +4 -4
  85. pixeltable-0.2.19/pixeltable/exec/component_iteration_node.py +0 -79
  86. pixeltable-0.2.19/pixeltable/exec/sql_node.py +0 -296
  87. pixeltable-0.2.19/pixeltable/functions/globals.py +0 -102
  88. pixeltable-0.2.19/pixeltable/utils/filecache.py +0 -195
  89. pixeltable-0.2.19/pixeltable/utils/help.py +0 -11
  90. {pixeltable-0.2.19 → pixeltable-0.2.21}/LICENSE +0 -0
  91. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/catalog.py +0 -0
  92. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/column.py +0 -0
  93. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/dir.py +0 -0
  94. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/named_function.py +0 -0
  95. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/path.py +0 -0
  96. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/path_dict.py +0 -0
  97. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/catalog/schema_object.py +0 -0
  98. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/cache_prefetch_node.py +0 -0
  99. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/exec_context.py +0 -0
  100. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/media_validation_node.py +0 -0
  101. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exec/row_update_node.py +0 -0
  102. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/arithmetic_expr.py +0 -0
  103. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/array_slice.py +0 -0
  104. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/column_property_ref.py +0 -0
  105. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/column_ref.py +0 -0
  106. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/comparison.py +0 -0
  107. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/compound_predicate.py +0 -0
  108. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/globals.py +0 -0
  109. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/in_predicate.py +0 -0
  110. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/inline_expr.py +0 -0
  111. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/is_null.py +0 -0
  112. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/json_mapper.py +0 -0
  113. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/literal.py +0 -0
  114. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/method_ref.py +0 -0
  115. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/object_ref.py +0 -0
  116. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/row_builder.py +0 -0
  117. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/similarity_expr.py +0 -0
  118. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/type_cast.py +0 -0
  119. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/exprs/variable.py +0 -0
  120. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/ext/__init__.py +0 -0
  121. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/ext/functions/__init__.py +0 -0
  122. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/ext/functions/yolox.py +0 -0
  123. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/__init__.py +0 -0
  124. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/aggregate_function.py +0 -0
  125. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/expr_template_function.py +0 -0
  126. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/function.py +0 -0
  127. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/func/globals.py +0 -0
  128. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/anthropic.py +0 -0
  129. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/fireworks.py +0 -0
  130. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/util.py +0 -0
  131. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/functions/vision.py +0 -0
  132. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/index/__init__.py +0 -0
  133. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/io/__init__.py +0 -0
  134. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/io/pandas.py +0 -0
  135. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/iterators/__init__.py +0 -0
  136. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/iterators/base.py +0 -0
  137. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/iterators/string.py +0 -0
  138. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_10.py +0 -0
  139. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_12.py +0 -0
  140. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_13.py +0 -0
  141. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_16.py +0 -0
  142. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_17.py +0 -0
  143. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/converters/convert_18.py +0 -0
  144. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/metadata/notes.py +0 -0
  145. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/tool/create_test_video.py +0 -0
  146. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/tool/doc_plugins/mkdocstrings.py +0 -0
  147. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/tool/doc_plugins/templates/material/udf.html.jinja +0 -0
  148. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/tool/embed_udf.py +0 -0
  149. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/__init__.py +0 -0
  150. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/code.py +0 -0
  151. {pixeltable-0.2.19 → pixeltable-0.2.21}/pixeltable/utils/s3.py +0 -0
  152. {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.19
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
- [![License](https://img.shields.io/badge/License-Apache%202.0-darkblue.svg)](https://opensource.org/licenses/Apache-2.0)
42
- ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pixeltable?logo=python&logoColor=white)
43
- ![Platform Support](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-8A2BE2)
42
+ [![License](https://img.shields.io/badge/License-Apache%202.0-0530AD.svg)](https://opensource.org/licenses/Apache-2.0)
43
+ ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pixeltable?logo=python&logoColor=white&)
44
+ ![Platform Support](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-E5DDD4)
44
45
  <br>
45
46
  [![tests status](https://github.com/pixeltable/pixeltable/actions/workflows/pytest.yml/badge.svg)](https://github.com/pixeltable/pixeltable/actions/workflows/pytest.yml)
46
47
  [![tests status](https://github.com/pixeltable/pixeltable/actions/workflows/nightly.yml/badge.svg)](https://github.com/pixeltable/pixeltable/actions/workflows/nightly.yml)
47
- [![PyPI Package](https://img.shields.io/pypi/v/pixeltable?color=darkorange)](https://pypi.org/project/pixeltable/)
48
+ [![PyPI Package](https://img.shields.io/pypi/v/pixeltable?color=4D148C)](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.readme.io/recipes) | [Examples](https://github.com/pixeltable/pixeltable/tree/release/docs/release/tutorials)
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, transform, index, and iterate on data for their ML workflows. Data transformations, model inference, and custom logic are embedded as computed columns.
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
- [![License](https://img.shields.io/badge/License-Apache%202.0-darkblue.svg)](https://opensource.org/licenses/Apache-2.0)
6
- ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pixeltable?logo=python&logoColor=white)
7
- ![Platform Support](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-8A2BE2)
5
+ [![License](https://img.shields.io/badge/License-Apache%202.0-0530AD.svg)](https://opensource.org/licenses/Apache-2.0)
6
+ ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pixeltable?logo=python&logoColor=white&)
7
+ ![Platform Support](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-E5DDD4)
8
8
  <br>
9
9
  [![tests status](https://github.com/pixeltable/pixeltable/actions/workflows/pytest.yml/badge.svg)](https://github.com/pixeltable/pixeltable/actions/workflows/pytest.yml)
10
10
  [![tests status](https://github.com/pixeltable/pixeltable/actions/workflows/nightly.yml/badge.svg)](https://github.com/pixeltable/pixeltable/actions/workflows/nightly.yml)
11
- [![PyPI Package](https://img.shields.io/pypi/v/pixeltable?color=darkorange)](https://pypi.org/project/pixeltable/)
11
+ [![PyPI Package](https://img.shields.io/pypi/v/pixeltable?color=4D148C)](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.readme.io/recipes) | [Examples](https://github.com/pixeltable/pixeltable/tree/release/docs/release/tutorials)
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, transform, index, and iterate on data for their ML workflows. Data transformations, model inference, and custom logic are embedded as computed columns.
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, InsertableTable, View
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 Function, udf, Aggregator, uda, expr_udf
6
- from .globals import init, create_table, create_view, get_table, move, drop_table, list_tables, create_dir, drop_dir, \
7
- list_dirs, list_functions, configure_logging, array
8
- from .type_system import (
9
- ColumnType,
10
- StringType,
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.19"
3
- __version_tuple__ = (0, 2, 19)
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 .table import Table
4
+ from .globals import UpdateStatus, is_valid_identifier, is_valid_path
9
5
  from .insertable_table import InsertableTable
10
- from .view import View
6
+ from .named_function import NamedFunction
11
7
  from .path import Path
12
8
  from .path_dict import PathDict
13
- from .globals import is_valid_identifier, is_valid_path
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
- result = self._tbl_version.insert(rows, None, print_stats=print_stats, fail_on_exception=fail_on_exception)
105
+ status = self._tbl_version.insert(rows, None, print_stats=print_stats, fail_on_exception=fail_on_exception)
105
106
 
106
- if result.num_excs == 0:
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(result.cols_with_excs)} column{"" if len(result.cols_with_excs) == 1 else "s"}'
111
- cols_with_excs_str += f' ({", ".join(result.cols_with_excs)})'
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 {result.num_rows} row{"" if result.num_rows == 1 else "s"} '
114
- f'with {result.num_excs} error{"" if result.num_excs == 1 else "s"}{cols_with_excs_str}.'
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
- return result
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"""