pixeltable 0.2.10__py3-none-any.whl → 0.2.12__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.
Potentially problematic release.
This version of pixeltable might be problematic. Click here for more details.
- pixeltable/__init__.py +2 -2
- pixeltable/__version__.py +2 -2
- pixeltable/catalog/catalog.py +3 -3
- pixeltable/catalog/globals.py +2 -0
- pixeltable/catalog/insertable_table.py +1 -11
- pixeltable/catalog/schema_object.py +28 -2
- pixeltable/catalog/table.py +76 -97
- pixeltable/catalog/table_version.py +96 -58
- pixeltable/catalog/table_version_path.py +1 -1
- pixeltable/catalog/view.py +31 -27
- pixeltable/dataframe.py +32 -115
- pixeltable/exprs/column_ref.py +2 -7
- pixeltable/exprs/similarity_expr.py +27 -16
- pixeltable/functions/openai.py +1 -1
- pixeltable/globals.py +70 -53
- pixeltable/index/embedding_index.py +28 -27
- pixeltable/io/external_store.py +2 -2
- pixeltable/io/globals.py +1 -1
- pixeltable/io/label_studio.py +3 -3
- pixeltable/metadata/__init__.py +1 -1
- pixeltable/metadata/converters/convert_17.py +26 -0
- pixeltable/tool/create_test_db_dump.py +1 -1
- pixeltable/utils/formatter.py +234 -0
- {pixeltable-0.2.10.dist-info → pixeltable-0.2.12.dist-info}/METADATA +4 -4
- {pixeltable-0.2.10.dist-info → pixeltable-0.2.12.dist-info}/RECORD +27 -25
- {pixeltable-0.2.10.dist-info → pixeltable-0.2.12.dist-info}/LICENSE +0 -0
- {pixeltable-0.2.10.dist-info → pixeltable-0.2.12.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import base64
|
|
2
|
+
import html
|
|
3
|
+
import json
|
|
4
|
+
import logging
|
|
5
|
+
import mimetypes
|
|
6
|
+
from typing import Any, Callable, Optional
|
|
7
|
+
|
|
8
|
+
import PIL
|
|
9
|
+
import PIL.Image as Image
|
|
10
|
+
import cv2
|
|
11
|
+
import numpy as np
|
|
12
|
+
|
|
13
|
+
import io
|
|
14
|
+
import pixeltable.type_system as ts
|
|
15
|
+
from pixeltable.utils.http_server import get_file_uri
|
|
16
|
+
|
|
17
|
+
_logger = logging.getLogger('pixeltable')
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class Formatter:
|
|
21
|
+
"""
|
|
22
|
+
A factory for constructing HTML formatters for Pixeltable data. The formatters are used to customize
|
|
23
|
+
the rendering of `DataFrameResultSet`s in notebooks.
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
num_rows: Number of rows in the DataFrame being rendered.
|
|
27
|
+
num_cols: Number of columns in the DataFrame being rendered.
|
|
28
|
+
http_address: Root address of the Pixeltable HTTP server (used to construct URLs for media references).
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
__FLOAT_PRECISION = 3
|
|
32
|
+
__LIST_THRESHOLD = 16
|
|
33
|
+
__LIST_EDGEITEMS = 6
|
|
34
|
+
__STRING_SEP = ' ...... '
|
|
35
|
+
__STRING_MAX_LEN = 1000
|
|
36
|
+
__NESTED_STRING_MAX_LEN = 300
|
|
37
|
+
|
|
38
|
+
def __init__(self, num_rows: int, num_cols: int, http_address: str):
|
|
39
|
+
self.__num_rows = num_rows
|
|
40
|
+
self.__num_cols = num_cols
|
|
41
|
+
self.__http_address = http_address
|
|
42
|
+
|
|
43
|
+
def get_pandas_formatter(self, col_type: ts.ColumnType) -> Optional[Callable]:
|
|
44
|
+
if col_type.is_string_type():
|
|
45
|
+
return self.format_string
|
|
46
|
+
if col_type.is_float_type():
|
|
47
|
+
return self.format_float
|
|
48
|
+
if col_type.is_json_type():
|
|
49
|
+
return self.format_json
|
|
50
|
+
if col_type.is_array_type():
|
|
51
|
+
return self.format_array
|
|
52
|
+
if col_type.is_image_type():
|
|
53
|
+
return self.format_img
|
|
54
|
+
if col_type.is_video_type():
|
|
55
|
+
return self.format_video
|
|
56
|
+
if col_type.is_audio_type():
|
|
57
|
+
return self.format_audio
|
|
58
|
+
if col_type.is_document_type():
|
|
59
|
+
return self.format_document
|
|
60
|
+
return None
|
|
61
|
+
|
|
62
|
+
@classmethod
|
|
63
|
+
def format_string(cls, val: str) -> str:
|
|
64
|
+
"""
|
|
65
|
+
Escapes special characters in `val`, and abbreviates `val` if its length exceeds `_STRING_MAX_LEN`.
|
|
66
|
+
"""
|
|
67
|
+
return cls.__escape(cls.__abbreviate(val, cls.__STRING_MAX_LEN))
|
|
68
|
+
|
|
69
|
+
@classmethod
|
|
70
|
+
def __abbreviate(cls, val: str, max_len: int) -> str:
|
|
71
|
+
if len(val) > max_len:
|
|
72
|
+
edgeitems = (max_len - len(cls.__STRING_SEP)) // 2
|
|
73
|
+
return f'{val[:edgeitems]}{cls.__STRING_SEP}{val[-edgeitems:]}'
|
|
74
|
+
return val
|
|
75
|
+
|
|
76
|
+
@classmethod
|
|
77
|
+
def __escape(cls, val: str) -> str:
|
|
78
|
+
# HTML-escape the specified string, then escape $ signs to suppress MathJax formatting
|
|
79
|
+
# TODO(aaron-siegel): The '$' escaping isn't perfect; it will fail on '$' that are already escaped
|
|
80
|
+
return html.escape(val).replace('$', r'\$')
|
|
81
|
+
|
|
82
|
+
@classmethod
|
|
83
|
+
def format_float(cls, val: float) -> str:
|
|
84
|
+
# stay consistent with numpy formatting (0-D array has no brackets)
|
|
85
|
+
return np.array2string(np.array(val), precision=cls.__FLOAT_PRECISION)
|
|
86
|
+
|
|
87
|
+
@classmethod
|
|
88
|
+
def format_array(cls, arr: np.ndarray) -> str:
|
|
89
|
+
return np.array2string(
|
|
90
|
+
arr,
|
|
91
|
+
precision=cls.__FLOAT_PRECISION,
|
|
92
|
+
threshold=cls.__LIST_THRESHOLD,
|
|
93
|
+
edgeitems=cls.__LIST_EDGEITEMS,
|
|
94
|
+
max_line_width=1000000,
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
@classmethod
|
|
98
|
+
def format_json(cls, val: Any) -> str:
|
|
99
|
+
if isinstance(val, str):
|
|
100
|
+
# JSON-like formatting will be applied to strings that appear nested within a list or dict
|
|
101
|
+
# (quote the string; escape any quotes inside the string; shorter abbreviations).
|
|
102
|
+
# However, if the string appears in top-level position (i.e., the entire JSON value is a
|
|
103
|
+
# string), then we format it like an ordinary string.
|
|
104
|
+
return cls.format_string(val)
|
|
105
|
+
# In all other cases, dump the JSON struct recursively.
|
|
106
|
+
return cls.__format_json_rec(val)
|
|
107
|
+
|
|
108
|
+
@classmethod
|
|
109
|
+
def __format_json_rec(cls, val: Any) -> str:
|
|
110
|
+
if isinstance(val, str):
|
|
111
|
+
return cls.__escape(json.dumps(cls.__abbreviate(val, cls.__NESTED_STRING_MAX_LEN)))
|
|
112
|
+
if isinstance(val, float):
|
|
113
|
+
return cls.format_float(val)
|
|
114
|
+
if isinstance(val, np.ndarray):
|
|
115
|
+
return cls.format_array(val)
|
|
116
|
+
if isinstance(val, list):
|
|
117
|
+
if len(val) < cls.__LIST_THRESHOLD:
|
|
118
|
+
components = [cls.__format_json_rec(x) for x in val]
|
|
119
|
+
else:
|
|
120
|
+
components = [cls.__format_json_rec(x) for x in val[: cls.__LIST_EDGEITEMS]]
|
|
121
|
+
components.append('...')
|
|
122
|
+
components.extend(cls.__format_json_rec(x) for x in val[-cls.__LIST_EDGEITEMS :])
|
|
123
|
+
return '[' + ', '.join(components) + ']'
|
|
124
|
+
if isinstance(val, dict):
|
|
125
|
+
kv_pairs = (f'{cls.__format_json_rec(k)}: {cls.__format_json_rec(v)}' for k, v in val.items())
|
|
126
|
+
return '{' + ', '.join(kv_pairs) + '}'
|
|
127
|
+
|
|
128
|
+
# Everything else
|
|
129
|
+
try:
|
|
130
|
+
return json.dumps(val)
|
|
131
|
+
except TypeError: # Not JSON serializable
|
|
132
|
+
return str(val)
|
|
133
|
+
|
|
134
|
+
def format_img(self, img: Image.Image) -> str:
|
|
135
|
+
"""
|
|
136
|
+
Create <img> tag for Image object.
|
|
137
|
+
"""
|
|
138
|
+
assert isinstance(img, Image.Image), f'Wrong type: {type(img)}'
|
|
139
|
+
# Try to make it look decent in a variety of display scenarios
|
|
140
|
+
if self.__num_rows > 1:
|
|
141
|
+
width = 240 # Multiple rows: display small images
|
|
142
|
+
elif self.__num_cols > 1:
|
|
143
|
+
width = 480 # Multiple columns: display medium images
|
|
144
|
+
else:
|
|
145
|
+
width = 640 # A single image: larger display
|
|
146
|
+
with io.BytesIO() as buffer:
|
|
147
|
+
img.save(buffer, 'jpeg')
|
|
148
|
+
img_base64 = base64.b64encode(buffer.getvalue()).decode()
|
|
149
|
+
return f"""
|
|
150
|
+
<div class="pxt_image" style="width:{width}px;">
|
|
151
|
+
<img src="data:image/jpeg;base64,{img_base64}" width="{width}" />
|
|
152
|
+
</div>
|
|
153
|
+
"""
|
|
154
|
+
|
|
155
|
+
def format_video(self, file_path: str) -> str:
|
|
156
|
+
thumb_tag = ''
|
|
157
|
+
# Attempt to extract the first frame of the video to use as a thumbnail,
|
|
158
|
+
# so that the notebook can be exported as HTML and viewed in contexts where
|
|
159
|
+
# the video itself is not accessible.
|
|
160
|
+
# TODO(aaron-siegel): If the video is backed by a concrete external URL,
|
|
161
|
+
# should we link to that instead?
|
|
162
|
+
video_reader = cv2.VideoCapture(str(file_path))
|
|
163
|
+
if video_reader.isOpened():
|
|
164
|
+
status, img_array = video_reader.read()
|
|
165
|
+
if status:
|
|
166
|
+
img_array = cv2.cvtColor(img_array, cv2.COLOR_BGR2RGB)
|
|
167
|
+
thumb = PIL.Image.fromarray(img_array)
|
|
168
|
+
with io.BytesIO() as buffer:
|
|
169
|
+
thumb.save(buffer, 'jpeg')
|
|
170
|
+
thumb_base64 = base64.b64encode(buffer.getvalue()).decode()
|
|
171
|
+
thumb_tag = f'poster="data:image/jpeg;base64,{thumb_base64}"'
|
|
172
|
+
video_reader.release()
|
|
173
|
+
if self.__num_rows > 1:
|
|
174
|
+
width = 320
|
|
175
|
+
elif self.__num_cols > 1:
|
|
176
|
+
width = 480
|
|
177
|
+
else:
|
|
178
|
+
width = 800
|
|
179
|
+
return f"""
|
|
180
|
+
<div class="pxt_video" style="width:{width}px;">
|
|
181
|
+
<video controls width="{width}" {thumb_tag}>
|
|
182
|
+
{self.__create_source_tag(self.__http_address, file_path)}
|
|
183
|
+
</video>
|
|
184
|
+
</div>
|
|
185
|
+
"""
|
|
186
|
+
|
|
187
|
+
def format_audio(self, file_path: str) -> str:
|
|
188
|
+
return f"""
|
|
189
|
+
<div class="pxt_audio">
|
|
190
|
+
<audio controls>
|
|
191
|
+
{self.__create_source_tag(self.__http_address, file_path)}
|
|
192
|
+
</audio>
|
|
193
|
+
</div>
|
|
194
|
+
"""
|
|
195
|
+
|
|
196
|
+
def format_document(self, file_path: str) -> str:
|
|
197
|
+
max_width = max_height = 320
|
|
198
|
+
# by default, file path will be shown as a link
|
|
199
|
+
inner_element = file_path
|
|
200
|
+
inner_element = html.escape(inner_element)
|
|
201
|
+
# try generating a thumbnail for different types and use that if successful
|
|
202
|
+
if file_path.lower().endswith('.pdf'):
|
|
203
|
+
try:
|
|
204
|
+
import fitz
|
|
205
|
+
|
|
206
|
+
doc = fitz.open(file_path)
|
|
207
|
+
p = doc.get_page_pixmap(0)
|
|
208
|
+
while p.width > max_width or p.height > max_height:
|
|
209
|
+
# shrink(1) will halve each dimension
|
|
210
|
+
p.shrink(1)
|
|
211
|
+
data = p.tobytes(output='jpeg')
|
|
212
|
+
thumb_base64 = base64.b64encode(data).decode()
|
|
213
|
+
img_src = f'data:image/jpeg;base64,{thumb_base64}'
|
|
214
|
+
inner_element = f"""
|
|
215
|
+
<img style="object-fit: contain; border: 1px solid black;" src="{img_src}" />
|
|
216
|
+
"""
|
|
217
|
+
except:
|
|
218
|
+
logging.warning(f'Failed to produce PDF thumbnail {file_path}. Make sure you have PyMuPDF installed.')
|
|
219
|
+
|
|
220
|
+
return f"""
|
|
221
|
+
<div class="pxt_document" style="width:{max_width}px;">
|
|
222
|
+
<a href="{get_file_uri(self.__http_address, file_path)}">
|
|
223
|
+
{inner_element}
|
|
224
|
+
</a>
|
|
225
|
+
</div>
|
|
226
|
+
"""
|
|
227
|
+
|
|
228
|
+
@classmethod
|
|
229
|
+
def __create_source_tag(cls, http_address: str, file_path: str) -> str:
|
|
230
|
+
src_url = get_file_uri(http_address, file_path)
|
|
231
|
+
mime = mimetypes.guess_type(src_url)[0]
|
|
232
|
+
# if mime is None, the attribute string would not be valid html.
|
|
233
|
+
mime_attr = f'type="{mime}"' if mime is not None else ''
|
|
234
|
+
return f'<source src="{src_url}" {mime_attr} />'
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pixeltable
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.12
|
|
4
4
|
Summary: Pixeltable: The Multimodal AI Data Plane
|
|
5
|
-
Author:
|
|
6
|
-
Author-email:
|
|
5
|
+
Author: Pixeltable, Inc.
|
|
6
|
+
Author-email: contact@pixeltable.com
|
|
7
7
|
Requires-Python: >=3.9,<4.0
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
9
|
Classifier: Programming Language :: Python :: 3.9
|
|
@@ -75,7 +75,7 @@ Learn how to create tables, populate them with data, and enhance them with built
|
|
|
75
75
|
|
|
76
76
|
| Topic | Notebook | API |
|
|
77
77
|
|:--------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------:|
|
|
78
|
-
| Get Started | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/master/docs/tutorials/pixeltable-basics.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> | [](https://pixeltable.github.io/pixeltable/api/pixeltable/) |
|
|
78
|
+
| Get Started | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/master/docs/release/tutorials/pixeltable-basics.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> | [](https://pixeltable.github.io/pixeltable/api/pixeltable/) |
|
|
79
79
|
| User-Defined Functions (UDFs) | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/master/docs/release/howto/udfs-in-pixeltable.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> | [](https://pixeltable.github.io/pixeltable/api/iterators/document-splitter/) |
|
|
80
80
|
| Comparing Object Detection Models | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/master/docs/release/tutorials/object-detection-in-videos.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> | [](https://pixeltable.github.io/pixeltable/api-cheat-sheet/#frame-extraction-for-video-data) |
|
|
81
81
|
| Experimenting with Chunking (RAG) | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/master/docs/release/tutorials/rag-operations.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> | [](https://pixeltable.github.io/pixeltable/api/iterators/document-splitter/) |
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
pixeltable/__init__.py,sha256=
|
|
2
|
-
pixeltable/__version__.py,sha256=
|
|
1
|
+
pixeltable/__init__.py,sha256=SkhQ6olglhj3NdcyVYzsTwpTZs8uVmtJa9INfsQV9gk,1267
|
|
2
|
+
pixeltable/__version__.py,sha256=VEuOm2X4I15fkc_I-vzJLLY4TEd1E8QfUbdSN8vRrVA,114
|
|
3
3
|
pixeltable/catalog/__init__.py,sha256=E41bxaPeQIcgRYzTWc2vkDOboQhRymrJf4IcHQO7o_8,453
|
|
4
|
-
pixeltable/catalog/catalog.py,sha256=
|
|
4
|
+
pixeltable/catalog/catalog.py,sha256=8gsFWm6o9Qg4_BEO6oejdpmP4MAOlhmuKRaJP0o2UPU,7906
|
|
5
5
|
pixeltable/catalog/column.py,sha256=Dmc6CgFLExJy3tdvuX0Emjc8SgqZvmCbAHozibO1-G0,9417
|
|
6
6
|
pixeltable/catalog/dir.py,sha256=DWl9nnCOoiYLKWp31MNMvLmryXeQiQZu5YJcd4tpy38,921
|
|
7
|
-
pixeltable/catalog/globals.py,sha256=
|
|
8
|
-
pixeltable/catalog/insertable_table.py,sha256=
|
|
7
|
+
pixeltable/catalog/globals.py,sha256=tNb_6jzAKJWD4MH1Y9g2UhVQkiomYfbHQZ2GIcg7vUI,974
|
|
8
|
+
pixeltable/catalog/insertable_table.py,sha256=u2yMCw1lWSIeRAknIKQmSMWS_3oLTn1kCR1Hk79OvrI,5883
|
|
9
9
|
pixeltable/catalog/named_function.py,sha256=UhHaimM_uJHS-0RQcqGOgvWeZtMfKsIgSeKSRwT2moU,1149
|
|
10
10
|
pixeltable/catalog/path.py,sha256=QgccEi_QOfaKt8YsR2zLtd_z7z7QQkU_1kprJFi2SPQ,1677
|
|
11
11
|
pixeltable/catalog/path_dict.py,sha256=xfvxg1Ze5jZCARUGASF2DRbQPh7pRVTYhuJ_u82gYUo,5941
|
|
12
|
-
pixeltable/catalog/schema_object.py,sha256=
|
|
13
|
-
pixeltable/catalog/table.py,sha256=
|
|
14
|
-
pixeltable/catalog/table_version.py,sha256
|
|
15
|
-
pixeltable/catalog/table_version_path.py,sha256=
|
|
16
|
-
pixeltable/catalog/view.py,sha256=
|
|
17
|
-
pixeltable/dataframe.py,sha256=
|
|
12
|
+
pixeltable/catalog/schema_object.py,sha256=1GuxN68P3c7g0gmY8doB6qoUGJsalyECWaO-KEi96D0,1879
|
|
13
|
+
pixeltable/catalog/table.py,sha256=J4MRWMly9uz-utLnXIKh7OTUbY0t4_ogHeEuDcApEPk,41151
|
|
14
|
+
pixeltable/catalog/table_version.py,sha256=qnPIIxwIOQbukV84ydeksVNURb37kAnGOXI-ZO2kkCo,57233
|
|
15
|
+
pixeltable/catalog/table_version_path.py,sha256=6JZlgKMYa3Xf8p_2Z-iDIFIcfuYRyjbpc3_CC9l1HME,6396
|
|
16
|
+
pixeltable/catalog/view.py,sha256=3OAk-NBPlSagMCsdVtcx35jHD80SIYCuOy5dc1kM7Fs,10403
|
|
17
|
+
pixeltable/dataframe.py,sha256=7w-1-RGIGEJFJydFazHOzHLFSjZ4Ejvv_JjP4fKfRjo,34333
|
|
18
18
|
pixeltable/env.py,sha256=WO_WLfRj9Fft6QyW89S9cw47RTg1ALviStu9pNygJEQ,21635
|
|
19
19
|
pixeltable/exceptions.py,sha256=MSP9zeL0AmXT93XqjdvgGN4rzno1_KRrGriq6hpemnw,376
|
|
20
20
|
pixeltable/exec/__init__.py,sha256=RK7SKvrQ7Ky3G_LXDP4Bf7lHmMM_uYZl8dJaZYs0FjY,454
|
|
@@ -32,7 +32,7 @@ pixeltable/exprs/__init__.py,sha256=7dwrdk-NpF66OT-m5yNtFEhq-o1T476dnXHjluw2K1s,
|
|
|
32
32
|
pixeltable/exprs/arithmetic_expr.py,sha256=sWBYCBKI6IHj9ASwDcm2BlkQ5gleVtKtmpiPvzFNBJM,4386
|
|
33
33
|
pixeltable/exprs/array_slice.py,sha256=VmWc6iFusrM85MjyEBBCfXG1Jnt8-Gr6-J88BXxNoOE,2131
|
|
34
34
|
pixeltable/exprs/column_property_ref.py,sha256=0PHiBys0fxe2LgjaMId5UHob4E-ZggyPLnnW41RgA0E,2706
|
|
35
|
-
pixeltable/exprs/column_ref.py,sha256=
|
|
35
|
+
pixeltable/exprs/column_ref.py,sha256=rlw6Ic_atAfPZpEBNAqbRZauMeEUci2rDyVoHd1pA1I,5195
|
|
36
36
|
pixeltable/exprs/comparison.py,sha256=hP3M_lMWcFgENBICFosZPw2lRm1R6_qM_O9bKPmWJGI,4789
|
|
37
37
|
pixeltable/exprs/compound_predicate.py,sha256=Gh22MKi625m5A_RunVRd-a1XFi-fitikqBVz2VNXKrs,3830
|
|
38
38
|
pixeltable/exprs/data_row.py,sha256=RTBw1cBt29g_9g_hgdEYZ5aiHl7WZMBaBC2fOMOfwOc,8668
|
|
@@ -52,7 +52,7 @@ pixeltable/exprs/object_ref.py,sha256=eTcx84aWRI59fIiGvbdv3_cfL0XW4xEFQ4lwpLpJkM
|
|
|
52
52
|
pixeltable/exprs/predicate.py,sha256=OSDgjfSqiK7J_5GZMUXMvjfyomKEGi0JNxeB073SGXw,1859
|
|
53
53
|
pixeltable/exprs/row_builder.py,sha256=0OYd51J2ECPHkk2iN3MfYpS7LqnHTV5l5ubsVcy0dJA,15926
|
|
54
54
|
pixeltable/exprs/rowid_ref.py,sha256=74w4rEy21YysTVbyKNc3op-pYFqDAx8VJdtl7ZPpxHs,4268
|
|
55
|
-
pixeltable/exprs/similarity_expr.py,sha256=
|
|
55
|
+
pixeltable/exprs/similarity_expr.py,sha256=DqLOWtwPn9LxBRPm-d5Qz0yZ7w9YTOP8w0rgbr-6Lyg,3702
|
|
56
56
|
pixeltable/exprs/type_cast.py,sha256=JMg8p1qYoFfiAXfJPSbTEnfrK7lRO_JMaqlPHOrhNQU,1793
|
|
57
57
|
pixeltable/exprs/variable.py,sha256=Kg_O4ytcHYZFijIyMHYBJn063cTKU1-YE583FAz8Qaw,1361
|
|
58
58
|
pixeltable/ext/__init__.py,sha256=0uugfuME1FybVo-MdxaVNGagRjhcvNTnv5MZUem6Cyo,269
|
|
@@ -74,22 +74,22 @@ pixeltable/functions/fireworks.py,sha256=sbZy3HRn8o01nT4k1lOJJ_jGrjhBNkYmj1_Trao
|
|
|
74
74
|
pixeltable/functions/globals.py,sha256=MVKcwvfRaqBMV58KBxp5ACMsTbj29WD97AOg1N5ZheY,1596
|
|
75
75
|
pixeltable/functions/huggingface.py,sha256=qFdFpBX4R8Iz6fB0PKOwicdfvnEV7DQhtdcvsIQz55I,7372
|
|
76
76
|
pixeltable/functions/image.py,sha256=lC5PVvx0hXlINGcURLrLeTT7xUMXla6QUC1T9t4-A0Y,5440
|
|
77
|
-
pixeltable/functions/openai.py,sha256=
|
|
77
|
+
pixeltable/functions/openai.py,sha256=D0cDXe_zy1kUdKqM9T3qs7OBAUCrAINUy5P0DO0OSXc,7814
|
|
78
78
|
pixeltable/functions/string.py,sha256=Ae_weygd9Aj98buLC4tPLRYGg3LGSJEpXaqr93TF4nw,645
|
|
79
79
|
pixeltable/functions/together.py,sha256=2vHOoXMUIpeYwTYGTr3hDHePzy8zepvoeyORgV_9n34,4412
|
|
80
80
|
pixeltable/functions/util.py,sha256=F2iiIL7UfhYdCVzdCa3efYqWbaeLKFrbycKnuPkG57M,650
|
|
81
81
|
pixeltable/functions/video.py,sha256=yn52MimAVrSzUyAUtyxbd1RWveX_TyjwsomBuhK9V60,6516
|
|
82
82
|
pixeltable/functions/whisper.py,sha256=s7C4eV5tCJed-4Joob5LojGFEHPgapmT8awFPVxBKgQ,2199
|
|
83
|
-
pixeltable/globals.py,sha256=
|
|
83
|
+
pixeltable/globals.py,sha256=L_40LFK-wW5wJ8DtuLoeS2gCgm9rmwUjx5FLa5hMOmw,14828
|
|
84
84
|
pixeltable/index/__init__.py,sha256=XBwetNQQwnz0fiKwonOKhyy_U32l_cjt77kNvEIdjWs,102
|
|
85
85
|
pixeltable/index/base.py,sha256=YAQ5Dz1mfI0dfu9rxWHWroE8TjB90yKfPtXAzoADq38,1568
|
|
86
86
|
pixeltable/index/btree.py,sha256=NE4GYhcJWYJhdKyeHI0sQBlFvUaIgGOF9KLyCZOfFjE,1822
|
|
87
|
-
pixeltable/index/embedding_index.py,sha256=
|
|
87
|
+
pixeltable/index/embedding_index.py,sha256=U1wAjcTYvw3uJf3QHIOzBV8FLOUn8IeaFsLzUb_QTmc,7829
|
|
88
88
|
pixeltable/io/__init__.py,sha256=DdqOteR1Y-yRvFS0VojXHryBtIGzH8nAN-1MBj3LGRk,493
|
|
89
|
-
pixeltable/io/external_store.py,sha256=
|
|
90
|
-
pixeltable/io/globals.py,sha256=
|
|
89
|
+
pixeltable/io/external_store.py,sha256=owha7bEmA1ZvpZvBLBS6LHi9uLq1rUIkrMTGarsbjOU,16422
|
|
90
|
+
pixeltable/io/globals.py,sha256=v-L3ZQrjyutP_DHGXanymGjSJugWJ3STNUkzgylihOU,4540
|
|
91
91
|
pixeltable/io/hf_datasets.py,sha256=h5M1NkXOvEU8kaeT3AON1A18Vmhnc1lVo5a3TZ5AAic,8004
|
|
92
|
-
pixeltable/io/label_studio.py,sha256=
|
|
92
|
+
pixeltable/io/label_studio.py,sha256=yKCXPDZUev04O5r3tP5vrPpXe5KP4deQfbLHewNfVXQ,28764
|
|
93
93
|
pixeltable/io/pandas.py,sha256=cDHUDW2CGiBbsEJB9zE5vkXopTKxDdI-CZxNcp0OnIk,6478
|
|
94
94
|
pixeltable/io/parquet.py,sha256=i4hvYHsARe2GnZHxNmI66Vf3tr1sIFLN6KGCJYvH3o8,8149
|
|
95
95
|
pixeltable/iterators/__init__.py,sha256=sjldFckkT8aVRiKgEP6faeAK2NQBdzbmpwAeRhI1FkM,366
|
|
@@ -97,18 +97,19 @@ pixeltable/iterators/base.py,sha256=cnEh1tNN2JAxRzrLTg3dhun3N1oNQ8vifCm6ts3_UiE,
|
|
|
97
97
|
pixeltable/iterators/document.py,sha256=netSCJatG8NcgbHZ69BvQVICdAorQlYi8OlcpqwLQD4,19436
|
|
98
98
|
pixeltable/iterators/string.py,sha256=NG_fWc_GAITDfzl6MvrDOMrSoMcZdMZf6hPQztCSatE,1305
|
|
99
99
|
pixeltable/iterators/video.py,sha256=xtxODL1AfZwTfHVzWekhTCLA8gwTJIvJFdxC0KecD9Q,3836
|
|
100
|
-
pixeltable/metadata/__init__.py,sha256=
|
|
100
|
+
pixeltable/metadata/__init__.py,sha256=R4K9KSnefmvSCxXbBKTLAHD3QuHXgQ3a0wTs-eg94Os,2172
|
|
101
101
|
pixeltable/metadata/converters/convert_10.py,sha256=J1_r7LNNAWTdb042AwqFpJ4sEB-i4qhUdk5iOjcZk34,719
|
|
102
102
|
pixeltable/metadata/converters/convert_12.py,sha256=Ci-qyZW1gqci-8wnjeOB5afdq7KTuN-hVSV9OqSPx8g,162
|
|
103
103
|
pixeltable/metadata/converters/convert_13.py,sha256=yFR6lD3pOrZ46ZQBFKYvxiIYa7rRxh46Bsq7yiCBNak,1356
|
|
104
104
|
pixeltable/metadata/converters/convert_14.py,sha256=o4Dwu5wujJYILN-2chg3xCSUsh4cnn0sImv6rc75rSM,388
|
|
105
105
|
pixeltable/metadata/converters/convert_15.py,sha256=N-Lt3OdOrUprN-z1gFcxniZgAtZ7jzup_YUZzXX6EtY,1709
|
|
106
106
|
pixeltable/metadata/converters/convert_16.py,sha256=SvcWOYgLwRw_gLTnLbCSI9f2cpdkXazYOmmtJUOOzv4,476
|
|
107
|
+
pixeltable/metadata/converters/convert_17.py,sha256=vJg4y2lg53WSj9OSntWsdUiCr6yRgMQm0eFbs_Geqjg,861
|
|
107
108
|
pixeltable/metadata/converters/util.py,sha256=AcYs3yUICl93y8whf0pkeWZoCzE4JuUMafmcYMyJUCY,2618
|
|
108
109
|
pixeltable/metadata/schema.py,sha256=WJZ1YPgS88rFElXbjYgDhcrI4VReR1I9VPOnTkoHvoI,8418
|
|
109
110
|
pixeltable/plan.py,sha256=MXWgwQXD40GB57xQiq_wjXF3OL0XTEjjhQslMfFTt3w,32831
|
|
110
111
|
pixeltable/store.py,sha256=UDn-UMYuL6dTUym3yFsVhv9hUtnP_QtzhDJzsFInApc,18853
|
|
111
|
-
pixeltable/tool/create_test_db_dump.py,sha256=
|
|
112
|
+
pixeltable/tool/create_test_db_dump.py,sha256=iaMfBEyGHSMhhOJDyR0M9Idj9HkNgeTjmYLVhScjMZA,10729
|
|
112
113
|
pixeltable/tool/create_test_video.py,sha256=OLfccymYReIpzE8osZn4rQvLXxxiPC_l0vc06U74hVM,2899
|
|
113
114
|
pixeltable/tool/embed_udf.py,sha256=llHUhjGnCMp7Wyz7eHgKZV2v6o2ZWSgLQKscESuHK_o,269
|
|
114
115
|
pixeltable/type_system.py,sha256=oXnDVoP90ic6WSTF_DcgWDLx0MYKEU0ggGTesAKahic,29505
|
|
@@ -118,6 +119,7 @@ pixeltable/utils/coco.py,sha256=ISpFBhR4eO1jOcg_SPb0thVI4KdS6H0RyNQauZIA5A4,7287
|
|
|
118
119
|
pixeltable/utils/code.py,sha256=AOw1u2r8_DQXpX-lxJhyHWARGrCRDXOJHFVgKOi54Uc,1231
|
|
119
120
|
pixeltable/utils/documents.py,sha256=Q7e5U2Hk0go83MdKzD_MIiMscwbcFsLMgRw2IU_vQF4,2213
|
|
120
121
|
pixeltable/utils/filecache.py,sha256=UoNONG2VaAc2IBB0e3sQdsvyOPOes2XSDc5_CsA4qek,7839
|
|
122
|
+
pixeltable/utils/formatter.py,sha256=2nAEXehP4FZQq2qzQcEJy97seRYubTuLBSrL_unRFLo,9239
|
|
121
123
|
pixeltable/utils/help.py,sha256=cCnxJ4VP9MJ57iDqExmnDcM-JG3a1lw_q7g-D7bpSVI,252
|
|
122
124
|
pixeltable/utils/http_server.py,sha256=WQ5ILMzlz4TlwI9j5YqAPgEZyhrN1GytMNDbLD9occk,2422
|
|
123
125
|
pixeltable/utils/media_store.py,sha256=x71wnJDZDHcdd13VCfL4AkHQ6IJB41gNA-zBvXJwFos,3116
|
|
@@ -125,7 +127,7 @@ pixeltable/utils/pytorch.py,sha256=BR4tgfUWw-2rwWTOgzXj5qdMBpe1Arpp5SK4ax6jjpk,3
|
|
|
125
127
|
pixeltable/utils/s3.py,sha256=rkanuhk9DWvSfmbOLQW1j1Iov4sl2KhxGGKN-AJ8LSE,432
|
|
126
128
|
pixeltable/utils/sql.py,sha256=5n5_OmXAGtqFdL6z5XvgnU-vlx6Ba6f1WJrO1ZwUle8,765
|
|
127
129
|
pixeltable/utils/transactional_directory.py,sha256=UGzCrGtLR3hEEf8sYGuWBzLVFAEQml3vdIavigWeTBM,1349
|
|
128
|
-
pixeltable-0.2.
|
|
129
|
-
pixeltable-0.2.
|
|
130
|
-
pixeltable-0.2.
|
|
131
|
-
pixeltable-0.2.
|
|
130
|
+
pixeltable-0.2.12.dist-info/LICENSE,sha256=0UNMmwuqWPC0xDY1NWMm4uNJ2_MyA1pnTNRgQTvuBiQ,746
|
|
131
|
+
pixeltable-0.2.12.dist-info/METADATA,sha256=oVeTMu4HQQFxqj4AWPpiZiNPs9O5IUzxlBBHazAInJ0,9820
|
|
132
|
+
pixeltable-0.2.12.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
133
|
+
pixeltable-0.2.12.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|