pixeltable 0.2.26__py3-none-any.whl → 0.5.7__py3-none-any.whl

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.
Files changed (245) hide show
  1. pixeltable/__init__.py +83 -19
  2. pixeltable/_query.py +1444 -0
  3. pixeltable/_version.py +1 -0
  4. pixeltable/catalog/__init__.py +7 -4
  5. pixeltable/catalog/catalog.py +2394 -119
  6. pixeltable/catalog/column.py +225 -104
  7. pixeltable/catalog/dir.py +38 -9
  8. pixeltable/catalog/globals.py +53 -34
  9. pixeltable/catalog/insertable_table.py +265 -115
  10. pixeltable/catalog/path.py +80 -17
  11. pixeltable/catalog/schema_object.py +28 -43
  12. pixeltable/catalog/table.py +1270 -677
  13. pixeltable/catalog/table_metadata.py +103 -0
  14. pixeltable/catalog/table_version.py +1270 -751
  15. pixeltable/catalog/table_version_handle.py +109 -0
  16. pixeltable/catalog/table_version_path.py +137 -42
  17. pixeltable/catalog/tbl_ops.py +53 -0
  18. pixeltable/catalog/update_status.py +191 -0
  19. pixeltable/catalog/view.py +251 -134
  20. pixeltable/config.py +215 -0
  21. pixeltable/env.py +736 -285
  22. pixeltable/exceptions.py +26 -2
  23. pixeltable/exec/__init__.py +7 -2
  24. pixeltable/exec/aggregation_node.py +39 -21
  25. pixeltable/exec/cache_prefetch_node.py +87 -109
  26. pixeltable/exec/cell_materialization_node.py +268 -0
  27. pixeltable/exec/cell_reconstruction_node.py +168 -0
  28. pixeltable/exec/component_iteration_node.py +25 -28
  29. pixeltable/exec/data_row_batch.py +11 -46
  30. pixeltable/exec/exec_context.py +26 -11
  31. pixeltable/exec/exec_node.py +35 -27
  32. pixeltable/exec/expr_eval/__init__.py +3 -0
  33. pixeltable/exec/expr_eval/evaluators.py +365 -0
  34. pixeltable/exec/expr_eval/expr_eval_node.py +413 -0
  35. pixeltable/exec/expr_eval/globals.py +200 -0
  36. pixeltable/exec/expr_eval/row_buffer.py +74 -0
  37. pixeltable/exec/expr_eval/schedulers.py +413 -0
  38. pixeltable/exec/globals.py +35 -0
  39. pixeltable/exec/in_memory_data_node.py +35 -27
  40. pixeltable/exec/object_store_save_node.py +293 -0
  41. pixeltable/exec/row_update_node.py +44 -29
  42. pixeltable/exec/sql_node.py +414 -115
  43. pixeltable/exprs/__init__.py +8 -5
  44. pixeltable/exprs/arithmetic_expr.py +79 -45
  45. pixeltable/exprs/array_slice.py +5 -5
  46. pixeltable/exprs/column_property_ref.py +40 -26
  47. pixeltable/exprs/column_ref.py +254 -61
  48. pixeltable/exprs/comparison.py +14 -9
  49. pixeltable/exprs/compound_predicate.py +9 -10
  50. pixeltable/exprs/data_row.py +213 -72
  51. pixeltable/exprs/expr.py +270 -104
  52. pixeltable/exprs/expr_dict.py +6 -5
  53. pixeltable/exprs/expr_set.py +20 -11
  54. pixeltable/exprs/function_call.py +383 -284
  55. pixeltable/exprs/globals.py +18 -5
  56. pixeltable/exprs/in_predicate.py +7 -7
  57. pixeltable/exprs/inline_expr.py +37 -37
  58. pixeltable/exprs/is_null.py +8 -4
  59. pixeltable/exprs/json_mapper.py +120 -54
  60. pixeltable/exprs/json_path.py +90 -60
  61. pixeltable/exprs/literal.py +61 -16
  62. pixeltable/exprs/method_ref.py +7 -6
  63. pixeltable/exprs/object_ref.py +19 -8
  64. pixeltable/exprs/row_builder.py +238 -75
  65. pixeltable/exprs/rowid_ref.py +53 -15
  66. pixeltable/exprs/similarity_expr.py +65 -50
  67. pixeltable/exprs/sql_element_cache.py +5 -5
  68. pixeltable/exprs/string_op.py +107 -0
  69. pixeltable/exprs/type_cast.py +25 -13
  70. pixeltable/exprs/variable.py +2 -2
  71. pixeltable/func/__init__.py +9 -5
  72. pixeltable/func/aggregate_function.py +197 -92
  73. pixeltable/func/callable_function.py +119 -35
  74. pixeltable/func/expr_template_function.py +101 -48
  75. pixeltable/func/function.py +375 -62
  76. pixeltable/func/function_registry.py +20 -19
  77. pixeltable/func/globals.py +6 -5
  78. pixeltable/func/mcp.py +74 -0
  79. pixeltable/func/query_template_function.py +151 -35
  80. pixeltable/func/signature.py +178 -49
  81. pixeltable/func/tools.py +164 -0
  82. pixeltable/func/udf.py +176 -53
  83. pixeltable/functions/__init__.py +44 -4
  84. pixeltable/functions/anthropic.py +226 -47
  85. pixeltable/functions/audio.py +148 -11
  86. pixeltable/functions/bedrock.py +137 -0
  87. pixeltable/functions/date.py +188 -0
  88. pixeltable/functions/deepseek.py +113 -0
  89. pixeltable/functions/document.py +81 -0
  90. pixeltable/functions/fal.py +76 -0
  91. pixeltable/functions/fireworks.py +72 -20
  92. pixeltable/functions/gemini.py +249 -0
  93. pixeltable/functions/globals.py +208 -53
  94. pixeltable/functions/groq.py +108 -0
  95. pixeltable/functions/huggingface.py +1088 -95
  96. pixeltable/functions/image.py +155 -84
  97. pixeltable/functions/json.py +8 -11
  98. pixeltable/functions/llama_cpp.py +31 -19
  99. pixeltable/functions/math.py +169 -0
  100. pixeltable/functions/mistralai.py +50 -75
  101. pixeltable/functions/net.py +70 -0
  102. pixeltable/functions/ollama.py +29 -36
  103. pixeltable/functions/openai.py +548 -160
  104. pixeltable/functions/openrouter.py +143 -0
  105. pixeltable/functions/replicate.py +15 -14
  106. pixeltable/functions/reve.py +250 -0
  107. pixeltable/functions/string.py +310 -85
  108. pixeltable/functions/timestamp.py +37 -19
  109. pixeltable/functions/together.py +77 -120
  110. pixeltable/functions/twelvelabs.py +188 -0
  111. pixeltable/functions/util.py +7 -2
  112. pixeltable/functions/uuid.py +30 -0
  113. pixeltable/functions/video.py +1528 -117
  114. pixeltable/functions/vision.py +26 -26
  115. pixeltable/functions/voyageai.py +289 -0
  116. pixeltable/functions/whisper.py +19 -10
  117. pixeltable/functions/whisperx.py +179 -0
  118. pixeltable/functions/yolox.py +112 -0
  119. pixeltable/globals.py +716 -236
  120. pixeltable/index/__init__.py +3 -1
  121. pixeltable/index/base.py +17 -21
  122. pixeltable/index/btree.py +32 -22
  123. pixeltable/index/embedding_index.py +155 -92
  124. pixeltable/io/__init__.py +12 -7
  125. pixeltable/io/datarows.py +140 -0
  126. pixeltable/io/external_store.py +83 -125
  127. pixeltable/io/fiftyone.py +24 -33
  128. pixeltable/io/globals.py +47 -182
  129. pixeltable/io/hf_datasets.py +96 -127
  130. pixeltable/io/label_studio.py +171 -156
  131. pixeltable/io/lancedb.py +3 -0
  132. pixeltable/io/pandas.py +136 -115
  133. pixeltable/io/parquet.py +40 -153
  134. pixeltable/io/table_data_conduit.py +702 -0
  135. pixeltable/io/utils.py +100 -0
  136. pixeltable/iterators/__init__.py +8 -4
  137. pixeltable/iterators/audio.py +207 -0
  138. pixeltable/iterators/base.py +9 -3
  139. pixeltable/iterators/document.py +144 -87
  140. pixeltable/iterators/image.py +17 -38
  141. pixeltable/iterators/string.py +15 -12
  142. pixeltable/iterators/video.py +523 -127
  143. pixeltable/metadata/__init__.py +33 -8
  144. pixeltable/metadata/converters/convert_10.py +2 -3
  145. pixeltable/metadata/converters/convert_13.py +2 -2
  146. pixeltable/metadata/converters/convert_15.py +15 -11
  147. pixeltable/metadata/converters/convert_16.py +4 -5
  148. pixeltable/metadata/converters/convert_17.py +4 -5
  149. pixeltable/metadata/converters/convert_18.py +4 -6
  150. pixeltable/metadata/converters/convert_19.py +6 -9
  151. pixeltable/metadata/converters/convert_20.py +3 -6
  152. pixeltable/metadata/converters/convert_21.py +6 -8
  153. pixeltable/metadata/converters/convert_22.py +3 -2
  154. pixeltable/metadata/converters/convert_23.py +33 -0
  155. pixeltable/metadata/converters/convert_24.py +55 -0
  156. pixeltable/metadata/converters/convert_25.py +19 -0
  157. pixeltable/metadata/converters/convert_26.py +23 -0
  158. pixeltable/metadata/converters/convert_27.py +29 -0
  159. pixeltable/metadata/converters/convert_28.py +13 -0
  160. pixeltable/metadata/converters/convert_29.py +110 -0
  161. pixeltable/metadata/converters/convert_30.py +63 -0
  162. pixeltable/metadata/converters/convert_31.py +11 -0
  163. pixeltable/metadata/converters/convert_32.py +15 -0
  164. pixeltable/metadata/converters/convert_33.py +17 -0
  165. pixeltable/metadata/converters/convert_34.py +21 -0
  166. pixeltable/metadata/converters/convert_35.py +9 -0
  167. pixeltable/metadata/converters/convert_36.py +38 -0
  168. pixeltable/metadata/converters/convert_37.py +15 -0
  169. pixeltable/metadata/converters/convert_38.py +39 -0
  170. pixeltable/metadata/converters/convert_39.py +124 -0
  171. pixeltable/metadata/converters/convert_40.py +73 -0
  172. pixeltable/metadata/converters/convert_41.py +12 -0
  173. pixeltable/metadata/converters/convert_42.py +9 -0
  174. pixeltable/metadata/converters/convert_43.py +44 -0
  175. pixeltable/metadata/converters/util.py +44 -18
  176. pixeltable/metadata/notes.py +21 -0
  177. pixeltable/metadata/schema.py +185 -42
  178. pixeltable/metadata/utils.py +74 -0
  179. pixeltable/mypy/__init__.py +3 -0
  180. pixeltable/mypy/mypy_plugin.py +123 -0
  181. pixeltable/plan.py +616 -225
  182. pixeltable/share/__init__.py +3 -0
  183. pixeltable/share/packager.py +797 -0
  184. pixeltable/share/protocol/__init__.py +33 -0
  185. pixeltable/share/protocol/common.py +165 -0
  186. pixeltable/share/protocol/operation_types.py +33 -0
  187. pixeltable/share/protocol/replica.py +119 -0
  188. pixeltable/share/publish.py +349 -0
  189. pixeltable/store.py +398 -232
  190. pixeltable/type_system.py +730 -267
  191. pixeltable/utils/__init__.py +40 -0
  192. pixeltable/utils/arrow.py +201 -29
  193. pixeltable/utils/av.py +298 -0
  194. pixeltable/utils/azure_store.py +346 -0
  195. pixeltable/utils/coco.py +26 -27
  196. pixeltable/utils/code.py +4 -4
  197. pixeltable/utils/console_output.py +46 -0
  198. pixeltable/utils/coroutine.py +24 -0
  199. pixeltable/utils/dbms.py +92 -0
  200. pixeltable/utils/description_helper.py +11 -12
  201. pixeltable/utils/documents.py +60 -61
  202. pixeltable/utils/exception_handler.py +36 -0
  203. pixeltable/utils/filecache.py +38 -22
  204. pixeltable/utils/formatter.py +88 -51
  205. pixeltable/utils/gcs_store.py +295 -0
  206. pixeltable/utils/http.py +133 -0
  207. pixeltable/utils/http_server.py +14 -13
  208. pixeltable/utils/iceberg.py +13 -0
  209. pixeltable/utils/image.py +17 -0
  210. pixeltable/utils/lancedb.py +90 -0
  211. pixeltable/utils/local_store.py +322 -0
  212. pixeltable/utils/misc.py +5 -0
  213. pixeltable/utils/object_stores.py +573 -0
  214. pixeltable/utils/pydantic.py +60 -0
  215. pixeltable/utils/pytorch.py +20 -20
  216. pixeltable/utils/s3_store.py +527 -0
  217. pixeltable/utils/sql.py +32 -5
  218. pixeltable/utils/system.py +30 -0
  219. pixeltable/utils/transactional_directory.py +4 -3
  220. pixeltable-0.5.7.dist-info/METADATA +579 -0
  221. pixeltable-0.5.7.dist-info/RECORD +227 -0
  222. {pixeltable-0.2.26.dist-info → pixeltable-0.5.7.dist-info}/WHEEL +1 -1
  223. pixeltable-0.5.7.dist-info/entry_points.txt +2 -0
  224. pixeltable/__version__.py +0 -3
  225. pixeltable/catalog/named_function.py +0 -36
  226. pixeltable/catalog/path_dict.py +0 -141
  227. pixeltable/dataframe.py +0 -894
  228. pixeltable/exec/expr_eval_node.py +0 -232
  229. pixeltable/ext/__init__.py +0 -14
  230. pixeltable/ext/functions/__init__.py +0 -8
  231. pixeltable/ext/functions/whisperx.py +0 -77
  232. pixeltable/ext/functions/yolox.py +0 -157
  233. pixeltable/tool/create_test_db_dump.py +0 -311
  234. pixeltable/tool/create_test_video.py +0 -81
  235. pixeltable/tool/doc_plugins/griffe.py +0 -50
  236. pixeltable/tool/doc_plugins/mkdocstrings.py +0 -6
  237. pixeltable/tool/doc_plugins/templates/material/udf.html.jinja +0 -135
  238. pixeltable/tool/embed_udf.py +0 -9
  239. pixeltable/tool/mypy_plugin.py +0 -55
  240. pixeltable/utils/media_store.py +0 -76
  241. pixeltable/utils/s3.py +0 -16
  242. pixeltable-0.2.26.dist-info/METADATA +0 -400
  243. pixeltable-0.2.26.dist-info/RECORD +0 -156
  244. pixeltable-0.2.26.dist-info/entry_points.txt +0 -3
  245. {pixeltable-0.2.26.dist-info → pixeltable-0.5.7.dist-info/licenses}/LICENSE +0 -0
@@ -1,76 +0,0 @@
1
- import glob
2
- import os
3
- import re
4
- import shutil
5
- import uuid
6
- from collections import defaultdict
7
- from pathlib import Path
8
- from typing import Optional
9
- from uuid import UUID
10
-
11
- from pixeltable.env import Env
12
-
13
-
14
- class MediaStore:
15
- """
16
- Utilities to manage media files stored in Env.media_dir
17
-
18
- Media file names are a composite of: table id, column id, version, uuid:
19
- the table id/column id/version are redundant but useful for identifying all files for a table
20
- or all files created for a particular version of a table
21
- """
22
- pattern = re.compile(r'([0-9a-fA-F]+)_(\d+)_(\d+)_([0-9a-fA-F]+)') # tbl_id, col_id, version, uuid
23
-
24
- @classmethod
25
- def prepare_media_path(cls, tbl_id: UUID, col_id: int, version: int, ext: Optional[str] = None) -> Path:
26
- """
27
- Construct a new, unique Path name for a persisted media file, and create the parent directory
28
- for the new Path if it does not already exist. The Path will reside in
29
- the environment's media_dir.
30
- """
31
- id_hex = uuid.uuid4().hex
32
- parent = Env.get().media_dir / tbl_id.hex / id_hex[0:2] / id_hex[0:4]
33
- parent.mkdir(parents=True, exist_ok=True)
34
- return parent / f'{tbl_id.hex}_{col_id}_{version}_{id_hex}{ext or ""}'
35
-
36
- @classmethod
37
- def delete(cls, tbl_id: UUID, version: Optional[int] = None) -> None:
38
- """Delete all files belonging to tbl_id. If version is not None, delete
39
- only those files belonging to the specified version."""
40
- assert tbl_id is not None
41
- if version is None:
42
- # Remove the entire folder for this table id.
43
- path = Env.get().media_dir / tbl_id.hex
44
- if path.exists():
45
- shutil.rmtree(path)
46
- else:
47
- # Remove only the elements for the specified version.
48
- paths = glob.glob(str(Env.get().media_dir / tbl_id.hex) + f'/**/{tbl_id.hex}_*_{version}_*', recursive=True)
49
- for p in paths:
50
- os.remove(p)
51
-
52
- @classmethod
53
- def count(cls, tbl_id: UUID) -> int:
54
- """
55
- Return number of files for given tbl_id.
56
- """
57
- paths = glob.glob(str(Env.get().media_dir / tbl_id.hex) + f'/**/{tbl_id.hex}_*', recursive=True)
58
- return len(paths)
59
-
60
- @classmethod
61
- def stats(cls) -> list[tuple[UUID, int, int, int]]:
62
- paths = glob.glob(str(Env.get().media_dir) + "/**", recursive=True)
63
- # key: (tbl_id, col_id), value: (num_files, size)
64
- d: dict[tuple[UUID, int], list[int]] = defaultdict(lambda: [0, 0])
65
- for p in paths:
66
- if not os.path.isdir(p):
67
- matched = re.match(cls.pattern, Path(p).name)
68
- assert matched is not None
69
- tbl_id, col_id = UUID(hex=matched[1]), int(matched[2])
70
- file_info = os.stat(p)
71
- t = d[(tbl_id, col_id)]
72
- t[0] += 1
73
- t[1] += file_info.st_size
74
- result = [(tbl_id, col_id, num_files, size) for (tbl_id, col_id), (num_files, size) in d.items()]
75
- result.sort(key=lambda e: e[3], reverse=True)
76
- return result
pixeltable/utils/s3.py DELETED
@@ -1,16 +0,0 @@
1
- from typing import Any
2
-
3
-
4
- def get_client(**kwargs: Any) -> Any:
5
- import boto3
6
- import botocore
7
- try:
8
- boto3.Session().get_credentials().get_frozen_credentials()
9
- config = botocore.config.Config(**kwargs)
10
- return boto3.client('s3', config=config) # credentials are available
11
- except AttributeError:
12
- # No credentials available, use unsigned mode
13
- config_args = kwargs.copy()
14
- config_args['signature_version'] = botocore.UNSIGNED
15
- config = botocore.config.Config(**config_args)
16
- return boto3.client('s3', config=config)
@@ -1,400 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: pixeltable
3
- Version: 0.2.26
4
- Summary: AI Data Infrastructure: Declarative, Multimodal, and Incremental
5
- Home-page: https://pixeltable.com/
6
- License: Apache-2.0
7
- Keywords: data-science,machine-learning,database,ai,computer-vision,chatbot,ml,artificial-intelligence,feature-engineering,multimodal,mlops,feature-store,vector-database,llm,genai
8
- Author: Pixeltable, Inc.
9
- Author-email: contact@pixeltable.com
10
- Requires-Python: >=3.9,<4.0
11
- Classifier: Intended Audience :: Developers
12
- Classifier: Intended Audience :: Science/Research
13
- Classifier: License :: OSI Approved :: Apache Software License
14
- Classifier: Operating System :: MacOS
15
- Classifier: Operating System :: Microsoft :: Windows
16
- Classifier: Operating System :: POSIX :: Linux
17
- Classifier: Programming Language :: Python :: 3
18
- Classifier: Programming Language :: Python :: 3.9
19
- Classifier: Programming Language :: Python :: 3.10
20
- Classifier: Programming Language :: Python :: 3.11
21
- Classifier: Programming Language :: Python :: 3.12
22
- Classifier: Programming Language :: Python :: 3.13
23
- Classifier: Topic :: Database
24
- Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
25
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
- Requires-Dist: av (>=10.0.0)
27
- Requires-Dist: beautifulsoup4 (>=4.0.0,<5.0.0)
28
- Requires-Dist: cloudpickle (>=2.2.1,<3.0.0)
29
- Requires-Dist: ftfy (>=6.2.0,<7.0.0)
30
- Requires-Dist: jinja2 (>=3.1.3,<4.0.0)
31
- Requires-Dist: jmespath (>=1.0.1,<2.0.0)
32
- Requires-Dist: lxml (>=5.0)
33
- Requires-Dist: more-itertools (>=10.2,<11.0)
34
- Requires-Dist: numpy (>=1.25,<2.0)
35
- Requires-Dist: pandas (>=2.0,<3.0)
36
- Requires-Dist: pgvector (>=0.2.1,<0.3.0)
37
- Requires-Dist: pillow (>=9.3.0)
38
- Requires-Dist: pixeltable-pgserver (==0.2.8)
39
- Requires-Dist: psutil (>=5.9.5,<6.0.0)
40
- Requires-Dist: psycopg[binary] (>=3.1.18)
41
- Requires-Dist: puremagic (>=1.20)
42
- Requires-Dist: pymupdf (>=1.24.1,<2.0.0)
43
- Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
44
- Requires-Dist: requests (>=2.31.0,<3.0.0)
45
- Requires-Dist: sqlalchemy (>=2.0.23,<3.0.0)
46
- Requires-Dist: tenacity (>=8.2,<9.0)
47
- Requires-Dist: toml (>=0.10)
48
- Requires-Dist: tqdm (>=4.64)
49
- Project-URL: Documentation, https://docs.pixeltable.com/
50
- Project-URL: Repository, https://github.com/pixeltable/pixeltable
51
- Description-Content-Type: text/markdown
52
-
53
- <div align="center">
54
- <img src="https://raw.githubusercontent.com/pixeltable/pixeltable/main/docs/resources/pixeltable-logo-large.png"
55
- alt="Pixeltable" width="50%" />
56
- <br></br>
57
-
58
- <h2>AI Data Infrastructure — Declarative, Multimodal, and Incremental</h2>
59
-
60
- [![License](https://img.shields.io/badge/License-Apache%202.0-0530AD.svg)](https://opensource.org/licenses/Apache-2.0)
61
- ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pixeltable?logo=python&logoColor=white&)
62
- ![Platform Support](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-E5DDD4)
63
- <br>
64
- [![tests status](https://github.com/pixeltable/pixeltable/actions/workflows/pytest.yml/badge.svg)](https://github.com/pixeltable/pixeltable/actions/workflows/pytest.yml)
65
- [![tests status](https://github.com/pixeltable/pixeltable/actions/workflows/nightly.yml/badge.svg)](https://github.com/pixeltable/pixeltable/actions/workflows/nightly.yml)
66
- [![PyPI Package](https://img.shields.io/pypi/v/pixeltable?color=4D148C)](https://pypi.org/project/pixeltable/)
67
- [![My Discord (1306431018890166272)](https://img.shields.io/badge/💬-Discord-%235865F2.svg)](https://discord.gg/QPyqFYx2UN)
68
- <a target="_blank" href="https://huggingface.co/Pixeltable">
69
- <img src="https://img.shields.io/badge/🤗-HF Space-FF7D04" alt="Visit our Hugging Face space"/>
70
- </a>
71
-
72
- [Installation](https://docs.pixeltable.com/docs/installation) |
73
- [Documentation](https://pixeltable.readme.io/) |
74
- [API Reference](https://pixeltable.github.io/pixeltable/) |
75
- [Code Samples](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#-code-samples) |
76
- [Computer Vision](https://docs.pixeltable.com/docs/object-detection-in-videos) |
77
- [LLM](https://docs.pixeltable.com/docs/document-indexing-and-rag)
78
- </div>
79
-
80
- Pixeltable is a Python library providing a declarative interface for multimodal data (text, images, audio, video).
81
- It features built-in versioning, lineage tracking, and incremental updates, enabling users to **store**, **transform**,
82
- **index**, and **iterate** on data for their ML workflows.
83
-
84
- Data transformations, model inference, and custom logic are embedded as **computed columns**.
85
-
86
- - **Load/Query all data types**: Interact with
87
- [video data](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#import-media-data-into-pixeltable-videos-images-audio)
88
- at the [frame level](https://github.com/pixeltable/pixeltable?tab=readme-ov-file#text-and-image-similarity-search-on-video-frames-with-embedding-indexes)
89
- 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)
90
- - **Incremental updates for data transformation**: Maintain an
91
- [embedding index](https://docs.pixeltable.com/docs/embedding-vector-indexes) colocated with your data
92
- - **Lazy evaluation and cache management**: Eliminates the need for
93
- [manual frame extraction](https://docs.pixeltable.com/docs/object-detection-in-videos)
94
- - **Integrates with any Python libraries**: Use
95
- [built-in and custom functions (UDFs)](https://docs.pixeltable.com/docs/user-defined-functions-udfs)
96
- without complex pipelines
97
- - **Data format agnostic and extensibility**: Access tables as Parquet files,
98
- [PyTorch datasets](https://pixeltable.github.io/pixeltable/api/data-frame/#pixeltable.DataFrame.to_pytorch_dataset),
99
- or [COCO annotations](https://pixeltable.github.io/pixeltable/api/table/#pixeltable.Table.to_coco_dataset)
100
-
101
- ## 💾 Installation
102
-
103
- ```python
104
- pip install pixeltable
105
- ```
106
-
107
- **Pixeltable is persistent. Unlike in-memory Python libraries such as Pandas, Pixeltable is a database.**
108
-
109
- ## 💡 Getting Started
110
-
111
- Learn how to create tables, populate them with data, and enhance them with built-in or user-defined transformations.
112
-
113
- | Topic | Notebook | Topic | Notebook |
114
- |:----------|:-----------------|:-------------------------|:---------------------------------:|
115
- | 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> |
116
- | 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> |
117
- | 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> |
118
- | Integrating with Label Studio | <a target="_blank" href="https://pixeltable.readme.io/docs/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"/> |
119
- | 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"/> |
120
- | 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"/> |
121
-
122
- ## 🧱 Code Samples
123
-
124
- ### Import media data into Pixeltable (videos, images, audio...)
125
-
126
- ```python
127
- import pixeltable as pxt
128
-
129
- v = pxt.create_table('external_data.videos', {'video': pxt.Video})
130
-
131
- prefix = 's3://multimedia-commons/'
132
- paths = [
133
- 'data/videos/mp4/ffe/ffb/ffeffbef41bbc269810b2a1a888de.mp4',
134
- 'data/videos/mp4/ffe/feb/ffefebb41485539f964760e6115fbc44.mp4',
135
- 'data/videos/mp4/ffe/f73/ffef7384d698b5f70d411c696247169.mp4'
136
- ]
137
- v.insert({'video': prefix + p} for p in paths)
138
- ```
139
-
140
- Learn how to [work with data in Pixeltable](https://pixeltable.readme.io/docs/working-with-external-files).
141
-
142
- ### Object detection in images using DETR model
143
-
144
- ```python
145
- import pixeltable as pxt
146
- from pixeltable.functions import huggingface
147
-
148
- # Create a table to store data persistently
149
- t = pxt.create_table('image', {'image': pxt.Image})
150
-
151
- # Insert some images
152
- prefix = 'https://upload.wikimedia.org/wikipedia/commons'
153
- paths = [
154
- '/1/15/Cat_August_2010-4.jpg',
155
- '/e/e1/Example_of_a_Dog.jpg',
156
- '/thumb/b/bf/Bird_Diversity_2013.png/300px-Bird_Diversity_2013.png'
157
- ]
158
- t.insert({'image': prefix + p} for p in paths)
159
-
160
- # Add a computed column for image classification
161
- t.add_computed_column(classification=huggingface.detr_for_object_detection(
162
- t.image,
163
- model_id='facebook/detr-resnet-50'
164
- ))
165
-
166
- # Retrieve the rows where cats have been identified
167
- t.select(animal = t.image,
168
- classification = t.classification.label_text[0]) \
169
- .where(t.classification.label_text[0]=='cat').head()
170
- ```
171
-
172
- Learn about computed columns and object detection:
173
- [Comparing object detection models](https://pixeltable.readme.io/docs/object-detection-in-videos).
174
-
175
- ### Extend Pixeltable's capabilities with user-defined functions
176
-
177
- ```python
178
- @pxt.udf
179
- def draw_boxes(img: PIL.Image.Image, boxes: list[list[float]]) -> PIL.Image.Image:
180
- result = img.copy() # Create a copy of `img`
181
- d = PIL.ImageDraw.Draw(result)
182
- for box in boxes:
183
- d.rectangle(box, width=3) # Draw bounding box rectangles on the copied image
184
- return result
185
- ```
186
-
187
- Learn more about user-defined functions:
188
- [UDFs in Pixeltable](https://pixeltable.readme.io/docs/user-defined-functions-udfs).
189
-
190
- ### Automate data operations with views, e.g., split documents into chunks
191
-
192
- ```python
193
- # In this example, the view is defined by iteration over the chunks of a DocumentSplitter
194
- chunks_table = pxt.create_view(
195
- 'rag_demo.chunks',
196
- documents_table,
197
- iterator=DocumentSplitter.create(
198
- document=documents_table.document,
199
- separators='token_limit', limit=300)
200
- )
201
- ```
202
-
203
- Learn how to leverage views to build your
204
- [RAG workflow](https://pixeltable.readme.io/docs/document-indexing-and-rag).
205
-
206
- ### Evaluate model performance
207
-
208
- ```python
209
- # The computation of the mAP metric can become a query over the evaluation output
210
- frames_view.select(mean_ap(frames_view.eval_yolox_tiny), mean_ap(frames_view.eval_yolox_m)).show()
211
- ```
212
-
213
- Learn how to leverage Pixeltable for [Model analytics](https://pixeltable.readme.io/docs/object-detection-in-videos).
214
-
215
- ### Working with inference services
216
-
217
- ```python
218
- chat_table = pxt.create_table('together_demo.chat', {'input': pxt.String})
219
-
220
- # The chat-completions API expects JSON-formatted input:
221
- messages = [{'role': 'user', 'content': chat_table.input}]
222
-
223
- # This example shows how additional parameters from the Together API can be used in Pixeltable
224
- chat_table.add_computed_column(
225
- output=chat_completions(
226
- messages=messages,
227
- model='mistralai/Mixtral-8x7B-Instruct-v0.1',
228
- max_tokens=300,
229
- stop=['\n'],
230
- temperature=0.7,
231
- top_p=0.9,
232
- top_k=40,
233
- repetition_penalty=1.1,
234
- logprobs=1,
235
- echo=True
236
- )
237
- )
238
- chat_table.add_computed_column(
239
- response=chat_table.output.choices[0].message.content
240
- )
241
-
242
- # Start a conversation
243
- chat_table.insert([
244
- {'input': 'How many species of felids have been classified?'},
245
- {'input': 'Can you make me a coffee?'}
246
- ])
247
- chat_table.select(chat_table.input, chat_table.response).head()
248
- ```
249
-
250
- Learn how to interact with inference services such as [Together AI](https://pixeltable.readme.io/docs/together-ai) in Pixeltable.
251
-
252
- ### Text and image similarity search on video frames with embedding indexes
253
-
254
- ```python
255
- import pixeltable as pxt
256
- from pixeltable.functions.huggingface import clip_image, clip_text
257
- from pixeltable.iterators import FrameIterator
258
- import PIL.Image
259
-
260
- video_table = pxt.create_table('videos', {'video': pxt.Video})
261
-
262
- video_table.insert([{'video': '/video.mp4'}])
263
-
264
- frames_view = pxt.create_view(
265
- 'frames', video_table, iterator=FrameIterator.create(video=video_table.video))
266
-
267
- @pxt.expr_udf
268
- def embed_image(img: PIL.Image.Image):
269
- return clip_image(img, model_id='openai/clip-vit-base-patch32')
270
-
271
- @pxt.expr_udf
272
- def str_embed(s: str):
273
- return clip_text(s, model_id='openai/clip-vit-base-patch32')
274
-
275
- # Create an index on the 'frame' column that allows text and image search
276
- frames_view.add_embedding_index('frame', string_embed=str_embed, image_embed=embed_image)
277
-
278
- # Now we will retrieve images based on a sample image
279
- sample_image = '/image.jpeg'
280
- sim = frames_view.frame.similarity(sample_image)
281
- frames_view.order_by(sim, asc=False).limit(5).select(frames_view.frame, sim=sim).collect()
282
-
283
- # Now we will retrieve images based on a string
284
- sample_text = 'red truck'
285
- sim = frames_view.frame.similarity(sample_text)
286
- frames_view.order_by(sim, asc=False).limit(5).select(frames_view.frame, sim=sim).collect()
287
- ```
288
-
289
- Learn how to work with [Embedding and Vector Indexes](https://docs.pixeltable.com/docs/embedding-vector-indexes).
290
-
291
- ## 🔄 AI Stack Comparison
292
-
293
- ### 🎯 Computer Vision Workflows
294
-
295
- | Requirement | Traditional | Pixeltable |
296
- |-------------|---------------------|------------|
297
- | Frame Extraction | ffmpeg + custom code | Automatic via FrameIterator |
298
- | Object Detection | Multiple scripts + caching | Single computed column |
299
- | Video Indexing | Custom pipelines + Vector DB | Native similarity search |
300
- | Annotation Management | Separate tools + custom code | Label Studio integration |
301
- | Model Evaluation | Custom metrics pipeline | Built-in mAP computation |
302
-
303
- ### 🤖 LLM Workflows
304
-
305
- | Requirement | Traditional | Pixeltable |
306
- |-------------|---------------------|------------|
307
- | Document Chunking | Tool + custom code | Native DocumentSplitter |
308
- | Embedding Generation | Separate pipeline + caching | Computed columns |
309
- | Vector Search | External vector DB | Built-in vector indexing |
310
- | Prompt Management | Custom tracking solution | Version-controlled columns |
311
- | Chain Management | Tool + custom code | Computed column DAGs |
312
-
313
- ### 🎨 Multimodal Workflows
314
-
315
- | Requirement | Traditional | Pixeltable |
316
- |-------------|---------------------|------------|
317
- | Data Types | Multiple storage systems | Unified table interface |
318
- | Cross-Modal Search | Complex integration | Native similarity support |
319
- | Pipeline Orchestration | Multiple tools (Airflow, etc.) | Single declarative interface |
320
- | Asset Management | Custom tracking system | Automatic lineage |
321
- | Quality Control | Multiple validation tools | Computed validation columns |
322
-
323
- ## ❓ FAQ
324
-
325
- ### What is Pixeltable?
326
-
327
- Pixeltable unifies data storage, versioning, and indexing with orchestration and model versioning under a declarative
328
- table interface, with transformations, model inference, and custom logic represented as computed columns.
329
-
330
- ### What problems does Pixeltable solve?
331
-
332
- Today's solutions for AI app development require extensive custom coding and infrastructure plumbing.
333
- Tracking lineage and versions between and across data transformations, models, and deployments is cumbersome.
334
- Pixeltable lets ML Engineers and Data Scientists focus on exploration, modeling, and app development without
335
- dealing with the customary data plumbing.
336
-
337
- ### What does Pixeltable provide me with? Pixeltable provides:
338
-
339
- - Data storage and versioning
340
- - Combined Data and Model Lineage
341
- - Indexing (e.g. embedding vectors) and Data Retrieval
342
- - Orchestration of multimodal workloads
343
- - Incremental updates
344
- - Code is automatically production-ready
345
-
346
- ### Why should you use Pixeltable?
347
-
348
- - **It gives you transparency and reproducibility**
349
- - All generated data is automatically recorded and versioned
350
- - You will never need to re-run a workload because you lost track of the input data
351
- - **It saves you money**
352
- - All data changes are automatically incremental
353
- - You never need to re-run pipelines from scratch because you’re adding data
354
- - **It integrates with any existing Python code or libraries**
355
- - Bring your ever-changing code and workloads
356
- - You choose the models, tools, and AI practices (e.g., your embedding model for a vector index);
357
- Pixeltable orchestrates the data
358
-
359
- ### What is Pixeltable not providing?
360
-
361
- - Pixeltable is not a low-code, prescriptive AI solution. We empower you to use the best frameworks and techniques for
362
- your specific needs.
363
- - We do not aim to replace your existing AI toolkit, but rather enhance it by streamlining the underlying data
364
- infrastructure and orchestration.
365
-
366
- > [!TIP]
367
- > Check out the [Integrations](https://pixeltable.readme.io/docs/working-with-openai) section, and feel free to submit
368
- > a request for additional ones.
369
-
370
- ## 🤝 Contributing to Pixeltable
371
-
372
- We're excited to welcome contributions from the community! Here's how you can get involved:
373
-
374
- ### 🐛 Report Issues
375
-
376
- - Found a bug? [Open an issue](https://github.com/pixeltable/pixeltable/issues)
377
- - Include steps to reproduce and environment details
378
-
379
- ### 💡 Submit Changes
380
-
381
- - Fork the repository
382
- - Create a feature branch
383
- - Submit a [pull request](https://github.com/pixeltable/pixeltable/pulls)
384
- - See our [Contributing Guide](CONTRIBUTING.md) for detailed instructions
385
-
386
- ### 💬 Join the Discussion
387
-
388
- - Have questions? Start a [Discussion](https://github.com/pixeltable/pixeltable/discussions)
389
- - Share your Pixeltable projects and use cases
390
- - Help others in the community
391
-
392
- ### 📝 Improve Documentation
393
-
394
- - Suggest examples and tutorials
395
- - Propose improvements
396
-
397
- ## 🏢 License
398
-
399
- This library is licensed under the Apache 2.0 License.
400
-
@@ -1,156 +0,0 @@
1
- pixeltable/__init__.py,sha256=gv2jvZ7H5tEjLear10E7hSH9jF5Mw6iSeryvRp88bOE,1391
2
- pixeltable/__version__.py,sha256=5OkFhhUIXyKPz2LjEv1DUzoaDvZXzsOKyF_UesfvD_U,114
3
- pixeltable/catalog/__init__.py,sha256=Ar6_F_6C7tkznIlCPBHVHDop5YssBDjKQr2NPQ21QCI,484
4
- pixeltable/catalog/catalog.py,sha256=tyDyI5wQw7vV6_FChrp9qgGCRClcjiSdW3eygYT0p9s,7849
5
- pixeltable/catalog/column.py,sha256=ezeKoGl6aBTzSZBihDA6vdETcvyCguAD4OsmrxWs73A,9595
6
- pixeltable/catalog/dir.py,sha256=fG_BQM-fLuABpTstMVH-9dvZPx7kqi3sgTQgKveVXJI,922
7
- pixeltable/catalog/globals.py,sha256=2P9cEfgnYQ19MFS4OsbnA8ZQkWLZPqJmmknDYWCXjWw,2415
8
- pixeltable/catalog/insertable_table.py,sha256=hOsdYhkhtRcDOrRkweIGFUfjweWF3fLUErkUTlGYoSU,7172
9
- pixeltable/catalog/named_function.py,sha256=W8vikP_3jMJ9pQQsksO2EfQAlaVxuQHBlo65M4924dc,1150
10
- pixeltable/catalog/path.py,sha256=QgccEi_QOfaKt8YsR2zLtd_z7z7QQkU_1kprJFi2SPQ,1677
11
- pixeltable/catalog/path_dict.py,sha256=4b9_Ax7Q8tkmoCYPaKNedpQkU17pE0oGDd2XB53eNZA,5979
12
- pixeltable/catalog/schema_object.py,sha256=qhpeeUPOYT5doDbsyUNBcPm5QzAQPCAsikqh1PQ6d1k,2226
13
- pixeltable/catalog/table.py,sha256=RtPvteovF-YE5AuhDjJnHuYMtVleOD0KgN4Yw_LGQk8,54551
14
- pixeltable/catalog/table_version.py,sha256=W4yrvn-mF63CQ8cQGmjbjYTCf1xYuV6k6rI__ubJOIc,57898
15
- pixeltable/catalog/table_version_path.py,sha256=CczGbcz5ESq663arreri_p4chMZHozgG6k3y-ajkJN4,5787
16
- pixeltable/catalog/view.py,sha256=mJbaVE63GaBDy7EcQkQ2q5NKlrHlGyENkRyQVzU-ak8,10854
17
- pixeltable/dataframe.py,sha256=RnRpOWLOqKNHGK2cO-Zbbc63yLUqrX7eSCYW11K4n7A,41320
18
- pixeltable/env.py,sha256=oIFeLJVDQuQgW8REAoNkY45BF2o02NxtysgAlJNEBc8,30520
19
- pixeltable/exceptions.py,sha256=NuFY2WtkQpLfLHT_J70kOw9Tr0kEDkkgo-u7As4Gaq4,410
20
- pixeltable/exec/__init__.py,sha256=bWbIA7U7y1hC40VOSv_p9doaMuOB0i3r1O2UFNw0VEs,494
21
- pixeltable/exec/aggregation_node.py,sha256=0LdoPp_CR_UbcS60XkDw66SqlrQnw6Dy6KDWqi4PJ6k,4005
22
- pixeltable/exec/cache_prefetch_node.py,sha256=hrJA5PxLSmFRuZdZO4Nc-vy6_PSb9YO4rnJc6MSTPHE,12017
23
- pixeltable/exec/component_iteration_node.py,sha256=ABuXGbDRQWLGuaBnfK7bvOxCrz81vMMiAvXHHI8SX4c,4930
24
- pixeltable/exec/data_row_batch.py,sha256=qPN0GtBGt72Jnap-UN53VlUPOpYEvqJhp1nuTeJ_8Co,2925
25
- pixeltable/exec/exec_context.py,sha256=-FbfYLcGOL7mviru5dE1A7x4YxLbdKoXBHN3OSbqbcg,1084
26
- pixeltable/exec/exec_node.py,sha256=3t_Ri_FQfc-dV91YGSq17Av3vPJth5mHC-LAVc-1Whc,3222
27
- pixeltable/exec/expr_eval_node.py,sha256=nEMnVTikQyTa3C9xfe6tuWLpQceM_7XJqfMPB_oI0wU,11890
28
- pixeltable/exec/in_memory_data_node.py,sha256=uK3puLZDzUSJUJwGwkTMYoPqNIvE67jtQodhE2sCz2M,3452
29
- pixeltable/exec/row_update_node.py,sha256=b8yuKtkmI2Q6U-7svKbkjdM3Z85ddZoJgJgUa17j-YE,2773
30
- pixeltable/exec/sql_node.py,sha256=aHLMua4-1M1uAsr0rrW2Y4Uv4OYwKyvYjJEmhtwpc-E,19529
31
- pixeltable/exprs/__init__.py,sha256=zx5OTxfUpFs_U36CAO-81v6RCX49wqRw3eHaLfytvkE,1044
32
- pixeltable/exprs/arithmetic_expr.py,sha256=I_OESFmUHlMSDmMy699-2JnFb7KbRjvh1GF06u8rBQ8,6322
33
- pixeltable/exprs/array_slice.py,sha256=eSqtQRxvweW_CwTRgkDD189i-BmTJ48dsW3znRPDebg,2180
34
- pixeltable/exprs/column_property_ref.py,sha256=ycHqZ7_LTFz_gag_53T5KRN6RfZckpw83DvvtxmcynM,3788
35
- pixeltable/exprs/column_ref.py,sha256=Z2YAiZ0nMv_ecbw91qTc9VN6DB2hZj-_RNkogZcu4ng,10784
36
- pixeltable/exprs/comparison.py,sha256=w1FuhnGsJRoCLYX3ztIHZDywf8nZeT2tKKwRjIQa6Lc,5101
37
- pixeltable/exprs/compound_predicate.py,sha256=6N_zN4A_hKGLordNY0si-8KHeFWG1UtyeiTHcs69IrM,3846
38
- pixeltable/exprs/data_row.py,sha256=rLtKxlst9mK6684A5y-nsjBcalyKEcKAWcYCtNpK10w,9852
39
- pixeltable/exprs/expr.py,sha256=uEyM9cMCkUM0PXIhWh0KhLYkRnEf2ysE3rQQTeDbHP0,30427
40
- pixeltable/exprs/expr_dict.py,sha256=xkvo_iVPOLMq3WkBZQ2FOoXqYoebuV6XGlidPJxdOkY,1588
41
- pixeltable/exprs/expr_set.py,sha256=GeUQXadzJbAqQOGdsO6Z5hPAp0A03YUr2hyIvfZDYEE,2576
42
- pixeltable/exprs/function_call.py,sha256=YojOWiveyZ3kS8zDQs1uwu95w5--Su5TK1vCFZL_PpQ,21416
43
- pixeltable/exprs/globals.py,sha256=5pwn5vdi-EEpYBpPty658YV45myY7W0iFIfTH7QIzak,2032
44
- pixeltable/exprs/in_predicate.py,sha256=VxSn9TA_3UDHTC6rqQ12No5HbZO7SuE4DglpwAoI58s,3783
45
- pixeltable/exprs/inline_expr.py,sha256=NrEDOl7cDen9KrR10SRvGu6rRxg_ob8A0Vrdu18dkPI,7107
46
- pixeltable/exprs/is_null.py,sha256=rnusy1j33o48Z-qjguj09G7AmsBHFJI5SWQXOAjgKQw,1092
47
- pixeltable/exprs/json_mapper.py,sha256=yhefrgvy76czfyTER_oRXnfxOVQb42Q4Us1KkXhSsLM,4545
48
- pixeltable/exprs/json_path.py,sha256=UTf3VUcyEmEBJs6yU4kONGcZ8fy1o6mIe9MlntnUd6M,6811
49
- pixeltable/exprs/literal.py,sha256=TTKb0gw6qck9D61SwVDuBrLrBrGwEhkCB-m0ILFpWFk,3764
50
- pixeltable/exprs/method_ref.py,sha256=3O_uFMP6wWGiwJWri8on-47EVl-QD3AiAc7hXJMADxs,2615
51
- pixeltable/exprs/object_ref.py,sha256=GVg6uxZnKwFVTC0kouJq-wMFP-gUPb_ld_syHrsGMdE,1283
52
- pixeltable/exprs/row_builder.py,sha256=7f-h4y8xv0ktkk6GYqGrMJvLSwkVYtMPHsBBIskmQLw,18435
53
- pixeltable/exprs/rowid_ref.py,sha256=iNBZ0wIhBAGkGCrNP9UQ2FeK8OajVX-eI4dtDA_bfHU,4401
54
- pixeltable/exprs/similarity_expr.py,sha256=WGTYZlmSN5E8kNZnY4Y7pSETHo9TkdnSTlCWOemI-kw,4088
55
- pixeltable/exprs/sql_element_cache.py,sha256=8i9ZslKWKTd1lUN7JvwRtQ-PFD1QMi5LBYdwcGA2-p0,1364
56
- pixeltable/exprs/type_cast.py,sha256=DzVVpMo3msAJm42SAGOV4P0ECyM6LEao3zdfmob4MQo,1862
57
- pixeltable/exprs/variable.py,sha256=3ZV3HzqULk05LKGG1p1T_xIlBfhqHIK4KJSCgoCDDSY,1488
58
- pixeltable/ext/__init__.py,sha256=iO0J_Jfnv38F5y40sDAW54gpXjIyZgOGgoWQJAwjQec,423
59
- pixeltable/ext/functions/__init__.py,sha256=hIjPEKC5E5uJOXlQqUyhP9yn9ZqWOCJAlj0kXWDlhlE,159
60
- pixeltable/ext/functions/whisperx.py,sha256=jojjNhazcYiAh1scwUl-erhIDRr4kOTkcLrjy0xcp6g,2325
61
- pixeltable/ext/functions/yolox.py,sha256=k-pQTelv4Tea3AXvDB7Kc7YCIa1uexjVGqxETP0B_hc,5351
62
- pixeltable/func/__init__.py,sha256=WjftUGyNkd6bF_qSxqZ5Gd7Elf8oExb3dUlpydhdFTo,407
63
- pixeltable/func/aggregate_function.py,sha256=LM6DMldmaUJNlQgEqPFQIKVmwjl3IpBxS4Y61G8-zG0,9477
64
- pixeltable/func/callable_function.py,sha256=PO5Mn5WL2cd7y5LcKr_K0AaYHf2-1NfuXP2IPOfsiVs,4933
65
- pixeltable/func/expr_template_function.py,sha256=CWG833LbR6kMFQshNQ3dlXlZ3uyC0kZ5SAOe5OsVY0Q,4104
66
- pixeltable/func/function.py,sha256=BkY2esrFeRsa5sGZ2InJihV5MTxFoZbEJ8c3pV-mN1w,8622
67
- pixeltable/func/function_registry.py,sha256=fBXe7NKyk8_JzZz6fsS0LF-WHTdMnmIP_XzrICuj9fA,12328
68
- pixeltable/func/globals.py,sha256=sEwn6lGgHMp6VQORb_P5qRd_-Q2_bUSqvqM9-XPN_ec,1483
69
- pixeltable/func/query_template_function.py,sha256=pGqwtWiPsEmo7phVoJJODiuD1Sh0gZoW4BpKnZV9cRE,3537
70
- pixeltable/func/signature.py,sha256=MzOHayuf2S3EWIl4IRtdNWnaKj5tphnw1z7P6xNU6Xg,8691
71
- pixeltable/func/udf.py,sha256=_883xbGujeIhYOz-lWH5SvLn22F5JVpP6O_MRvpU4hU,7362
72
- pixeltable/functions/__init__.py,sha256=EtR9M3ewYpmtHeshNULqZVBd87bNeKSFAdpOuWCMl6o,389
73
- pixeltable/functions/anthropic.py,sha256=P1E5o4-8QP1LTIUsWVgo_wMJ4WOnxtXUUXuFWUagChU,3032
74
- pixeltable/functions/audio.py,sha256=7213nTnqKJ6vM9kalaoJ283OwX5SGEJN10vDhaRNZ6E,644
75
- pixeltable/functions/fireworks.py,sha256=qwFC_eIaDs-glxyJ_IVXaNGkpgPzeRsQ_SdpzueBxq0,2605
76
- pixeltable/functions/globals.py,sha256=pCFX2a_N87SwG9GxyPjSOC3TVMowMB6XIHSWKfFOuGE,3917
77
- pixeltable/functions/huggingface.py,sha256=s5KmOfi9-TOYyrL1Wv-voKP7ykkUN7LlLAA_uo01UQc,21210
78
- pixeltable/functions/image.py,sha256=3Qm4ybAT_o4YUl3bzhEXy8dKOwgZ7RCUV-ky-dbL_jc,13836
79
- pixeltable/functions/json.py,sha256=ehCnBA5WiIl-crV9PFVgmxrsWsiO8FpRs9LDwcSpLa4,879
80
- pixeltable/functions/llama_cpp.py,sha256=1awALuAXVpQH64l7vQlM8gvxLDix4c1-6DV3nG5RHu4,3881
81
- pixeltable/functions/mistralai.py,sha256=GpxtT-a8ltx1kQC8XTJRflxkh-17VhzzFTkxqIUsba8,5494
82
- pixeltable/functions/ollama.py,sha256=J_o3juzgejZ1kNjzz2lNVFjO29vxuRcQDL33NGEgsns,4330
83
- pixeltable/functions/openai.py,sha256=e1-NZP5v0h9Axlo1oxUYzWfVRxKZVhOrKnqwcy0jH88,15583
84
- pixeltable/functions/replicate.py,sha256=j8ZedScOMInmHWmriQSUOviw6tp8gQr-W6n21PNNL2g,2188
85
- pixeltable/functions/string.py,sha256=VqzhVildxTt_XblW89Kl5Zd6MVOU71eaX2LTMY5jkUg,20366
86
- pixeltable/functions/timestamp.py,sha256=Q5l2iEscrS3ZfKAa4R940bSM_x4FsmF-PF2i-wQ_4_c,9096
87
- pixeltable/functions/together.py,sha256=xbgQMlA2G2FXdoQR4O9DlkmBsm2mivAdiOnxtxcyPwo,9440
88
- pixeltable/functions/util.py,sha256=GgKTzCjvzUQNjWtSObTkfxkvJ9GVUOzKimY45WhE25M,759
89
- pixeltable/functions/video.py,sha256=yW1Lwqu4_jYXp1aAOUThKB5-_Qxy-In_vTgB5cuW7Lg,6809
90
- pixeltable/functions/vision.py,sha256=K_E1Q-n2plPuFoOPlbKWRMiJp9dPgftIJ2T_o3TNL3I,15594
91
- pixeltable/functions/whisper.py,sha256=f2wqRd0n9jSBqRZN3W93UaetiAHtbsK0j9jXR2j2kkQ,2913
92
- pixeltable/globals.py,sha256=Ahfq5Au0HvL9W9oBOnf3-EzAOEAfagtiVxEgh3IznJg,20522
93
- pixeltable/index/__init__.py,sha256=XBwetNQQwnz0fiKwonOKhyy_U32l_cjt77kNvEIdjWs,102
94
- pixeltable/index/base.py,sha256=zo0YvJI3oXiK6hZJztB36ZftKKhLfO75Zq3t-PeQA6M,1556
95
- pixeltable/index/btree.py,sha256=JFerLyyLoBaD0FSF_jJ6iJFBVa-z_et--KdNR02xjRg,2264
96
- pixeltable/index/embedding_index.py,sha256=XeWPgr4zWhcHnQxVMiyEaV_8wOV-gk2Ius1E917ZV84,8064
97
- pixeltable/io/__init__.py,sha256=j3qDyGO1ejLce-UzIncK3eRqyOCLoOlDqClecMBSJGc,563
98
- pixeltable/io/external_store.py,sha256=H1jt7MDn464QRgBvU-PmcPcFlo3EZBCG7fKWEZXOfyc,16676
99
- pixeltable/io/fiftyone.py,sha256=hH-FahW6BuMQY8lGa2atnNnJto_pK8kWrP_y_EMsq6g,6965
100
- pixeltable/io/globals.py,sha256=9S9wnlIAuhZq7eC_GklTM_UX0UATK9fEagk8-SRCeXQ,17794
101
- pixeltable/io/hf_datasets.py,sha256=o5fqm2CJAjhFd3z-NYGxN0jM1tfrp4szuUX0TGnyNRY,8316
102
- pixeltable/io/label_studio.py,sha256=7KTro1H-AlVbwWuoYwU-mxH3zejZWTpQbz56uX-Wnjs,31078
103
- pixeltable/io/pandas.py,sha256=7eHg7wnAfRA9eBk4iC0iSSVTKOM59Ne4pXokKWdt3dY,9793
104
- pixeltable/io/parquet.py,sha256=bvwTRIKhS99M3bAcAP63jnh5-R6Qww1SrYBGWjZvN1g,8800
105
- pixeltable/iterators/__init__.py,sha256=qA9cJTwPO3gk-7y8mUXw2anWSbnUAVGwzl52SxiUjNU,398
106
- pixeltable/iterators/base.py,sha256=ZC0ZvXL4iw6AmT8cu-Mdx-T2UG9nmJYV1C6LK4efAfw,1669
107
- pixeltable/iterators/document.py,sha256=AsvEmZ5RGRi3AFGCrH2_-UNx5rTCFA-0WmMYQBTQI20,19679
108
- pixeltable/iterators/image.py,sha256=7eJupbyLEl_q4bemEozL8WgTgkxjl-DYnSXyHTQ7Rck,3628
109
- pixeltable/iterators/string.py,sha256=NG_fWc_GAITDfzl6MvrDOMrSoMcZdMZf6hPQztCSatE,1305
110
- pixeltable/iterators/video.py,sha256=anedQpSOnjYhHLa8UiEx-6ROagb14rpXh9am8oTriUg,9382
111
- pixeltable/metadata/__init__.py,sha256=Hgd3a_so_lFkE51bEgvzNDiS1Kj293oKcpUB9yfo6fg,2209
112
- pixeltable/metadata/converters/convert_10.py,sha256=J1_r7LNNAWTdb042AwqFpJ4sEB-i4qhUdk5iOjcZk34,719
113
- pixeltable/metadata/converters/convert_12.py,sha256=Ci-qyZW1gqci-8wnjeOB5afdq7KTuN-hVSV9OqSPx8g,162
114
- pixeltable/metadata/converters/convert_13.py,sha256=yFR6lD3pOrZ46ZQBFKYvxiIYa7rRxh46Bsq7yiCBNak,1356
115
- pixeltable/metadata/converters/convert_14.py,sha256=9e_JNm3a35Gs4dvFFaV-_jtCqp3ud6OEOqMIhTQmasE,428
116
- pixeltable/metadata/converters/convert_15.py,sha256=jMfL5wGil0-gZeIfmCbgtR3LSVNyOcxVp6YRhBECqY4,1741
117
- pixeltable/metadata/converters/convert_16.py,sha256=SvcWOYgLwRw_gLTnLbCSI9f2cpdkXazYOmmtJUOOzv4,476
118
- pixeltable/metadata/converters/convert_17.py,sha256=vJg4y2lg53WSj9OSntWsdUiCr6yRgMQm0eFbs_Geqjg,861
119
- pixeltable/metadata/converters/convert_18.py,sha256=NxSroQntVLgmvXfae1f0-jYJIhM2W7dhRY3I7g0RxPY,1482
120
- pixeltable/metadata/converters/convert_19.py,sha256=QgUDjNoH87KZg_f3cx4k0ZR67NqWRhZQKIIojbqxSkg,2080
121
- pixeltable/metadata/converters/convert_20.py,sha256=NLMeke9QUGqIJUe5MNqKmVdaLs6pPFrjyigImhogaT4,2768
122
- pixeltable/metadata/converters/convert_21.py,sha256=YTztkbqOC2zQcTWrXfhrP8diUbfxy5DHwsu_IT-bBok,1115
123
- pixeltable/metadata/converters/convert_22.py,sha256=f_oauWGEiefr9tZOtGBJMcqqIsTmJwhLNr6DqKlZZkg,590
124
- pixeltable/metadata/converters/util.py,sha256=nycZk_UecJcrVZsIyxQrz5ngbke8-yfY-_UcERuzhPk,5983
125
- pixeltable/metadata/notes.py,sha256=8bFw8vi2qSW3BAcpLCA0sbuqeXgdms_eeOQGaaFL5WM,630
126
- pixeltable/metadata/schema.py,sha256=CnEsMqLn4hzLDaAr5lyd-NqiOUFQdvhxdCoXMR4Qcs4,9352
127
- pixeltable/plan.py,sha256=dzG3iD9ClggFyIYmDuIK7H3eBC8HV3ft__f4ZULQvow,40687
128
- pixeltable/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
- pixeltable/store.py,sha256=m-OeilqOFai5wUXvtXTV9txzn-GhK2lfA7fkvzrfWFg,21974
130
- pixeltable/tool/create_test_db_dump.py,sha256=LpqPcLbsWUHi_jGsHw9fmWgU3dbcUzlQsCRkWyqoBXE,12063
131
- pixeltable/tool/create_test_video.py,sha256=4cQmqoKjn3juy7Ilty75gWBygqBxTZ1E9XPlrsC0Ssk,2931
132
- pixeltable/tool/doc_plugins/griffe.py,sha256=J5zxyEUchfR3mkWmhx4Vjl_iSodL_pHiuOyD2eczbNU,2182
133
- pixeltable/tool/doc_plugins/mkdocstrings.py,sha256=afq7XOaSC5WRmugkh-FMFMK8PqOgIlDIsJdD8cuPhtE,207
134
- pixeltable/tool/doc_plugins/templates/material/udf.html.jinja,sha256=R-7Q57nmDd5BUea-F1-MjwjK3pq7uBHXNoSo8_QjZG4,4890
135
- pixeltable/tool/embed_udf.py,sha256=EXvfvuzZm0uTgH-aAATSrKV8ixCU8OMwpzXlJMg845Y,299
136
- pixeltable/tool/mypy_plugin.py,sha256=__oTFElirrK25jCX1z_asD_gxGnGxtD2TaU6r1if-Ic,1784
137
- pixeltable/type_system.py,sha256=QPQ2Q065WQJY7uz1U3Y5dlgUPYwnWxBYfPmiZZXb-JE,41936
138
- pixeltable/utils/__init__.py,sha256=UYlrf6TIWJT0g-Hac0b34-dEk478B5Qx8dGco34YlIk,439
139
- pixeltable/utils/arrow.py,sha256=4AyCAkkNfNChVTaPAVS5j1ZO7BtTxn11duonolfktV8,3931
140
- pixeltable/utils/coco.py,sha256=WCUyoj0dTyJFbPB7frEQUvY92SlEPxQ068r-3QAwROE,7285
141
- pixeltable/utils/code.py,sha256=AOw1u2r8_DQXpX-lxJhyHWARGrCRDXOJHFVgKOi54Uc,1231
142
- pixeltable/utils/description_helper.py,sha256=P-8EE2pRFP8s3coe73frgV68yt4Dp3saErCUehMxKUw,3759
143
- pixeltable/utils/documents.py,sha256=B984nVigJgHZ5Rm-zX4LLuHuMnfmz-zr24bbAsc_y3w,2511
144
- pixeltable/utils/filecache.py,sha256=6HKQdItqSSTQvj2HkSJulyhfBedi4PgC7umwxXGOVG8,10637
145
- pixeltable/utils/formatter.py,sha256=5E_gDg11ClFI-5SthwkiqyE3hAok3JHDj4OSK9cJklM,9257
146
- pixeltable/utils/http_server.py,sha256=xYPTvmYrkUpKfOaLDq08D-eHswkcgDf4qAt76ZFH6lM,2411
147
- pixeltable/utils/media_store.py,sha256=YwvTjbVqC_aLbDvLuqnDSL8xeIVMZcmzp0ANuM6uMbw,3092
148
- pixeltable/utils/pytorch.py,sha256=6RvOCjy_QV4gc-aht-3d0zoASkuv-warfpl87vgmuKw,3450
149
- pixeltable/utils/s3.py,sha256=huA5hxDGkPIu18zWet76o0FsO7Vbtp-iPmnOzCe-MvA,586
150
- pixeltable/utils/sql.py,sha256=j_tj0h4ffm-DhUIJbvGphxrVyBKlNTwDKqWGhRQ5_PY,795
151
- pixeltable/utils/transactional_directory.py,sha256=UGzCrGtLR3hEEf8sYGuWBzLVFAEQml3vdIavigWeTBM,1349
152
- pixeltable-0.2.26.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
153
- pixeltable-0.2.26.dist-info/METADATA,sha256=qgtP333OuS_5GC1MBPPuS7Eu3V_Kb1hXxcnEs3l0QLA,19476
154
- pixeltable-0.2.26.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
155
- pixeltable-0.2.26.dist-info/entry_points.txt,sha256=TNI1Gb5vPwFrTdw6TimSYjO8FeK8c_HuPr28vcf7o_I,108
156
- pixeltable-0.2.26.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- [mkdocstrings.python.templates]
2
- extension-name=pixeltable.tool.doc_plugins.mkdocstrings:get_templates_path
3
-