pixeltable 0.3.10__tar.gz → 0.3.11__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 (182) hide show
  1. pixeltable-0.3.11/PKG-INFO +436 -0
  2. pixeltable-0.3.11/README.md +377 -0
  3. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/__init__.py +1 -1
  4. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/__version__.py +2 -2
  5. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/catalog/__init__.py +2 -1
  6. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/catalog/catalog.py +63 -36
  7. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/catalog/column.py +6 -4
  8. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/catalog/dir.py +5 -5
  9. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/catalog/globals.py +12 -14
  10. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/catalog/insertable_table.py +4 -7
  11. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/catalog/path.py +2 -2
  12. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/catalog/table.py +64 -56
  13. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/catalog/table_version.py +42 -40
  14. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/catalog/table_version_handle.py +3 -0
  15. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/catalog/table_version_path.py +1 -1
  16. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/catalog/view.py +8 -7
  17. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/dataframe.py +5 -3
  18. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/env.py +108 -42
  19. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exec/__init__.py +2 -0
  20. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exec/aggregation_node.py +6 -8
  21. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exec/cache_prefetch_node.py +4 -7
  22. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exec/component_iteration_node.py +1 -3
  23. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exec/data_row_batch.py +1 -2
  24. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exec/exec_context.py +1 -1
  25. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exec/exec_node.py +1 -2
  26. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exec/expr_eval/__init__.py +2 -0
  27. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exec/expr_eval/evaluators.py +137 -20
  28. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exec/expr_eval/expr_eval_node.py +43 -64
  29. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exec/expr_eval/globals.py +68 -7
  30. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exec/expr_eval/schedulers.py +25 -23
  31. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exec/in_memory_data_node.py +8 -6
  32. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exec/row_update_node.py +3 -4
  33. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exec/sql_node.py +16 -17
  34. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/__init__.py +1 -1
  35. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/column_property_ref.py +1 -1
  36. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/column_ref.py +3 -3
  37. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/compound_predicate.py +1 -1
  38. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/data_row.py +17 -1
  39. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/expr.py +12 -12
  40. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/function_call.py +34 -2
  41. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/json_mapper.py +95 -48
  42. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/json_path.py +3 -4
  43. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/method_ref.py +2 -2
  44. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/object_ref.py +2 -2
  45. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/row_builder.py +33 -6
  46. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/similarity_expr.py +1 -1
  47. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/sql_element_cache.py +1 -1
  48. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/string_op.py +2 -2
  49. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/ext/__init__.py +1 -1
  50. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/ext/functions/__init__.py +1 -1
  51. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/ext/functions/whisperx.py +1 -1
  52. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/ext/functions/yolox.py +1 -1
  53. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/func/aggregate_function.py +1 -1
  54. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/func/callable_function.py +2 -5
  55. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/func/expr_template_function.py +22 -2
  56. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/func/function.py +4 -5
  57. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/func/function_registry.py +1 -1
  58. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/func/signature.py +1 -1
  59. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/func/udf.py +2 -2
  60. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/__init__.py +1 -1
  61. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/anthropic.py +2 -2
  62. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/audio.py +1 -1
  63. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/deepseek.py +1 -1
  64. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/fireworks.py +1 -1
  65. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/globals.py +6 -6
  66. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/huggingface.py +1 -1
  67. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/image.py +1 -1
  68. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/json.py +1 -1
  69. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/llama_cpp.py +1 -1
  70. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/math.py +1 -1
  71. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/mistralai.py +1 -1
  72. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/ollama.py +1 -1
  73. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/openai.py +2 -2
  74. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/replicate.py +1 -1
  75. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/string.py +1 -1
  76. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/timestamp.py +1 -1
  77. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/together.py +1 -1
  78. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/util.py +1 -1
  79. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/video.py +2 -2
  80. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/vision.py +2 -2
  81. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/index/embedding_index.py +12 -1
  82. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/io/__init__.py +5 -3
  83. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/io/fiftyone.py +6 -7
  84. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/io/label_studio.py +21 -20
  85. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/io/pandas.py +6 -5
  86. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/iterators/__init__.py +1 -1
  87. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/__init__.py +5 -3
  88. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_24.py +3 -3
  89. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_25.py +1 -1
  90. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_29.py +1 -1
  91. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/store.py +2 -2
  92. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/type_system.py +19 -7
  93. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/utils/console_output.py +3 -2
  94. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/utils/coroutine.py +3 -3
  95. pixeltable-0.3.11/pixeltable/utils/dbms.py +66 -0
  96. pixeltable-0.3.11/pixeltable/utils/documents.py +96 -0
  97. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/utils/filecache.py +1 -1
  98. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/utils/http_server.py +3 -2
  99. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/utils/pytorch.py +1 -1
  100. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/utils/sql.py +1 -1
  101. {pixeltable-0.3.10 → pixeltable-0.3.11}/pyproject.toml +9 -2
  102. pixeltable-0.3.10/PKG-INFO +0 -382
  103. pixeltable-0.3.10/README.md +0 -323
  104. pixeltable-0.3.10/pixeltable/catalog/path_dict.py +0 -169
  105. pixeltable-0.3.10/pixeltable/utils/documents.py +0 -102
  106. {pixeltable-0.3.10 → pixeltable-0.3.11}/LICENSE +0 -0
  107. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/catalog/named_function.py +0 -0
  108. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/catalog/schema_object.py +0 -0
  109. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/config.py +0 -0
  110. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exceptions.py +0 -0
  111. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exec/expr_eval/row_buffer.py +0 -0
  112. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/arithmetic_expr.py +0 -0
  113. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/array_slice.py +0 -0
  114. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/comparison.py +0 -0
  115. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/expr_dict.py +0 -0
  116. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/expr_set.py +0 -0
  117. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/globals.py +0 -0
  118. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/in_predicate.py +0 -0
  119. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/inline_expr.py +0 -0
  120. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/is_null.py +0 -0
  121. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/literal.py +0 -0
  122. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/rowid_ref.py +0 -0
  123. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/type_cast.py +0 -0
  124. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/exprs/variable.py +0 -0
  125. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/func/__init__.py +0 -0
  126. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/func/globals.py +0 -0
  127. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/func/query_template_function.py +0 -0
  128. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/func/tools.py +0 -0
  129. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/gemini.py +0 -0
  130. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/functions/whisper.py +0 -0
  131. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/globals.py +0 -0
  132. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/index/__init__.py +0 -0
  133. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/index/base.py +0 -0
  134. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/index/btree.py +0 -0
  135. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/io/datarows.py +0 -0
  136. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/io/external_store.py +0 -0
  137. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/io/globals.py +0 -0
  138. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/io/hf_datasets.py +0 -0
  139. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/io/parquet.py +0 -0
  140. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/io/table_data_conduit.py +0 -0
  141. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/io/utils.py +0 -0
  142. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/iterators/audio.py +0 -0
  143. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/iterators/base.py +0 -0
  144. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/iterators/document.py +0 -0
  145. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/iterators/image.py +0 -0
  146. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/iterators/string.py +0 -0
  147. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/iterators/video.py +0 -0
  148. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_10.py +0 -0
  149. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_12.py +0 -0
  150. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_13.py +0 -0
  151. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_14.py +0 -0
  152. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_15.py +0 -0
  153. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_16.py +0 -0
  154. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_17.py +0 -0
  155. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_18.py +0 -0
  156. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_19.py +0 -0
  157. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_20.py +0 -0
  158. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_21.py +0 -0
  159. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_22.py +0 -0
  160. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_23.py +0 -0
  161. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_26.py +0 -0
  162. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_27.py +0 -0
  163. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_28.py +0 -0
  164. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/convert_30.py +0 -0
  165. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/converters/util.py +0 -0
  166. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/notes.py +0 -0
  167. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/metadata/schema.py +0 -0
  168. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/plan.py +0 -0
  169. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/py.typed +0 -0
  170. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/share/__init__.py +0 -0
  171. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/share/packager.py +0 -0
  172. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/share/publish.py +0 -0
  173. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/utils/__init__.py +0 -0
  174. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/utils/arrow.py +0 -0
  175. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/utils/coco.py +0 -0
  176. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/utils/code.py +0 -0
  177. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/utils/description_helper.py +0 -0
  178. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/utils/formatter.py +0 -0
  179. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/utils/iceberg.py +0 -0
  180. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/utils/media_store.py +0 -0
  181. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/utils/s3.py +0 -0
  182. {pixeltable-0.3.10 → pixeltable-0.3.11}/pixeltable/utils/transactional_directory.py +0 -0
@@ -0,0 +1,436 @@
1
+ Metadata-Version: 2.3
2
+ Name: pixeltable
3
+ Version: 0.3.11
4
+ Summary: AI Data Infrastructure: Declarative, Multimodal, and Incremental
5
+ License: Apache-2.0
6
+ Keywords: data-science,machine-learning,database,ai,computer-vision,chatbot,ml,artificial-intelligence,feature-engineering,multimodal,mlops,feature-store,vector-database,llm,genai
7
+ Author: Pixeltable, Inc.
8
+ Author-email: contact@pixeltable.com>
9
+ Requires-Python: >=3.9,<4.0
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Intended Audience :: Science/Research
12
+ Classifier: License :: OSI Approved :: Apache Software License
13
+ Classifier: Operating System :: MacOS
14
+ Classifier: Operating System :: Microsoft :: Windows
15
+ Classifier: Operating System :: POSIX :: Linux
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Database
22
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
23
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
+ Requires-Dist: av (>=10.0.0)
25
+ Requires-Dist: beautifulsoup4 (>=4.0.0)
26
+ Requires-Dist: cloudpickle (>=2.2.1)
27
+ Requires-Dist: ftfy (>=6.2.0)
28
+ Requires-Dist: httpcore (>=1.0.3)
29
+ Requires-Dist: httpx (>=0.27)
30
+ Requires-Dist: jinja2 (>=3.1.3)
31
+ Requires-Dist: jmespath (>=1.0.1)
32
+ Requires-Dist: jsonschema (>=4.1.0)
33
+ Requires-Dist: lxml (>=5.0)
34
+ Requires-Dist: more-itertools (>=10.2)
35
+ Requires-Dist: nest_asyncio (>=1.5)
36
+ Requires-Dist: numpy (>=1.25)
37
+ Requires-Dist: pandas (>=2.0,<3.0)
38
+ Requires-Dist: pgvector (>=0.2.1)
39
+ Requires-Dist: pillow (>=9.3.0)
40
+ Requires-Dist: pixeltable-pgserver (==0.3.1)
41
+ Requires-Dist: psutil (>=5.9.5)
42
+ Requires-Dist: psycopg[binary] (>=3.1.18)
43
+ Requires-Dist: puremagic (>=1.20)
44
+ Requires-Dist: pyarrow (>=13.0.0)
45
+ Requires-Dist: pydantic (>=2.7.4)
46
+ Requires-Dist: pyiceberg (>=0.6.0)
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)
52
+ Requires-Dist: toml (>=0.10)
53
+ Requires-Dist: tqdm (>=4.64)
54
+ Project-URL: Documentation, https://docs.pixeltable.com/
55
+ Project-URL: Homepage, https://pixeltable.com/
56
+ Project-URL: Repository, https://github.com/pixeltable/pixeltable
57
+ Description-Content-Type: text/markdown
58
+
59
+ <div align="center">
60
+ <img src="https://raw.githubusercontent.com/pixeltable/pixeltable/main/docs/resources/pixeltable-logo-large.png"
61
+ alt="Pixeltable Logo" width="50%" />
62
+ <br></br>
63
+
64
+ <h2>Declarative Data Infrastructure for Multimodal AI Apps</h2>
65
+
66
+ [![License](https://img.shields.io/badge/License-Apache%202.0-0530AD.svg)](https://opensource.org/licenses/Apache-2.0)
67
+ ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pixeltable?logo=python&logoColor=white&)
68
+ ![Platform Support](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-E5DDD4)
69
+ <br>
70
+ [![tests status](https://github.com/pixeltable/pixeltable/actions/workflows/pytest.yml/badge.svg)](https://github.com/pixeltable/pixeltable/actions/workflows/pytest.yml)
71
+ [![tests status](https://github.com/pixeltable/pixeltable/actions/workflows/nightly.yml/badge.svg)](https://github.com/pixeltable/pixeltable/actions/workflows/nightly.yml)
72
+ [![PyPI Package](https://img.shields.io/pypi/v/pixeltable?color=4D148C)](https://pypi.org/project/pixeltable/)
73
+ [![My Discord (1306431018890166272)](https://img.shields.io/badge/💬-Discord-%235865F2.svg)](https://discord.gg/QPyqFYx2UN)
74
+
75
+ [**Installation**](https://docs.pixeltable.com/docs/overview/installation) |
76
+ [**Quick Start**](https://docs.pixeltable.com/docs/overview/quick-start) |
77
+ [**Documentation**](https://docs.pixeltable.com/) |
78
+ [**API Reference**](https://pixeltable.github.io/pixeltable/) |
79
+ [**Examples**](https://docs.pixeltable.com/docs/examples/use-cases) |
80
+ [**Discord Community**](https://discord.gg/QPyqFYx2UN)
81
+
82
+ </div>
83
+
84
+ ---
85
+
86
+ Pixeltable is the only Python framework that provides incremental storage, transformation, indexing, and orchestration of your multimodal data.
87
+
88
+ ## 😩 Maintaining Production-Ready Multimodal AI Apps is Still Too Hard
89
+
90
+ Building robust AI applications, especially [multimodal](https://docs.pixeltable.com/docs/datastore/bringing-data) ones, requires stitching together numerous tools:
91
+ * ETL pipelines for data loading and transformation.
92
+ * Vector databases for semantic search.
93
+ * Feature stores for ML models.
94
+ * Orchestrators for scheduling.
95
+ * Model serving infrastructure for inference.
96
+ * Separate systems for parallelization, caching, versioning, and lineage tracking.
97
+
98
+ This complex "data plumbing" slows down development, increases costs, and makes applications brittle and hard to reproduce.
99
+
100
+ ## 💾 Installation
101
+
102
+ ```python
103
+ pip install pixeltable
104
+ ```
105
+
106
+ **Pixeltable is a database.** It stores metadata and computed results persistently, typically in a `.pixeltable` directory in your workspace. See [configuration](https://docs.pixeltable.com/docs/overview/configuration) options for your setup.
107
+
108
+ ## ✨ What is Pixeltable?
109
+
110
+ With Pixeltable, you define your *entire* data processing and AI workflow declaratively using **[computed columns](https://docs.pixeltable.com/docs/datastore/computed-columns)** on **[tables](https://docs.pixeltable.com/docs/datastore/tables-and-operations)**. Pixeltable's engine then automatically handles:
111
+
112
+ * **Data Ingestion & Storage:** References [files](https://docs.pixeltable.com/docs/datastore/bringing-data) (images, videos, audio, docs) in place, handles structured data.
113
+ * **Transformation & Processing:** Applies *any* Python function ([UDFs](https://docs.pixeltable.com/docs/datastore/custom-functions)) or built-in operations ([chunking, frame extraction](https://docs.pixeltable.com/docs/datastore/iterators)) automatically.
114
+ * **AI Model Integration:** Runs inference ([embeddings](https://docs.pixeltable.com/docs/datastore/embedding-index), [object detection](https://docs.pixeltable.com/docs/examples/vision/yolox), [LLMs](https://docs.pixeltable.com/docs/integrations/frameworks#cloud-llm-providers)) as part of the data pipeline.
115
+ * **Indexing & Retrieval:** Creates and manages vector indexes for fast [semantic search](https://docs.pixeltable.com/docs/datastore/embedding-index#phase-3%3A-query) alongside traditional filtering.
116
+ * **Incremental Computation:** Only [recomputes](https://docs.pixeltable.com/docs/overview/quick-start) what's necessary when data or code changes, saving time and cost.
117
+ * **Versioning & Lineage:** Automatically tracks data and schema changes for reproducibility.
118
+
119
+ **Focus on your application logic, not the infrastructure.**
120
+
121
+
122
+ ## 🚀 Key Features
123
+
124
+ * **[Unified Multimodal Interface:](https://docs.pixeltable.com/docs/datastore/tables-and-operations)** `pxt.Image`, `pxt.Video`, `pxt.Audio`, `pxt.Document`, etc. – manage diverse data consistently.
125
+ ```python
126
+ t = pxt.create_table(
127
+ 'media',
128
+ {
129
+ 'img': pxt.Image,
130
+ 'video': pxt.Video
131
+ }
132
+ )
133
+ ```
134
+
135
+ * **[Declarative Computed Columns:](https://docs.pixeltable.com/docs/datastore/computed-columns)** Define processing steps once; they run automatically on new/updated data.
136
+ ```python
137
+ t.add_computed_column(
138
+ classification=huggingface.vit_for_image_classification(
139
+ t.image
140
+ )
141
+ )
142
+ ```
143
+
144
+ * **[Built-in Vector Search:](https://docs.pixeltable.com/docs/datastore/embedding-index)** Add embedding indexes and perform similarity searches directly on tables/views.
145
+ ```python
146
+ t.add_embedding_index(
147
+ 'img',
148
+ embedding=clip.using(
149
+ model_id='openai/clip-vit-base-patch32'
150
+ )
151
+ )
152
+
153
+ sim = t.img.similarity("cat playing with yarn")
154
+ ```
155
+
156
+ * **[On-the-Fly Data Views:](https://docs.pixeltable.com/docs/datastore/views)** Create virtual tables using iterators for efficient processing without data duplication.
157
+ ```python
158
+ frames = pxt.create_view(
159
+ 'frames',
160
+ videos,
161
+ iterator=FrameIterator.create(
162
+ video=videos.video,
163
+ fps=1
164
+ )
165
+ )
166
+ ```
167
+
168
+ * **[Seamless AI Integration:](https://docs.pixeltable.com/docs/integrations/frameworks)** Built-in functions for OpenAI, Anthropic, Hugging Face, CLIP, YOLOX, and more.
169
+ ```python
170
+ t.add_computed_column(
171
+ response=openai.chat_completions(
172
+ messages=[{"role": "user", "content": t.prompt}]
173
+ )
174
+ )
175
+ ```
176
+
177
+ * **[Bring Your Own Code:](https://docs.pixeltable.com/docs/datastore/custom-functions)** Extend Pixeltable with simple Python User-Defined Functions.
178
+ ```python
179
+ @pxt.udf
180
+ def format_prompt(context: list, question: str) -> str:
181
+ return f"Context: {context}\nQuestion: {question}"
182
+ ```
183
+
184
+ * **[Agentic Workflows / Tool Calling:](https://docs.pixeltable.com/docs/examples/chat/tools)** Register `@pxt.udf` or `@pxt.query` functions as tools and orchestrate LLM-based tool use (incl. multimodal).
185
+ ```python
186
+ # Example tools: a UDF and a Query function for RAG
187
+ tools = pxt.tools(get_weather_udf, search_context_query)
188
+
189
+ # LLM decides which tool to call; Pixeltable executes it
190
+ t.add_computed_column(
191
+ tool_output=invoke_tools(tools, t.llm_tool_choice)
192
+ )
193
+ ```
194
+
195
+ * **[Persistent & Versioned:](https://docs.pixeltable.com/docs/datastore/tables-and-operations#data-operations)** All data, metadata, and computed results are automatically stored.
196
+ ```python
197
+ t.revert() # Revert to a previous version
198
+ stored_table = pxt.get_table('my_existing_table') # Retrieve persisted table
199
+ ```
200
+
201
+ * **[SQL-like Python Querying:](https://docs.pixeltable.com/docs/datastore/filtering-and-selecting)** Familiar syntax combined with powerful AI capabilities.
202
+ ```python
203
+ results = (
204
+ t.where(t.score > 0.8)
205
+ .order_by(t.timestamp)
206
+ .select(t.image, score=t.score)
207
+ .limit(10)
208
+ .collect()
209
+ )
210
+ ```
211
+
212
+ ## 💡 Key Examples
213
+
214
+ *(See the [Full Quick Start](https://docs.pixeltable.com/docs/overview/quick-start) or [Notebook Gallery](#-notebook-gallery) for more details)*
215
+
216
+ **1. Multimodal Data Store and Data Transformation (Computed Column):**
217
+ ```bash
218
+ pip install pixeltable
219
+ ```
220
+
221
+ ```python
222
+ import pixeltable as pxt
223
+
224
+ # Create a table
225
+ t = pxt.create_table(
226
+ 'films',
227
+ {'name': pxt.String, 'revenue': pxt.Float, 'budget': pxt.Float},
228
+ if_exists="replace"
229
+ )
230
+
231
+ t.insert([
232
+ {'name': 'Inside Out', 'revenue': 800.5, 'budget': 200.0},
233
+ {'name': 'Toy Story', 'revenue': 1073.4, 'budget': 200.0}
234
+ ])
235
+
236
+ # Add a computed column for profit - runs automatically!
237
+ t.add_computed_column(profit=(t.revenue - t.budget), if_exists="replace")
238
+
239
+ # Query the results
240
+ print(t.select(t.name, t.profit).collect())
241
+ # Output includes the automatically computed 'profit' column
242
+ ```
243
+
244
+ **2. Object Detection with [YOLOX](https://github.com/pixeltable/pixeltable-yolox):**
245
+
246
+ ```bash
247
+ pip install pixeltable pixeltable-yolox
248
+ ```
249
+
250
+ ```python
251
+ import PIL
252
+ import pixeltable as pxt
253
+ from yolox.models import Yolox
254
+ from yolox.data.datasets import COCO_CLASSES
255
+
256
+ t = pxt.create_table('image', {'image': pxt.Image}, if_exists='replace')
257
+
258
+ # Insert some images
259
+ prefix = 'https://upload.wikimedia.org/wikipedia/commons'
260
+ paths = [
261
+ '/1/15/Cat_August_2010-4.jpg',
262
+ '/e/e1/Example_of_a_Dog.jpg',
263
+ '/thumb/b/bf/Bird_Diversity_2013.png/300px-Bird_Diversity_2013.png'
264
+ ]
265
+ t.insert({'image': prefix + p} for p in paths)
266
+
267
+ @pxt.udf
268
+ def detect(image: PIL.Image.Image) -> list[str]:
269
+ model = Yolox.from_pretrained("yolox_s")
270
+ result = model([image])
271
+ coco_labels = [COCO_CLASSES[label] for label in result[0]["labels"]]
272
+ return coco_labels
273
+
274
+ t.add_computed_column(classification=detect(t.image))
275
+
276
+ print(t.select().collect())
277
+ ```
278
+
279
+ **3. Image Similarity Search (CLIP Embedding Index):**
280
+
281
+ ```bash
282
+ pip install pixeltable sentence-transformers
283
+ ```
284
+
285
+ ```python
286
+ import pixeltable as pxt
287
+ from pixeltable.functions.huggingface import clip
288
+
289
+ # Create image table and add sample images
290
+ images = pxt.create_table('my_images', {'img': pxt.Image}, if_exists='replace')
291
+ images.insert([
292
+ {'img': 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/68/Orange_tabby_cat_sitting_on_fallen_leaves-Hisashi-01A.jpg/1920px-Orange_tabby_cat_sitting_on_fallen_leaves-Hisashi-01A.jpg'},
293
+ {'img': 'https://upload.wikimedia.org/wikipedia/commons/d/d5/Retriever_in_water.jpg'}
294
+ ])
295
+
296
+ # Add CLIP embedding index for similarity search
297
+ images.add_embedding_index(
298
+ 'img',
299
+ embedding=clip.using(model_id='openai/clip-vit-base-patch32')
300
+ )
301
+
302
+ # Text-based image search
303
+ query_text = "a dog playing fetch"
304
+ sim_text = images.img.similarity(query_text)
305
+ results_text = images.order_by(sim_text, asc=False).limit(3).select(
306
+ image=images.img, similarity=sim_text
307
+ ).collect()
308
+ print("--- Text Query Results ---")
309
+ print(results_text)
310
+
311
+ # Image-based image search
312
+ query_image_url = 'https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Huskiesatrest.jpg/2880px-Huskiesatrest.jpg'
313
+ sim_image = images.img.similarity(query_image_url)
314
+ results_image = images.order_by(sim_image, asc=False).limit(3).select(
315
+ image=images.img, similarity=sim_image
316
+ ).collect()
317
+ print("--- Image URL Query Results ---")
318
+ print(results_image)
319
+ ```
320
+
321
+ **4. Multimodal/Incremental RAG Workflow (Document Chunking & LLM Call):**
322
+
323
+ ```bash
324
+ pip install pixeltable openai spacy sentence-transformers
325
+ ```
326
+
327
+ ```bash
328
+ python -m spacy download en_core_web_sm
329
+ ```
330
+
331
+ ```python
332
+ import pixeltable as pxt
333
+ import pixeltable.functions as pxtf
334
+ from pixeltable.functions import openai, huggingface
335
+ from pixeltable.iterators import DocumentSplitter
336
+
337
+ # Manage your tables by directories
338
+ directory = "my_docs"
339
+ pxt.drop_dir(directory, if_not_exists="ignore", force=True)
340
+ pxt.create_dir("my_docs")
341
+
342
+ # Create a document table and add a PDF
343
+ docs = pxt.create_table(f'{directory}.docs', {'doc': pxt.Document})
344
+ docs.insert([{'doc': 'https://github.com/pixeltable/pixeltable/raw/release/docs/resources/rag-demo/Jefferson-Amazon.pdf'}])
345
+
346
+ # Create chunks view with sentence-based splitting
347
+ chunks = pxt.create_view(
348
+ 'doc_chunks',
349
+ docs,
350
+ iterator=DocumentSplitter.create(document=docs.doc, separators='sentence')
351
+ )
352
+
353
+ # Explicitly create the embedding function object
354
+ embed_model = huggingface.sentence_transformer.using(model_id='all-MiniLM-L6-v2')
355
+ # Add embedding index using the function object
356
+ chunks.add_embedding_index('text', string_embed=embed_model)
357
+
358
+ # Define query function for retrieval - Returns a DataFrame expression
359
+ @pxt.query
360
+ def get_relevant_context(query_text: str, limit: int = 3):
361
+ sim = chunks.text.similarity(query_text)
362
+ # Return a list of strings (text of relevant chunks)
363
+ return chunks.order_by(sim, asc=False).limit(limit).select(chunks.text)
364
+
365
+ # Build a simple Q&A table
366
+ qa = pxt.create_table(f'{directory}.qa_system', {'prompt': pxt.String})
367
+
368
+ # 1. Add retrieved context (now a list of strings)
369
+ qa.add_computed_column(context=get_relevant_context(qa.prompt))
370
+
371
+ # 2. Format the prompt with context
372
+ qa.add_computed_column(
373
+ final_prompt=pxtf.string.format(
374
+ """
375
+ PASSAGES:
376
+ {0}
377
+
378
+ QUESTION:
379
+ {1}
380
+ """,
381
+ qa.context,
382
+ qa.prompt
383
+ )
384
+ )
385
+
386
+ # 4. Generate the answer using the well-formatted prompt column
387
+ qa.add_computed_column(
388
+ answer=openai.chat_completions(
389
+ model='gpt-4o-mini',
390
+ messages=[{
391
+ 'role': 'user',
392
+ 'content': qa.final_prompt
393
+ }]
394
+ ).choices[0].message.content
395
+ )
396
+
397
+ # Ask a question and get the answer
398
+ qa.insert([{'prompt': 'What can you tell me about Amazon?'}])
399
+ print("--- Final Answer ---")
400
+ print(qa.select(qa.answer).collect())
401
+ ```
402
+
403
+ ## 📚 Notebook Gallery
404
+
405
+ Explore Pixeltable's capabilities interactively:
406
+
407
+ | Topic | Notebook | Topic | Notebook |
408
+ |:----------|:-----------------|:-------------------------|:---------------------------------:|
409
+ | **Fundamentals** | | **Integrations** | |
410
+ | 10-Min Tour | <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> | OpenAI | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/integrations/working-with-openai.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> |
411
+ | Tables & Ops | <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> | Anthropic | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/integrations/working-with-anthropic.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> |
412
+ | 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> | Together AI | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/integrations/working-with-together.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> |
413
+ | Embedding Index | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/feature-guides/embedding-and-vector-indexes.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> | Label Studio | <a target="_blank" href="https://docs.pixeltable.com/docs/cookbooks/vision/label-studio"> <img src="https://img.shields.io/badge/📚%20Docs-013056" alt="Visit Docs"/></a> |
414
+ | 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> | Mistral | <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"/> |
415
+ | **Use Cases** | | **Sample Apps** | |
416
+ | RAG Demo | <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"/> | Multimodal Agent | <a target="_blank" href="https://huggingface.co/spaces/Pixeltable/Multimodal-Powerhouse"> <img src="https://img.shields.io/badge/🤗%20Demo-FF7D04" alt="HF Space"/></a> |
417
+ | Object Detection | <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> | Image/Text 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/🖥️%20App-black.svg" alt="GitHub App"/> |
418
+ | Audio Transcription | <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"/> | 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%20Bot-%235865F2.svg" alt="GitHub App"/></a> |
419
+
420
+ ## 🔮 Roadmap (2025)
421
+
422
+ ### Cloud Infrastructure and Deployment
423
+ We're working on a hosted Pixeltable service that will:
424
+
425
+ - Enable Multimodal Data Sharing of Pixeltable Tables and Views
426
+ - Provide a persistent cloud instance
427
+ - Turn Pixeltable workflows (Tables, Queries, UDFs) into API endpoints/[MCP Servers](https://github.com/pixeltable/pixeltable-mcp-server)
428
+
429
+ ## 🤝 Contributing
430
+
431
+ We love contributions! Whether it's reporting bugs, suggesting features, improving documentation, or submitting code changes, please check out our [Contributing Guide](CONTRIBUTING.md) and join the [Discussions](https://github.com/pixeltable/pixeltable/discussions) or our [Discord Server](https://discord.gg/QPyqFYx2UN).
432
+
433
+ ## 🏢 License
434
+
435
+ Pixeltable is licensed under the Apache 2.0 License.
436
+