pixeltable 0.4.0rc3__py3-none-any.whl → 0.4.2__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 +1 -1
- pixeltable/__version__.py +2 -2
- pixeltable/catalog/__init__.py +11 -2
- pixeltable/catalog/catalog.py +407 -119
- pixeltable/catalog/column.py +38 -26
- pixeltable/catalog/globals.py +130 -15
- pixeltable/catalog/insertable_table.py +10 -9
- pixeltable/catalog/schema_object.py +6 -0
- pixeltable/catalog/table.py +245 -119
- pixeltable/catalog/table_version.py +142 -116
- pixeltable/catalog/table_version_handle.py +30 -2
- pixeltable/catalog/table_version_path.py +28 -4
- pixeltable/catalog/view.py +14 -20
- pixeltable/config.py +4 -0
- pixeltable/dataframe.py +10 -9
- pixeltable/env.py +5 -11
- pixeltable/exceptions.py +6 -0
- pixeltable/exec/exec_node.py +2 -0
- pixeltable/exec/expr_eval/expr_eval_node.py +4 -4
- pixeltable/exec/sql_node.py +47 -30
- pixeltable/exprs/column_property_ref.py +2 -10
- pixeltable/exprs/column_ref.py +24 -21
- pixeltable/exprs/data_row.py +9 -0
- pixeltable/exprs/expr.py +4 -4
- pixeltable/exprs/row_builder.py +44 -13
- pixeltable/func/__init__.py +1 -0
- pixeltable/func/mcp.py +74 -0
- pixeltable/func/query_template_function.py +4 -2
- pixeltable/func/tools.py +12 -2
- pixeltable/func/udf.py +2 -2
- pixeltable/functions/__init__.py +1 -0
- pixeltable/functions/groq.py +108 -0
- pixeltable/functions/huggingface.py +8 -6
- pixeltable/functions/mistralai.py +2 -13
- pixeltable/functions/openai.py +1 -6
- pixeltable/functions/replicate.py +2 -2
- pixeltable/functions/util.py +6 -1
- pixeltable/globals.py +0 -2
- pixeltable/io/external_store.py +81 -54
- pixeltable/io/globals.py +1 -1
- pixeltable/io/label_studio.py +49 -45
- pixeltable/io/table_data_conduit.py +1 -1
- pixeltable/metadata/__init__.py +1 -1
- pixeltable/metadata/converters/convert_37.py +15 -0
- pixeltable/metadata/converters/convert_38.py +39 -0
- pixeltable/metadata/notes.py +2 -0
- pixeltable/metadata/schema.py +5 -0
- pixeltable/metadata/utils.py +78 -0
- pixeltable/plan.py +59 -139
- pixeltable/share/packager.py +2 -2
- pixeltable/store.py +114 -103
- pixeltable/type_system.py +30 -0
- {pixeltable-0.4.0rc3.dist-info → pixeltable-0.4.2.dist-info}/METADATA +1 -1
- {pixeltable-0.4.0rc3.dist-info → pixeltable-0.4.2.dist-info}/RECORD +57 -53
- pixeltable/utils/sample.py +0 -25
- {pixeltable-0.4.0rc3.dist-info → pixeltable-0.4.2.dist-info}/LICENSE +0 -0
- {pixeltable-0.4.0rc3.dist-info → pixeltable-0.4.2.dist-info}/WHEEL +0 -0
- {pixeltable-0.4.0rc3.dist-info → pixeltable-0.4.2.dist-info}/entry_points.txt +0 -0
pixeltable/store.py
CHANGED
|
@@ -7,13 +7,14 @@ import sys
|
|
|
7
7
|
import urllib.parse
|
|
8
8
|
import urllib.request
|
|
9
9
|
import warnings
|
|
10
|
-
from typing import Any, Iterable, Iterator,
|
|
10
|
+
from typing import Any, Iterable, Iterator, Optional, Union
|
|
11
11
|
|
|
12
12
|
import more_itertools
|
|
13
13
|
import sqlalchemy as sql
|
|
14
14
|
from tqdm import TqdmWarning, tqdm
|
|
15
15
|
|
|
16
|
-
from pixeltable import catalog, exceptions as excs
|
|
16
|
+
from pixeltable import catalog, exceptions as excs
|
|
17
|
+
from pixeltable.catalog import RowCountStats, UpdateStatus
|
|
17
18
|
from pixeltable.env import Env
|
|
18
19
|
from pixeltable.exec import ExecNode
|
|
19
20
|
from pixeltable.metadata import schema
|
|
@@ -41,7 +42,10 @@ class StoreBase:
|
|
|
41
42
|
v_max_col: sql.Column
|
|
42
43
|
base: Optional[StoreBase]
|
|
43
44
|
|
|
44
|
-
|
|
45
|
+
# In my cursory experiments this was the optimal batch size: it was an improvement over 5_000 and there was no real
|
|
46
|
+
# benefit to going higher.
|
|
47
|
+
# TODO: Perform more rigorous experiments with different table structures and OS environments to refine this.
|
|
48
|
+
__INSERT_BATCH_SIZE = 10_000
|
|
45
49
|
|
|
46
50
|
def __init__(self, tbl_version: catalog.TableVersion):
|
|
47
51
|
self.tbl_version = catalog.TableVersionHandle(
|
|
@@ -124,13 +128,14 @@ class StoreBase:
|
|
|
124
128
|
|
|
125
129
|
def _move_tmp_media_file(self, file_url: Optional[str], col: catalog.Column, v_min: int) -> str:
|
|
126
130
|
"""Move tmp media file with given url to Env.media_dir and return new url, or given url if not a tmp_dir file"""
|
|
127
|
-
pxt_tmp_dir = str(Env.get().tmp_dir)
|
|
128
131
|
if file_url is None:
|
|
129
132
|
return None
|
|
133
|
+
assert isinstance(file_url, str), type(file_url)
|
|
134
|
+
pxt_tmp_dir = str(Env.get().tmp_dir)
|
|
130
135
|
parsed = urllib.parse.urlparse(file_url)
|
|
131
136
|
# We should never be passed a local file path here. The "len > 1" ensures that Windows
|
|
132
137
|
# file paths aren't mistaken for URLs with a single-character scheme.
|
|
133
|
-
assert len(parsed.scheme) > 1
|
|
138
|
+
assert len(parsed.scheme) > 1, file_url
|
|
134
139
|
if parsed.scheme != 'file':
|
|
135
140
|
# remote url
|
|
136
141
|
return file_url
|
|
@@ -145,27 +150,11 @@ class StoreBase:
|
|
|
145
150
|
return new_file_url
|
|
146
151
|
|
|
147
152
|
def _move_tmp_media_files(
|
|
148
|
-
self,
|
|
153
|
+
self, table_row: list[Any], media_cols_by_sql_idx: dict[int, catalog.Column], v_min: int
|
|
149
154
|
) -> None:
|
|
150
155
|
"""Move tmp media files that we generated to a permanent location"""
|
|
151
|
-
for
|
|
152
|
-
|
|
153
|
-
file_url = table_row[c.store_name()]
|
|
154
|
-
table_row[c.store_name()] = self._move_tmp_media_file(file_url, c, v_min)
|
|
155
|
-
|
|
156
|
-
def _create_table_row(
|
|
157
|
-
self, input_row: exprs.DataRow, row_builder: exprs.RowBuilder, exc_col_ids: set[int], pk: tuple[int, ...]
|
|
158
|
-
) -> tuple[dict[str, Any], int]:
|
|
159
|
-
"""Return Tuple[complete table row, # of exceptions] for insert()
|
|
160
|
-
Creates a row that includes the PK columns, with the values from input_row.pk.
|
|
161
|
-
Returns:
|
|
162
|
-
Tuple[complete table row, # of exceptions]
|
|
163
|
-
"""
|
|
164
|
-
table_row, num_excs = row_builder.create_table_row(input_row, exc_col_ids)
|
|
165
|
-
assert len(pk) == len(self._pk_cols)
|
|
166
|
-
for pk_col, pk_val in zip(self._pk_cols, pk):
|
|
167
|
-
table_row[pk_col.name] = pk_val
|
|
168
|
-
return table_row, num_excs
|
|
156
|
+
for n, col in media_cols_by_sql_idx.items():
|
|
157
|
+
table_row[n] = self._move_tmp_media_file(table_row[n], col, v_min)
|
|
169
158
|
|
|
170
159
|
def count(self) -> int:
|
|
171
160
|
"""Return the number of rows visible in self.tbl_version"""
|
|
@@ -231,9 +220,7 @@ class StoreBase:
|
|
|
231
220
|
if col.store_name() not in existing_cols:
|
|
232
221
|
self.add_column(col)
|
|
233
222
|
|
|
234
|
-
def load_column(
|
|
235
|
-
self, col: catalog.Column, exec_plan: ExecNode, value_expr_slot_idx: int, on_error: Literal['abort', 'ignore']
|
|
236
|
-
) -> int:
|
|
223
|
+
def load_column(self, col: catalog.Column, exec_plan: ExecNode, abort_on_exc: bool) -> int:
|
|
237
224
|
"""Update store column of a computed column with values produced by an execution plan
|
|
238
225
|
|
|
239
226
|
Returns:
|
|
@@ -247,60 +234,51 @@ class StoreBase:
|
|
|
247
234
|
num_rows = 0
|
|
248
235
|
# create temp table to store output of exec_plan, with the same primary key as the store table
|
|
249
236
|
tmp_name = f'temp_{self._storage_name()}'
|
|
250
|
-
tmp_pk_cols =
|
|
251
|
-
|
|
237
|
+
tmp_pk_cols = tuple(sql.Column(col.name, col.type, primary_key=True) for col in self.pk_columns())
|
|
238
|
+
tmp_val_col_sql_idx = len(tmp_pk_cols)
|
|
252
239
|
tmp_val_col = sql.Column(col.sa_col.name, col.sa_col.type)
|
|
253
|
-
tmp_cols
|
|
240
|
+
tmp_cols = [*tmp_pk_cols, tmp_val_col]
|
|
254
241
|
# add error columns if the store column records errors
|
|
255
242
|
if col.records_errors:
|
|
256
243
|
tmp_errortype_col = sql.Column(col.sa_errortype_col.name, col.sa_errortype_col.type)
|
|
257
|
-
tmp_cols.append(tmp_errortype_col)
|
|
258
244
|
tmp_errormsg_col = sql.Column(col.sa_errormsg_col.name, col.sa_errormsg_col.type)
|
|
259
|
-
tmp_cols.
|
|
245
|
+
tmp_cols.extend((tmp_errortype_col, tmp_errormsg_col))
|
|
246
|
+
tmp_col_names = [col.name for col in tmp_cols]
|
|
247
|
+
|
|
260
248
|
tmp_tbl = sql.Table(tmp_name, self.sa_md, *tmp_cols, prefixes=['TEMPORARY'])
|
|
261
249
|
conn = Env.get().conn
|
|
262
250
|
tmp_tbl.create(bind=conn)
|
|
263
251
|
|
|
252
|
+
row_builder = exec_plan.row_builder
|
|
253
|
+
|
|
264
254
|
try:
|
|
255
|
+
table_rows: list[tuple[Any]] = []
|
|
256
|
+
|
|
265
257
|
# insert rows from exec_plan into temp table
|
|
266
|
-
# TODO: unify the table row construction logic with RowBuilder.create_table_row()
|
|
267
258
|
for row_batch in exec_plan:
|
|
268
259
|
num_rows += len(row_batch)
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
# we have yet to store this image
|
|
292
|
-
filepath = str(MediaStore.prepare_media_path(col.tbl.id, col.id, col.tbl.version))
|
|
293
|
-
result_row.flush_img(value_expr_slot_idx, filepath)
|
|
294
|
-
val = result_row.get_stored_val(value_expr_slot_idx, col.sa_col.type)
|
|
295
|
-
if col.col_type.is_media_type():
|
|
296
|
-
val = self._move_tmp_media_file(val, col, result_row.pk[-1])
|
|
297
|
-
tbl_row[col.sa_col.name] = val
|
|
298
|
-
if col.records_errors:
|
|
299
|
-
tbl_row[col.sa_errortype_col.name] = None
|
|
300
|
-
tbl_row[col.sa_errormsg_col.name] = None
|
|
301
|
-
|
|
302
|
-
tbl_rows.append(tbl_row)
|
|
303
|
-
conn.execute(sql.insert(tmp_tbl), tbl_rows)
|
|
260
|
+
batch_table_rows: list[tuple[Any]] = []
|
|
261
|
+
|
|
262
|
+
for row in row_batch:
|
|
263
|
+
if abort_on_exc and row.has_exc():
|
|
264
|
+
exc = row.get_first_exc()
|
|
265
|
+
raise excs.Error(f'Error while evaluating computed column {col.name!r}:\n{exc}') from exc
|
|
266
|
+
table_row, num_row_exc = row_builder.create_table_row(row, None, row.pk)
|
|
267
|
+
if col.col_type.is_media_type():
|
|
268
|
+
table_row[tmp_val_col_sql_idx] = self._move_tmp_media_file(
|
|
269
|
+
table_row[tmp_val_col_sql_idx], col, row.pk[-1]
|
|
270
|
+
)
|
|
271
|
+
num_excs += num_row_exc
|
|
272
|
+
batch_table_rows.append(tuple(table_row))
|
|
273
|
+
|
|
274
|
+
table_rows.extend(batch_table_rows)
|
|
275
|
+
|
|
276
|
+
if len(table_rows) >= self.__INSERT_BATCH_SIZE:
|
|
277
|
+
self.sql_insert(tmp_tbl, tmp_col_names, table_rows)
|
|
278
|
+
table_rows.clear()
|
|
279
|
+
|
|
280
|
+
if len(table_rows) > 0:
|
|
281
|
+
self.sql_insert(tmp_tbl, tmp_col_names, table_rows)
|
|
304
282
|
|
|
305
283
|
# update store table with values from temp table
|
|
306
284
|
update_stmt = sql.update(self.sa_tbl)
|
|
@@ -313,6 +291,7 @@ class StoreBase:
|
|
|
313
291
|
)
|
|
314
292
|
log_explain(_logger, update_stmt, conn)
|
|
315
293
|
conn.execute(update_stmt)
|
|
294
|
+
|
|
316
295
|
finally:
|
|
317
296
|
|
|
318
297
|
def remove_tmp_tbl() -> None:
|
|
@@ -320,6 +299,7 @@ class StoreBase:
|
|
|
320
299
|
tmp_tbl.drop(bind=conn)
|
|
321
300
|
|
|
322
301
|
run_cleanup(remove_tmp_tbl, raise_error=True)
|
|
302
|
+
|
|
323
303
|
return num_excs
|
|
324
304
|
|
|
325
305
|
def insert_rows(
|
|
@@ -329,7 +309,7 @@ class StoreBase:
|
|
|
329
309
|
show_progress: bool = True,
|
|
330
310
|
rowids: Optional[Iterator[int]] = None,
|
|
331
311
|
abort_on_exc: bool = False,
|
|
332
|
-
) -> tuple[
|
|
312
|
+
) -> tuple[set[int], UpdateStatus]:
|
|
333
313
|
"""Insert rows into the store table and update the catalog table's md
|
|
334
314
|
Returns:
|
|
335
315
|
number of inserted rows, number of exceptions, set of column ids that have exceptions
|
|
@@ -341,50 +321,81 @@ class StoreBase:
|
|
|
341
321
|
cols_with_excs: set[int] = set()
|
|
342
322
|
progress_bar: Optional[tqdm] = None # create this only after we started executing
|
|
343
323
|
row_builder = exec_plan.row_builder
|
|
344
|
-
|
|
345
|
-
|
|
324
|
+
|
|
325
|
+
store_col_names, media_cols_by_idx = row_builder.store_column_names()
|
|
346
326
|
|
|
347
327
|
try:
|
|
328
|
+
table_rows: list[tuple[Any]] = []
|
|
348
329
|
exec_plan.open()
|
|
330
|
+
|
|
349
331
|
for row_batch in exec_plan:
|
|
350
332
|
num_rows += len(row_batch)
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
333
|
+
batch_table_rows: list[tuple[Any]] = []
|
|
334
|
+
|
|
335
|
+
# compute batch of rows and convert them into table rows
|
|
336
|
+
for row in row_batch:
|
|
337
|
+
# if abort_on_exc == True, we need to check for media validation exceptions
|
|
338
|
+
if abort_on_exc and row.has_exc():
|
|
339
|
+
exc = row.get_first_exc()
|
|
340
|
+
raise exc
|
|
341
|
+
|
|
342
|
+
rowid = (next(rowids),) if rowids is not None else row.pk[:-1]
|
|
343
|
+
pk = (*rowid, v_min)
|
|
344
|
+
assert len(pk) == len(self._pk_cols)
|
|
345
|
+
table_row, num_row_exc = row_builder.create_table_row(row, cols_with_excs, pk)
|
|
346
|
+
num_excs += num_row_exc
|
|
347
|
+
|
|
348
|
+
if show_progress:
|
|
349
|
+
if progress_bar is None:
|
|
350
|
+
warnings.simplefilter('ignore', category=TqdmWarning)
|
|
351
|
+
progress_bar = tqdm(
|
|
352
|
+
desc=f'Inserting rows into `{self.tbl_version.get().name}`',
|
|
353
|
+
unit=' rows',
|
|
354
|
+
ncols=100,
|
|
355
|
+
file=sys.stdout,
|
|
356
|
+
)
|
|
357
|
+
progress_bar.update(1)
|
|
358
|
+
|
|
359
|
+
self._move_tmp_media_files(table_row, media_cols_by_idx, v_min)
|
|
360
|
+
batch_table_rows.append(tuple(table_row))
|
|
361
|
+
|
|
362
|
+
table_rows.extend(batch_table_rows)
|
|
363
|
+
|
|
364
|
+
# if a batch is ready for insertion into the database, insert it
|
|
365
|
+
if len(table_rows) >= self.__INSERT_BATCH_SIZE:
|
|
366
|
+
self.sql_insert(self.sa_tbl, store_col_names, table_rows)
|
|
367
|
+
table_rows.clear()
|
|
368
|
+
|
|
369
|
+
# insert any remaining rows
|
|
370
|
+
if len(table_rows) > 0:
|
|
371
|
+
self.sql_insert(self.sa_tbl, store_col_names, table_rows)
|
|
372
|
+
|
|
382
373
|
if progress_bar is not None:
|
|
383
374
|
progress_bar.close()
|
|
384
|
-
|
|
375
|
+
computed_values = exec_plan.ctx.num_computed_exprs * num_rows
|
|
376
|
+
row_counts = RowCountStats(
|
|
377
|
+
ins_rows=num_rows, num_excs=num_excs, computed_values=computed_values
|
|
378
|
+
) # insert (StoreBase)
|
|
379
|
+
|
|
380
|
+
return cols_with_excs, UpdateStatus(row_count_stats=row_counts)
|
|
381
|
+
|
|
385
382
|
finally:
|
|
386
383
|
exec_plan.close()
|
|
387
384
|
|
|
385
|
+
@classmethod
|
|
386
|
+
def sql_insert(cls, sa_tbl: sql.Table, store_col_names: list[str], table_rows: list[tuple[Any]]) -> None:
|
|
387
|
+
assert len(table_rows) > 0
|
|
388
|
+
conn = Env.get().conn
|
|
389
|
+
conn.execute(sql.insert(sa_tbl), [dict(zip(store_col_names, table_row)) for table_row in table_rows])
|
|
390
|
+
|
|
391
|
+
# TODO: Inserting directly via psycopg delivers a small performance benefit, but is somewhat fraught due to
|
|
392
|
+
# differences in the data representation that SQLAlchemy/psycopg expect. The below code will do the
|
|
393
|
+
# insertion in psycopg and can be used if/when we decide to pursue that optimization.
|
|
394
|
+
# col_names_str = ", ".join(store_col_names)
|
|
395
|
+
# placeholders_str = ", ".join('%s' for _ in store_col_names)
|
|
396
|
+
# stmt_text = f'INSERT INTO {self.sa_tbl.name} ({col_names_str}) VALUES ({placeholders_str})'
|
|
397
|
+
# conn.exec_driver_sql(stmt_text, table_rows)
|
|
398
|
+
|
|
388
399
|
def _versions_clause(self, versions: list[Optional[int]], match_on_vmin: bool) -> sql.ColumnElement[bool]:
|
|
389
400
|
"""Return filter for base versions"""
|
|
390
401
|
v = versions[0]
|
pixeltable/type_system.py
CHANGED
|
@@ -395,6 +395,36 @@ class ColumnType:
|
|
|
395
395
|
raise excs.Error(f'Standard Python type `{name}` cannot be used here; use `{suggestion}` instead')
|
|
396
396
|
raise excs.Error(f'Unknown type: {t}')
|
|
397
397
|
|
|
398
|
+
@classmethod
|
|
399
|
+
def from_json_schema(cls, schema: dict[str, Any]) -> Optional[ColumnType]:
|
|
400
|
+
# We first express the JSON schema as a Python type, and then convert it to a Pixeltable type.
|
|
401
|
+
# TODO: Is there a meaningful fallback if one of these operations fails? (Maybe another use case for a pxt Any
|
|
402
|
+
# type?)
|
|
403
|
+
py_type = cls.__json_schema_to_py_type(schema)
|
|
404
|
+
return cls.from_python_type(py_type) if py_type is not None else None
|
|
405
|
+
|
|
406
|
+
@classmethod
|
|
407
|
+
def __json_schema_to_py_type(cls, schema: dict[str, Any]) -> Union[type, _GenericAlias, None]:
|
|
408
|
+
if 'type' in schema:
|
|
409
|
+
if schema['type'] == 'null':
|
|
410
|
+
return type(None)
|
|
411
|
+
if schema['type'] == 'string':
|
|
412
|
+
return str
|
|
413
|
+
if schema['type'] == 'integer':
|
|
414
|
+
return int
|
|
415
|
+
if schema['type'] == 'number':
|
|
416
|
+
return float
|
|
417
|
+
if schema['type'] == 'boolean':
|
|
418
|
+
return bool
|
|
419
|
+
if schema['type'] in ('array', 'object'):
|
|
420
|
+
return list
|
|
421
|
+
elif 'anyOf' in schema:
|
|
422
|
+
subscripts = tuple(cls.__json_schema_to_py_type(subschema) for subschema in schema['anyOf'])
|
|
423
|
+
if all(subscript is not None for subscript in subscripts):
|
|
424
|
+
return Union[subscripts]
|
|
425
|
+
|
|
426
|
+
return None
|
|
427
|
+
|
|
398
428
|
def validate_literal(self, val: Any) -> None:
|
|
399
429
|
"""Raise TypeError if val is not a valid literal for this type"""
|
|
400
430
|
if val is None:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pixeltable
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: AI Data Infrastructure: Declarative, Multimodal, and Incremental
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Keywords: data-science,machine-learning,database,ai,computer-vision,chatbot,ml,artificial-intelligence,feature-engineering,multimodal,mlops,feature-store,vector-database,llm,genai
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
pixeltable/__init__.py,sha256
|
|
2
|
-
pixeltable/__version__.py,sha256=
|
|
3
|
-
pixeltable/catalog/__init__.py,sha256=
|
|
4
|
-
pixeltable/catalog/catalog.py,sha256=
|
|
5
|
-
pixeltable/catalog/column.py,sha256=
|
|
1
|
+
pixeltable/__init__.py,sha256=WHZxJNz7vYcx_z3ebEg-RF22lJmlkfeqF2gv6mnrM1A,1449
|
|
2
|
+
pixeltable/__version__.py,sha256=Tmdd4CrKsWN9gJkcXq-VR-egqtuKLYkyRkraXpi-2Kk,112
|
|
3
|
+
pixeltable/catalog/__init__.py,sha256=pI6ncW9nJadW9ht_Mt1BYiY9kNMOwGxAb6n4q1oV61w,635
|
|
4
|
+
pixeltable/catalog/catalog.py,sha256=pcZMrz9THSzjYusTlB0jTtrxOQzFT_xanONYTTpvhaU,73943
|
|
5
|
+
pixeltable/catalog/column.py,sha256=ujoVR8gxuJwqYfIVsRT14TJ9nUxuczKJBJ-q-2klHUw,11571
|
|
6
6
|
pixeltable/catalog/dir.py,sha256=HFemOf67Nfw13EOpQsR_UgzP2L1w4LDfw2009DrSK0Y,2063
|
|
7
|
-
pixeltable/catalog/globals.py,sha256=
|
|
8
|
-
pixeltable/catalog/insertable_table.py,sha256=
|
|
7
|
+
pixeltable/catalog/globals.py,sha256=_qAs5g0Uxtw8oUjCdnRlZ9-_F6E2bm4OmLYb2Fg6YiU,8470
|
|
8
|
+
pixeltable/catalog/insertable_table.py,sha256=inBrPkcu08DAsYzFkq3I53eU-j7pqmlscoTZzEdaI54,9377
|
|
9
9
|
pixeltable/catalog/named_function.py,sha256=vZ-j7P4HugWh9OmUzBMwyRYvO3tQn9jWyJz_1stPavU,1210
|
|
10
10
|
pixeltable/catalog/path.py,sha256=gk8TIlO_7Jpji5mAN0dUNvHmvU0uneTHeB_qCTWnszQ,2529
|
|
11
|
-
pixeltable/catalog/schema_object.py,sha256=
|
|
12
|
-
pixeltable/catalog/table.py,sha256=
|
|
13
|
-
pixeltable/catalog/table_version.py,sha256=
|
|
14
|
-
pixeltable/catalog/table_version_handle.py,sha256=
|
|
15
|
-
pixeltable/catalog/table_version_path.py,sha256=
|
|
16
|
-
pixeltable/catalog/view.py,sha256=
|
|
17
|
-
pixeltable/config.py,sha256=
|
|
18
|
-
pixeltable/dataframe.py,sha256=
|
|
19
|
-
pixeltable/env.py,sha256=
|
|
20
|
-
pixeltable/exceptions.py,sha256=
|
|
11
|
+
pixeltable/catalog/schema_object.py,sha256=jqOhZcI9QbT_EseDRQsVrp4pZ7jKB1wy4Sa-6aAvUCI,2004
|
|
12
|
+
pixeltable/catalog/table.py,sha256=SZohsmgrjcdOCS_xTvkZXzFPTSfHuXE3bQBsDhyFHSU,75618
|
|
13
|
+
pixeltable/catalog/table_version.py,sha256=EWB-49ce8Sm9DNaSGTxZohr2IecyzAhf9c6Bm4zQtOc,67018
|
|
14
|
+
pixeltable/catalog/table_version_handle.py,sha256=FTPRqcGY-h-POcWyZbd9b8P2D5zIw5OSUvwF_dbyCGo,3608
|
|
15
|
+
pixeltable/catalog/table_version_path.py,sha256=uRATYbAN0OXEkW1GZEC4hZulzvh8IJRwaN66ifUTJfw,9787
|
|
16
|
+
pixeltable/catalog/view.py,sha256=oo1JU5dtz3tasXZm3FkbfZqwyCc9xgdIE9hOqh5tRy4,14677
|
|
17
|
+
pixeltable/config.py,sha256=HIAyV3UGlcuQnHofKsid7wup518q_WfN6G-KB4yu_3g,4280
|
|
18
|
+
pixeltable/dataframe.py,sha256=dTpjM72Cj2cYMo0_HH2BJ6P3s9rQAF4suuL413BDyJw,60673
|
|
19
|
+
pixeltable/env.py,sha256=I8rvQQjvHB68rYCoSurR4pjn5qm6EvSwRL1CblUVPWs,35625
|
|
20
|
+
pixeltable/exceptions.py,sha256=Gm8d3TL2iiv6Pj2DLd29wp_j41qNBhxXL9iTQnL4Nk4,1116
|
|
21
21
|
pixeltable/exec/__init__.py,sha256=hQvj4ra4ubxu94qyuCBTHKsuYGzundkTTluOTIb5Bx8,524
|
|
22
22
|
pixeltable/exec/aggregation_node.py,sha256=HqzISO1nv7_DFyqjZLRkjtbDJl9fIEto1i6Kh5ru8vA,4498
|
|
23
23
|
pixeltable/exec/cache_prefetch_node.py,sha256=GOa70eJDFY3FQV3VvJOrUVI8LFvro-r-V6sh3w-eJAc,12130
|
|
24
24
|
pixeltable/exec/component_iteration_node.py,sha256=FZszWHrzsjHxCbUTwXtJIlgQqgYtvKZB6QWiDGkfIbs,4757
|
|
25
25
|
pixeltable/exec/data_row_batch.py,sha256=EAB15JRhXbWIe91x1J5N5lFiMXzjB8NGTFjZsBDSbf8,3393
|
|
26
26
|
pixeltable/exec/exec_context.py,sha256=jKeLStfkjwCKKAooC-7a7qZUnZU5O0_JQhanhVerV9c,984
|
|
27
|
-
pixeltable/exec/exec_node.py,sha256=
|
|
27
|
+
pixeltable/exec/exec_node.py,sha256=MsuCO7nCpmqfuNxTNKsz36sJVDrR-o-0-3S2FcXLwvM,4237
|
|
28
28
|
pixeltable/exec/expr_eval/__init__.py,sha256=sQThSEByK_DLfB-_-18RFhpARx49cSXYEkpCDyi0vQI,61
|
|
29
29
|
pixeltable/exec/expr_eval/evaluators.py,sha256=-6s_y29Wh8p35SVKkXtnA0NkzcHVw1Z8PgHGiFrMsqs,17135
|
|
30
|
-
pixeltable/exec/expr_eval/expr_eval_node.py,sha256=
|
|
30
|
+
pixeltable/exec/expr_eval/expr_eval_node.py,sha256=klPhvsug91GiPIHkwcTj1ympxsoj8nbNHzkzkC-NR88,18953
|
|
31
31
|
pixeltable/exec/expr_eval/globals.py,sha256=fFrj2O53TgHDfVF8dgnyn1fPLi4ZHQuylewf5aHMwYk,7752
|
|
32
32
|
pixeltable/exec/expr_eval/row_buffer.py,sha256=YY0thdlMNNReEOTyPp36xKPeMeXSZ0VrI9bJsXgo7sU,2744
|
|
33
33
|
pixeltable/exec/expr_eval/schedulers.py,sha256=tAvCQKa1q0x7y7cdnGcTGbeku8QcoKH1GkgSm8ktOnM,17000
|
|
34
34
|
pixeltable/exec/in_memory_data_node.py,sha256=vmxD2Jwn15Wjkf_3wufr35SPjb60H_I4zpUKaO1Zo_s,3592
|
|
35
35
|
pixeltable/exec/row_update_node.py,sha256=zU0eSyn81-vRrjAMOadRqU8luTshnPUtIbS7npyLBKY,2798
|
|
36
|
-
pixeltable/exec/sql_node.py,sha256=
|
|
36
|
+
pixeltable/exec/sql_node.py,sha256=cMoBGPOFVmvL3UFjCKxhU3huJu_ko0PRr55-XhbF1i0,27572
|
|
37
37
|
pixeltable/exprs/__init__.py,sha256=AxSMjKNavCT9F6vBaNR-nwX2iupAI5hbMb5hEj65Tfk,1096
|
|
38
38
|
pixeltable/exprs/arithmetic_expr.py,sha256=sZPao0qdFWbrDx0eiAVxw1wGHJXZ5ZoCpQaScysBldE,7333
|
|
39
39
|
pixeltable/exprs/array_slice.py,sha256=8Zv0E2RghdJi1Mbk0kKtOz2ccGQuXwLLb6R9v1jk7hA,2180
|
|
40
|
-
pixeltable/exprs/column_property_ref.py,sha256=
|
|
41
|
-
pixeltable/exprs/column_ref.py,sha256=
|
|
40
|
+
pixeltable/exprs/column_property_ref.py,sha256=zcp0tuW0m1czslIAo_ucGkmGAIWxeeCvWzXy1NyetgQ,3760
|
|
41
|
+
pixeltable/exprs/column_ref.py,sha256=0n6jcHeWd3dOaqrLPHQ6VjYDwgS0OMLqX3H0k60_-lE,15216
|
|
42
42
|
pixeltable/exprs/comparison.py,sha256=lgaRx000ZaNH10A4hrtsi5XoZKE-CNEONGMi7jxJfcM,5133
|
|
43
43
|
pixeltable/exprs/compound_predicate.py,sha256=vJVRVueAmaKnjiHCLWyh8wHgktzzK0DVqbOIQJgTjF8,3801
|
|
44
|
-
pixeltable/exprs/data_row.py,sha256=
|
|
45
|
-
pixeltable/exprs/expr.py,sha256=
|
|
44
|
+
pixeltable/exprs/data_row.py,sha256=4mW5Q56L53gLAX7xI0uBRW7a5Ax66Q0W9Bi-k_ZBoe8,11800
|
|
45
|
+
pixeltable/exprs/expr.py,sha256=uLEMuJzHwPW3hBIcsASnhjcPyGBkY8_8sFCqgRetKP0,36013
|
|
46
46
|
pixeltable/exprs/expr_dict.py,sha256=2ZeZ0eACx3VrRNEOjipuT5WxOIzjXQ_DSip8NTH0KRo,1584
|
|
47
47
|
pixeltable/exprs/expr_set.py,sha256=OlRTbHAAYH2fOEs1HE-8DIu7Z247xVfoT_9Y58GZoOQ,2559
|
|
48
48
|
pixeltable/exprs/function_call.py,sha256=_PxrEACVyiihdQdmTiiSv5WkZfOXSQFcGO18wPueM_Y,21989
|
|
@@ -55,7 +55,7 @@ pixeltable/exprs/json_path.py,sha256=sFuDjfz8_rlea4TKd68CS4pQTUiLDi68YwsgcQRHffI
|
|
|
55
55
|
pixeltable/exprs/literal.py,sha256=OCJL_pw_WKqx3bXMEwL6yNaKVAKDtGRzSZUFwucRxZI,4860
|
|
56
56
|
pixeltable/exprs/method_ref.py,sha256=NNhJTGo7luZLh8EJdFIZAax9LiiqqDCEK1AwPmHip0w,2642
|
|
57
57
|
pixeltable/exprs/object_ref.py,sha256=idYFcT27jv0BjtJT3paL37xDrZZc35_3eCJyQOIqdZU,1999
|
|
58
|
-
pixeltable/exprs/row_builder.py,sha256=
|
|
58
|
+
pixeltable/exprs/row_builder.py,sha256=90pYDuHd1fbaqbriYwl9iz3ciilbUAg_dq7M3lRq1j4,22334
|
|
59
59
|
pixeltable/exprs/rowid_ref.py,sha256=SCPsDx3R55wtK-ND2xQQdV823RdeTF5HTcQ76e40NOE,5186
|
|
60
60
|
pixeltable/exprs/similarity_expr.py,sha256=i0UUnMSKKGXd3Uksu6FU2NvkfG0qzfzfi-GPy-LdutM,3688
|
|
61
61
|
pixeltable/exprs/sql_element_cache.py,sha256=c7Q6vFK4xnf9vmcRYnXiAcwPBBwmw0dolftM4BwDO8c,1359
|
|
@@ -66,18 +66,19 @@ pixeltable/ext/__init__.py,sha256=UgDXWzGWiQIrwOuEvWTePLBcR2kecllPAE7gp-42Awg,45
|
|
|
66
66
|
pixeltable/ext/functions/__init__.py,sha256=Ox3kUHn5IslVEmEKsjrHfkHDrUkmLl9RCO2YkrPJkgc,193
|
|
67
67
|
pixeltable/ext/functions/whisperx.py,sha256=qda6kFQSvZTY2asfrYPwHb1cvSa03LbhJ-Wf9b7qPhw,2355
|
|
68
68
|
pixeltable/ext/functions/yolox.py,sha256=dX22nMb-0n2hZi7WhZ1Y4LIpFk5loyeXXuSUcc2Fgrg,3724
|
|
69
|
-
pixeltable/func/__init__.py,sha256=
|
|
69
|
+
pixeltable/func/__init__.py,sha256=SQPtGr_9dZNyXzxaZQcP3oVLKnbbs4UqV6sg8XUQHxQ,535
|
|
70
70
|
pixeltable/func/aggregate_function.py,sha256=5_MgqHAlMaacX2sPIHv_auTvYXtqR5MIZy_WqYQSdho,13264
|
|
71
71
|
pixeltable/func/callable_function.py,sha256=g_pA-g631YcFGLix9PpHYfgjOeS2qF0Csm1VxX8fah0,9278
|
|
72
72
|
pixeltable/func/expr_template_function.py,sha256=wEidKrOBTZkA3U1PAtG6-6RlDFiiRJszIG4zNOuPcNY,5940
|
|
73
73
|
pixeltable/func/function.py,sha256=w1U3j8XNeE4ZZ-rKuG13aTa8YGFkWAXjalh4j29_-e4,23136
|
|
74
74
|
pixeltable/func/function_registry.py,sha256=7AQ1bdF2DJbTRn9xx6s5cC_VHtCBXGt_GyJJEjJHcMw,12308
|
|
75
75
|
pixeltable/func/globals.py,sha256=5Wo4GPxYgHRRk5nvV0h_lAthKSalxKvj5n1p-uMPR0U,1501
|
|
76
|
-
pixeltable/func/
|
|
76
|
+
pixeltable/func/mcp.py,sha256=P9M2w8cm7ad-XmAcf2ZThfWmD8W46De1spwX98bZL4Y,2861
|
|
77
|
+
pixeltable/func/query_template_function.py,sha256=0wCcU06bv9KKJRlOsoLg8-vVNSLIYpKDCdYkUV7WShY,8040
|
|
77
78
|
pixeltable/func/signature.py,sha256=0PI6xdhLgwy9-GMkzkm7GlsBnsNMiS9aoNI9LWXwvN0,13700
|
|
78
|
-
pixeltable/func/tools.py,sha256=
|
|
79
|
-
pixeltable/func/udf.py,sha256=
|
|
80
|
-
pixeltable/functions/__init__.py,sha256=
|
|
79
|
+
pixeltable/func/tools.py,sha256=hKmQFvfpBvtLcItPRpqAmqt_tDg6latwyfv5FXBofBc,6074
|
|
80
|
+
pixeltable/func/udf.py,sha256=6tKpMt37t3BmXwRyA5fFAd6OM4D5EPEd2KuAr7DQhr0,13231
|
|
81
|
+
pixeltable/functions/__init__.py,sha256=Akk6Nk-rpz2D_V4kJTfyP56xnNbCz3EtxVAuwLoiysA,588
|
|
81
82
|
pixeltable/functions/anthropic.py,sha256=G2E0sH5vP933eZZxhz1tOByy5cg6N2XPvhSqIBzqufo,8782
|
|
82
83
|
pixeltable/functions/audio.py,sha256=7bsm4igQEW7RYSrSevwqaUOqyEnvBbPbJ8c-VknDl1E,657
|
|
83
84
|
pixeltable/functions/bedrock.py,sha256=lTCFHjYunF3minBGWcjXR90yJ8resFjXr4niyKhfxms,4217
|
|
@@ -86,37 +87,38 @@ pixeltable/functions/deepseek.py,sha256=IAo2e_DhkM0A5NrskxuPQUGYzIYAl4do_mdO1Qc3
|
|
|
86
87
|
pixeltable/functions/fireworks.py,sha256=q7eWlYfiWbA0d9r3CB_NAe1fw3q-Z7qsw2gyGJNgWLQ,4786
|
|
87
88
|
pixeltable/functions/gemini.py,sha256=ZsbySkoMdOgZEUfFUccDbIdrbLb6DGRxzD88fHW-cRI,8317
|
|
88
89
|
pixeltable/functions/globals.py,sha256=ZXBV2LPXT2-yQYHHE7q8N1WdAr0WxiIO1ax0qwxhmK8,5118
|
|
89
|
-
pixeltable/functions/
|
|
90
|
+
pixeltable/functions/groq.py,sha256=FpR_LJpfZfzyhEvoBMMbQpQ-VQSRzBsS9U21qaINwww,3593
|
|
91
|
+
pixeltable/functions/huggingface.py,sha256=cJyf86qMcvivkGGNduNHAvh_idI-e4wJm0Zje1KJ2vQ,20611
|
|
90
92
|
pixeltable/functions/image.py,sha256=IKXljMma-uU88efptC3F4aywau7DYcD-Nqd3YpmRNRw,13971
|
|
91
93
|
pixeltable/functions/json.py,sha256=d7-AvwytUQtQYF_JnWJkptT_Yq0NgMpWfVk-m3U6qTY,807
|
|
92
94
|
pixeltable/functions/llama_cpp.py,sha256=1QB4vQ7J4Za1mL93bRIBXgokNtpzzYr_QU6KF27i9xo,3919
|
|
93
95
|
pixeltable/functions/math.py,sha256=eZEFjXxNHDHjcCsOMhzfNbJthTsmtNxtSFV8AEeRIfM,4979
|
|
94
|
-
pixeltable/functions/mistralai.py,sha256=
|
|
96
|
+
pixeltable/functions/mistralai.py,sha256=Fk52mfWUfxVy-yCxhH6wrGS7nLLSiOOrWxbTkkiQ-O8,5542
|
|
95
97
|
pixeltable/functions/ollama.py,sha256=4-6h9Foq_7Ut7JtEHGkeg1KbuKaFywSuMrKiw0xAyCA,4231
|
|
96
|
-
pixeltable/functions/openai.py,sha256=
|
|
97
|
-
pixeltable/functions/replicate.py,sha256=
|
|
98
|
+
pixeltable/functions/openai.py,sha256=SxhYrL3vgIfjzwCPnjR6yoaNr7BbFwpGy7Su1FSY7G4,27713
|
|
99
|
+
pixeltable/functions/replicate.py,sha256=sPvRGr0j0kCDc6Vz3mPUioFflApijukvZWJJUO2bqIQ,2429
|
|
98
100
|
pixeltable/functions/string.py,sha256=LdBNOna5PUSPmM5VlJ_qhmwzyFhumW0k6Dvx2rXSZtc,25356
|
|
99
101
|
pixeltable/functions/timestamp.py,sha256=0zp4urJagCcNLfJE0ltTCft-J9qs2C716TmRngKYaa0,9171
|
|
100
102
|
pixeltable/functions/together.py,sha256=A8J19BXywyWQ6a2_n05-8uIG5jquOBGqPmW3mb-NrIc,8842
|
|
101
|
-
pixeltable/functions/util.py,sha256=
|
|
103
|
+
pixeltable/functions/util.py,sha256=uQNkyBSkTVMe1wbUI2Q0nz-mM3qPVTF86yK8c9OFIcE,954
|
|
102
104
|
pixeltable/functions/video.py,sha256=jS4YhMofD448YhGtI6ZXBAkeGw_AYYQTN0AbgHh_hok,6933
|
|
103
105
|
pixeltable/functions/vision.py,sha256=_a0wY3akkVhWnnxlq__1VzSLylytlNadpNOOPOwSfLk,15393
|
|
104
106
|
pixeltable/functions/whisper.py,sha256=c9E6trhc2UcShVaGaEBCUEpArke1ql3MV5We0qSgmuU,2960
|
|
105
|
-
pixeltable/globals.py,sha256=
|
|
107
|
+
pixeltable/globals.py,sha256=cQUzDiYzDftRhX1jwi1hi6OYx0zlDAMr04nShq75Knk,32226
|
|
106
108
|
pixeltable/index/__init__.py,sha256=97aFuxiP_oz1ldn5iq8IWApkOV8XG6ZIBW5-9rkS0vM,122
|
|
107
109
|
pixeltable/index/base.py,sha256=200s7v3Zy810bRlbSAYzxxaEjVssl6r8esTHiSvWRwQ,1704
|
|
108
110
|
pixeltable/index/btree.py,sha256=8B06D67ay0DFUtEBC5q4bLjxMq7ILpKyyoLAiSaamzA,2503
|
|
109
111
|
pixeltable/index/embedding_index.py,sha256=B_k_3UJmSv7t2ljUg8GC_D4t1jc03PVsTAvxqiTmHBA,11754
|
|
110
112
|
pixeltable/io/__init__.py,sha256=Yjq13pBCBoaZv-OkIY2XSusVOC5b6cB5C6NbgJq5H1g,620
|
|
111
113
|
pixeltable/io/datarows.py,sha256=p1UGxQOTjqI6kgQNAa3aj8TkylcNDtaGBTorOg_Pk84,6088
|
|
112
|
-
pixeltable/io/external_store.py,sha256=
|
|
114
|
+
pixeltable/io/external_store.py,sha256=cs-_pbRpINTpVMoMRmaoHdYjrjoW--6MyYAG7aF_Efc,16515
|
|
113
115
|
pixeltable/io/fiftyone.py,sha256=v0r28bIk2I0TRP5DfVHtBIUa4DpIJDK5sgExxOmHZ_w,6882
|
|
114
|
-
pixeltable/io/globals.py,sha256=
|
|
116
|
+
pixeltable/io/globals.py,sha256=hxiwdCrRMGZ0IMPtleVkiqnthwHG-oemDV10Kf1Lbnk,11362
|
|
115
117
|
pixeltable/io/hf_datasets.py,sha256=gWyBH_0iFvxcrrxMY9_W399ZRcNDCmWFOAMmb1apnY0,5246
|
|
116
|
-
pixeltable/io/label_studio.py,sha256=
|
|
118
|
+
pixeltable/io/label_studio.py,sha256=rcsOp45c5CyY5ArkKJz_jyE40edpFPgU_8ZDaV2UrgQ,31423
|
|
117
119
|
pixeltable/io/pandas.py,sha256=AbOeRDlA4MvUvianSKixsU-x-64nasPWw4HCHD6emz4,8981
|
|
118
120
|
pixeltable/io/parquet.py,sha256=-cxyy9wMRzGFDJWhUIjACfQMyAmajyoFcTXSkB8qESE,7818
|
|
119
|
-
pixeltable/io/table_data_conduit.py,sha256=
|
|
121
|
+
pixeltable/io/table_data_conduit.py,sha256=8SEcOPTgPiKHqlDp0rvGcPOF4v8jRX5TwHwfi5MHYt4,22003
|
|
120
122
|
pixeltable/io/utils.py,sha256=YMfhpqMitWz1PhXJGkCNOgNtEM1AZ55S0zXVhljC5kY,4260
|
|
121
123
|
pixeltable/iterators/__init__.py,sha256=bU4EmbX85J1URmRw6G71f2I77b1ctqngEOwDmRB3T0w,455
|
|
122
124
|
pixeltable/iterators/audio.py,sha256=wSVGdL5GeO3uY_lU-pNlY49E5dExIaJWY6oaXm-MnSU,9150
|
|
@@ -125,7 +127,7 @@ pixeltable/iterators/document.py,sha256=wJYSnzusJFaxipv5y0uQw-surN9fFz0Aq-s7w_l_
|
|
|
125
127
|
pixeltable/iterators/image.py,sha256=nWm-03CxNvHRdTr8U6PvWEnEiquqIQNG5rB-3Y44Mm4,3440
|
|
126
128
|
pixeltable/iterators/string.py,sha256=URj5edWp-CsorjN_8nnfWGvtIFs_Zh4VPm6htlJbFkU,1257
|
|
127
129
|
pixeltable/iterators/video.py,sha256=L5S1YPmT_zM11vW9fK6d5nQpUvHVewQWmfDmy4BD45E,9134
|
|
128
|
-
pixeltable/metadata/__init__.py,sha256=
|
|
130
|
+
pixeltable/metadata/__init__.py,sha256=iDL2NJXvrJoc6pJ7xWLaQLZnzXt58UfnPRZw0U3Ci2Q,3154
|
|
129
131
|
pixeltable/metadata/converters/convert_10.py,sha256=myYIo1DyccnsQUxDKG6mafnU5ge_EhZpHg_pesKBoK4,708
|
|
130
132
|
pixeltable/metadata/converters/convert_12.py,sha256=Ci-qyZW1gqci-8wnjeOB5afdq7KTuN-hVSV9OqSPx8g,162
|
|
131
133
|
pixeltable/metadata/converters/convert_13.py,sha256=B-_EkL0pSl1mAiv6DymeUAyBQUcYcV1qDdNz3Q359kc,1369
|
|
@@ -152,16 +154,19 @@ pixeltable/metadata/converters/convert_33.py,sha256=ZZV3FTyyouBM1eNymXxfHV-Oqmgu
|
|
|
152
154
|
pixeltable/metadata/converters/convert_34.py,sha256=1hi7m49CMzHRD25rrePS-SMCsZ-4opzDhY0JqU8Jzw4,690
|
|
153
155
|
pixeltable/metadata/converters/convert_35.py,sha256=c88qft0RFQbdFIE_PZRHMjeku1r5HCLN7wrvndQSXdI,266
|
|
154
156
|
pixeltable/metadata/converters/convert_36.py,sha256=g1rhZhAYfZpAwUgE3D1aipIR4RNvikhbKcrnBJzm0wM,1215
|
|
157
|
+
pixeltable/metadata/converters/convert_37.py,sha256=IVZGtKFaaYMGBs39V_H_okWvpxxadTUWqxoln0cNeQI,392
|
|
158
|
+
pixeltable/metadata/converters/convert_38.py,sha256=YyNyocwzzdJRcI0YSCo_70Q4hSk63235iE4IxhwSEzs,1169
|
|
155
159
|
pixeltable/metadata/converters/util.py,sha256=95pfg9amEOmhho32PIbNYnqagVIN9adIcLXxB6zSYDY,7527
|
|
156
|
-
pixeltable/metadata/notes.py,sha256=
|
|
157
|
-
pixeltable/metadata/schema.py,sha256=
|
|
158
|
-
pixeltable/
|
|
160
|
+
pixeltable/metadata/notes.py,sha256=HXskIW7HqbVXqhzZm0VTZn2q1RW6Qk0P5mpifmBS_9w,1485
|
|
161
|
+
pixeltable/metadata/schema.py,sha256=l8ZGcASiTrtaMW9jPDMtZmoT2BamGIDhujNUVgdag5E,11720
|
|
162
|
+
pixeltable/metadata/utils.py,sha256=NJQXWhhK1hdOZ4H3hh9N0mqbl-I9JqMUqrfA6OWLflE,2682
|
|
163
|
+
pixeltable/plan.py,sha256=K_qO-BnSZOShGr9uGRsiCLPXJOeOzh5eGeODrqviMlQ,49053
|
|
159
164
|
pixeltable/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
160
165
|
pixeltable/share/__init__.py,sha256=AtR4nS6YkfkFRkXA-zZXFTK5pSQjHry8MnxdVLUk5SA,68
|
|
161
|
-
pixeltable/share/packager.py,sha256=
|
|
166
|
+
pixeltable/share/packager.py,sha256=wqOuuUXOor6YLzR9oZSYuJmdbkfBetZB3NkndsqbX3I,32172
|
|
162
167
|
pixeltable/share/publish.py,sha256=U6PzOUYiZaPu-sVNjh2nN8qzY2-uMsYeTwQCCuGk7Jg,6537
|
|
163
|
-
pixeltable/store.py,sha256=
|
|
164
|
-
pixeltable/type_system.py,sha256=
|
|
168
|
+
pixeltable/store.py,sha256=v0TI_w8NemhV-njrsj7IH8PXE4gz4mjjHesWoFNIQf4,24402
|
|
169
|
+
pixeltable/type_system.py,sha256=P-ykQDPKbMZHtkozdrcBBpuX60Zc1nzwjwzSwlxIzPg,55319
|
|
165
170
|
pixeltable/utils/__init__.py,sha256=Pwgu-Sg1XkxzdCZ4ZhWP77UgLP3tnQsyCKaUJLF4ajo,1741
|
|
166
171
|
pixeltable/utils/arrow.py,sha256=74wIy58rDYZJBVQ1g85NqzFyiQBvEQhnJ0Gi82iZ0dw,6421
|
|
167
172
|
pixeltable/utils/coco.py,sha256=Y1DWVYguZD4VhKyf7JruYfHWvhkJLq39fzbiSm5cdyY,7304
|
|
@@ -179,11 +184,10 @@ pixeltable/utils/iceberg.py,sha256=L_s9G9NMIGMQdRHtNkks6ntTVW4DKKAw97R9gRmtw5s,5
|
|
|
179
184
|
pixeltable/utils/media_store.py,sha256=Dhsnj1ZPRSX0iyGOu4JU4pC3fvSBd7sQpruVHqzKm7A,3089
|
|
180
185
|
pixeltable/utils/pytorch.py,sha256=564VHRdDHwD9h0v5lBHEDTJ8c6zx8wuzWYx8ZYjBxlI,3621
|
|
181
186
|
pixeltable/utils/s3.py,sha256=pxip2MlCqd2Qon2dzJXzfxvwtZyc-BAsjAnLL4J_OXY,587
|
|
182
|
-
pixeltable/utils/sample.py,sha256=Pj8oSZw0WsdASD1BpTtKiWP4cwef7KQqVAfIFKlJNxA,643
|
|
183
187
|
pixeltable/utils/sql.py,sha256=Sa4Lh-VGe8GToU5W7DRiWf2lMl9B6saPqemiT0ZdHEc,806
|
|
184
188
|
pixeltable/utils/transactional_directory.py,sha256=OFKmu90oP7KwBAljwjnzP_w8euGdAXob3y4Nx9SCNHA,1357
|
|
185
|
-
pixeltable-0.4.
|
|
186
|
-
pixeltable-0.4.
|
|
187
|
-
pixeltable-0.4.
|
|
188
|
-
pixeltable-0.4.
|
|
189
|
-
pixeltable-0.4.
|
|
189
|
+
pixeltable-0.4.2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
190
|
+
pixeltable-0.4.2.dist-info/METADATA,sha256=RFiialgbsCHPt69fJ4aRgUpLcL1XGo47icfCrzJiMCo,20577
|
|
191
|
+
pixeltable-0.4.2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
192
|
+
pixeltable-0.4.2.dist-info/entry_points.txt,sha256=ToOd-pRgG7AitEBgYoBCRRB4-KVDQ0pj_9T4a1LgwA4,97
|
|
193
|
+
pixeltable-0.4.2.dist-info/RECORD,,
|
pixeltable/utils/sample.py
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import sqlalchemy as sql
|
|
2
|
-
|
|
3
|
-
from pixeltable.func.udf import udf
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
@udf
|
|
7
|
-
def sample_key(seed: int, *key_fields: int) -> str:
|
|
8
|
-
"""
|
|
9
|
-
Create a sample key from the given seed and key fields.
|
|
10
|
-
|
|
11
|
-
Args:
|
|
12
|
-
seed: The seed value.
|
|
13
|
-
rowids: The rowids to include in the sample key.
|
|
14
|
-
|
|
15
|
-
Returns:
|
|
16
|
-
A string key for each row
|
|
17
|
-
"""
|
|
18
|
-
raise NotImplementedError('SampleKey creation is not implemented in python.')
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
@sample_key.to_sql
|
|
22
|
-
def _(seed: sql.ColumnElement, *key_fields: sql.ColumnElement) -> sql.ColumnElement:
|
|
23
|
-
from pixeltable.exec.sql_node import SqlSampleNode
|
|
24
|
-
|
|
25
|
-
return SqlSampleNode.key_sql_expr(seed, key_fields)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|