pixeltable 0.4.3__py3-none-any.whl → 0.4.4__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/__version__.py +2 -2
- pixeltable/catalog/__init__.py +1 -1
- pixeltable/catalog/catalog.py +526 -197
- pixeltable/catalog/dir.py +1 -2
- pixeltable/catalog/insertable_table.py +9 -9
- pixeltable/catalog/schema_object.py +9 -4
- pixeltable/catalog/table.py +45 -53
- pixeltable/catalog/table_version.py +214 -155
- pixeltable/catalog/table_version_path.py +1 -1
- pixeltable/catalog/tbl_ops.py +44 -0
- pixeltable/catalog/view.py +47 -60
- pixeltable/dataframe.py +18 -5
- pixeltable/env.py +21 -4
- pixeltable/exec/data_row_batch.py +3 -1
- pixeltable/exec/in_memory_data_node.py +6 -7
- pixeltable/exprs/column_ref.py +2 -1
- pixeltable/functions/gemini.py +4 -4
- pixeltable/functions/openai.py +1 -2
- pixeltable/functions/video.py +2 -6
- pixeltable/globals.py +50 -25
- pixeltable/io/datarows.py +2 -1
- pixeltable/io/pandas.py +1 -0
- pixeltable/io/table_data_conduit.py +12 -13
- pixeltable/iterators/audio.py +17 -8
- pixeltable/iterators/image.py +5 -2
- pixeltable/metadata/schema.py +38 -1
- pixeltable/store.py +22 -1
- pixeltable/utils/media_store.py +11 -0
- {pixeltable-0.4.3.dist-info → pixeltable-0.4.4.dist-info}/METADATA +1 -1
- {pixeltable-0.4.3.dist-info → pixeltable-0.4.4.dist-info}/RECORD +33 -32
- {pixeltable-0.4.3.dist-info → pixeltable-0.4.4.dist-info}/LICENSE +0 -0
- {pixeltable-0.4.3.dist-info → pixeltable-0.4.4.dist-info}/WHEEL +0 -0
- {pixeltable-0.4.3.dist-info → pixeltable-0.4.4.dist-info}/entry_points.txt +0 -0
|
@@ -47,13 +47,13 @@ class TableDataConduitFormat(str, enum.Enum):
|
|
|
47
47
|
|
|
48
48
|
@dataclass
|
|
49
49
|
class TableDataConduit:
|
|
50
|
-
source: TableDataSource
|
|
50
|
+
source: 'TableDataSource'
|
|
51
51
|
source_format: Optional[str] = None
|
|
52
52
|
source_column_map: Optional[dict[str, str]] = None
|
|
53
53
|
if_row_exists: Literal['update', 'ignore', 'error'] = 'error'
|
|
54
|
-
pxt_schema: Optional[dict[str,
|
|
55
|
-
src_schema_overrides: Optional[dict[str,
|
|
56
|
-
src_schema: Optional[dict[str,
|
|
54
|
+
pxt_schema: Optional[dict[str, ts.ColumnType]] = None
|
|
55
|
+
src_schema_overrides: Optional[dict[str, ts.ColumnType]] = None
|
|
56
|
+
src_schema: Optional[dict[str, ts.ColumnType]] = None
|
|
57
57
|
pxt_pk: Optional[list[str]] = None
|
|
58
58
|
src_pk: Optional[list[str]] = None
|
|
59
59
|
valid_rows: Optional[RowData] = None
|
|
@@ -87,7 +87,7 @@ class TableDataConduit:
|
|
|
87
87
|
for name, coltype in self.pxt_schema.items():
|
|
88
88
|
self.pxt_schema[name] = ts.ColumnType.normalize_type(coltype)
|
|
89
89
|
|
|
90
|
-
def infer_schema(self) -> dict[str,
|
|
90
|
+
def infer_schema(self) -> dict[str, ts.ColumnType]:
|
|
91
91
|
raise NotImplementedError
|
|
92
92
|
|
|
93
93
|
def valid_row_batch(self) -> Iterator[RowData]:
|
|
@@ -137,7 +137,7 @@ class DFTableDataConduit(TableDataConduit):
|
|
|
137
137
|
t.pxt_df = tds.source
|
|
138
138
|
return t
|
|
139
139
|
|
|
140
|
-
def infer_schema(self) -> dict[str,
|
|
140
|
+
def infer_schema(self) -> dict[str, ts.ColumnType]:
|
|
141
141
|
self.pxt_schema = self.pxt_df.schema
|
|
142
142
|
self.pxt_pk = self.src_pk
|
|
143
143
|
return self.pxt_schema
|
|
@@ -168,7 +168,7 @@ class RowDataTableDataConduit(TableDataConduit):
|
|
|
168
168
|
t.batch_count = 0
|
|
169
169
|
return t
|
|
170
170
|
|
|
171
|
-
def infer_schema(self) -> dict[str,
|
|
171
|
+
def infer_schema(self) -> dict[str, ts.ColumnType]:
|
|
172
172
|
from .datarows import _infer_schema_from_rows
|
|
173
173
|
|
|
174
174
|
if self.source_column_map is None:
|
|
@@ -239,7 +239,7 @@ class PandasTableDataConduit(TableDataConduit):
|
|
|
239
239
|
t.batch_count = 0
|
|
240
240
|
return t
|
|
241
241
|
|
|
242
|
-
def infer_schema_part1(self) -> tuple[dict[str,
|
|
242
|
+
def infer_schema_part1(self) -> tuple[dict[str, ts.ColumnType], list[str]]:
|
|
243
243
|
"""Return inferred schema, inferred primary key, and source column map"""
|
|
244
244
|
if self.source_column_map is None:
|
|
245
245
|
if self.src_schema_overrides is None:
|
|
@@ -252,7 +252,7 @@ class PandasTableDataConduit(TableDataConduit):
|
|
|
252
252
|
else:
|
|
253
253
|
raise NotImplementedError()
|
|
254
254
|
|
|
255
|
-
def infer_schema(self) -> dict[str,
|
|
255
|
+
def infer_schema(self) -> dict[str, ts.ColumnType]:
|
|
256
256
|
self.pxt_schema, self.pxt_pk = self.infer_schema_part1()
|
|
257
257
|
self.normalize_pxt_schema_types()
|
|
258
258
|
_df_check_primary_key_values(self.pd_df, self.src_pk)
|
|
@@ -328,7 +328,6 @@ class HFTableDataConduit(TableDataConduit):
|
|
|
328
328
|
hf_ds: Optional[Union[datasets.Dataset, datasets.DatasetDict]] = None
|
|
329
329
|
column_name_for_split: Optional[str] = None
|
|
330
330
|
categorical_features: dict[str, dict[int, str]]
|
|
331
|
-
hf_schema: dict[str, Any] = None
|
|
332
331
|
dataset_dict: dict[str, datasets.Dataset] = None
|
|
333
332
|
hf_schema_source: dict[str, Any] = None
|
|
334
333
|
|
|
@@ -356,7 +355,7 @@ class HFTableDataConduit(TableDataConduit):
|
|
|
356
355
|
except ImportError:
|
|
357
356
|
return False
|
|
358
357
|
|
|
359
|
-
def infer_schema_part1(self) -> tuple[dict[str,
|
|
358
|
+
def infer_schema_part1(self) -> tuple[dict[str, ts.ColumnType], list[str]]:
|
|
360
359
|
from pixeltable.io.hf_datasets import _get_hf_schema, huggingface_schema_to_pxt_schema
|
|
361
360
|
|
|
362
361
|
if self.source_column_map is None:
|
|
@@ -469,7 +468,7 @@ class ParquetTableDataConduit(TableDataConduit):
|
|
|
469
468
|
t.pq_ds = parquet.ParquetDataset(str(input_path))
|
|
470
469
|
return t
|
|
471
470
|
|
|
472
|
-
def infer_schema_part1(self) -> tuple[dict[str,
|
|
471
|
+
def infer_schema_part1(self) -> tuple[dict[str, ts.ColumnType], list[str]]:
|
|
473
472
|
from pixeltable.utils.arrow import ar_infer_schema
|
|
474
473
|
|
|
475
474
|
if self.source_column_map is None:
|
|
@@ -483,7 +482,7 @@ class ParquetTableDataConduit(TableDataConduit):
|
|
|
483
482
|
else:
|
|
484
483
|
raise NotImplementedError()
|
|
485
484
|
|
|
486
|
-
def infer_schema(self) -> dict[str,
|
|
485
|
+
def infer_schema(self) -> dict[str, ts.ColumnType]:
|
|
487
486
|
self.pxt_schema, self.pxt_pk = self.infer_schema_part1()
|
|
488
487
|
self.normalize_pxt_schema_types()
|
|
489
488
|
self.prepare_insert()
|
pixeltable/iterators/audio.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
import uuid
|
|
3
2
|
from fractions import Fraction
|
|
4
3
|
from pathlib import Path
|
|
5
4
|
from typing import Any, ClassVar, Optional
|
|
@@ -55,12 +54,9 @@ class AudioSplitter(ComponentIterator):
|
|
|
55
54
|
def __init__(
|
|
56
55
|
self, audio: str, chunk_duration_sec: float, *, overlap_sec: float = 0.0, min_chunk_duration_sec: float = 0.0
|
|
57
56
|
):
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
raise excs.Error('chunk_duration_sec must be at least min_chunk_duration_sec')
|
|
62
|
-
if overlap_sec >= chunk_duration_sec:
|
|
63
|
-
raise excs.Error('overlap_sec must be less than chunk_duration_sec')
|
|
57
|
+
assert chunk_duration_sec > 0.0
|
|
58
|
+
assert chunk_duration_sec >= min_chunk_duration_sec
|
|
59
|
+
assert overlap_sec < chunk_duration_sec
|
|
64
60
|
audio_path = Path(audio)
|
|
65
61
|
assert audio_path.exists() and audio_path.is_file()
|
|
66
62
|
self.audio_path = audio_path
|
|
@@ -128,6 +124,19 @@ class AudioSplitter(ComponentIterator):
|
|
|
128
124
|
|
|
129
125
|
@classmethod
|
|
130
126
|
def output_schema(cls, *args: Any, **kwargs: Any) -> tuple[dict[str, ts.ColumnType], list[str]]:
|
|
127
|
+
param_names = ['chunk_duration_sec', 'min_chunk_duration_sec', 'overlap_sec']
|
|
128
|
+
params = dict(zip(param_names, args))
|
|
129
|
+
params.update(kwargs)
|
|
130
|
+
|
|
131
|
+
chunk_duration_sec = params['chunk_duration_sec']
|
|
132
|
+
min_chunk_duration_sec = params.get('min_chunk_duration_sec', 0.0)
|
|
133
|
+
overlap_sec = params.get('overlap_sec', 0.0)
|
|
134
|
+
if chunk_duration_sec <= 0.0:
|
|
135
|
+
raise excs.Error('chunk_duration_sec must be a positive number')
|
|
136
|
+
if chunk_duration_sec < min_chunk_duration_sec:
|
|
137
|
+
raise excs.Error('chunk_duration_sec must be at least min_chunk_duration_sec')
|
|
138
|
+
if overlap_sec >= chunk_duration_sec:
|
|
139
|
+
raise excs.Error('overlap_sec must be less than chunk_duration_sec')
|
|
131
140
|
return {
|
|
132
141
|
'start_time_sec': ts.FloatType(),
|
|
133
142
|
'end_time_sec': ts.FloatType(),
|
|
@@ -140,7 +149,7 @@ class AudioSplitter(ComponentIterator):
|
|
|
140
149
|
target_chunk_start, target_chunk_end = self.chunks_to_extract_in_pts[self.next_pos]
|
|
141
150
|
chunk_start_pts = 0
|
|
142
151
|
chunk_end_pts = 0
|
|
143
|
-
chunk_file = str(env.Env.get().
|
|
152
|
+
chunk_file = str(env.Env.get().create_tmp_path(self.audio_path.suffix))
|
|
144
153
|
output_container = av.open(chunk_file, mode='w')
|
|
145
154
|
input_stream = self.container.streams.audio[0]
|
|
146
155
|
codec_name = AudioSplitter.__codec_map.get(input_stream.codec_context.name, input_stream.codec_context.name)
|
pixeltable/iterators/image.py
CHANGED
|
@@ -31,8 +31,7 @@ class TileIterator(ComponentIterator):
|
|
|
31
31
|
__j: int
|
|
32
32
|
|
|
33
33
|
def __init__(self, image: PIL.Image.Image, *, tile_size: tuple[int, int], overlap: tuple[int, int] = (0, 0)):
|
|
34
|
-
|
|
35
|
-
raise excs.Error(f'overlap dimensions {overlap} are not strictly smaller than tile size {tile_size}')
|
|
34
|
+
assert overlap[0] < tile_size[0] and overlap[1] < tile_size[1]
|
|
36
35
|
|
|
37
36
|
self.__image = image
|
|
38
37
|
self.__image.load()
|
|
@@ -79,4 +78,8 @@ class TileIterator(ComponentIterator):
|
|
|
79
78
|
|
|
80
79
|
@classmethod
|
|
81
80
|
def output_schema(cls, *args: Any, **kwargs: Any) -> tuple[dict[str, ts.ColumnType], list[str]]:
|
|
81
|
+
tile_size = kwargs.get('tile_size')
|
|
82
|
+
overlap = kwargs.get('overlap', (0, 0))
|
|
83
|
+
if overlap[0] >= tile_size[0] or overlap[1] >= tile_size[1]:
|
|
84
|
+
raise excs.Error(f'overlap dimensions {overlap} are not strictly smaller than tile size {tile_size}')
|
|
82
85
|
return {'tile': ts.ImageType(), 'tile_coord': ts.JsonType(), 'tile_box': ts.JsonType()}, ['tile']
|
pixeltable/metadata/schema.py
CHANGED
|
@@ -182,6 +182,7 @@ class TableMd:
|
|
|
182
182
|
# sequence number to track changes in the set of mutable views of this table (ie, this table = the view base)
|
|
183
183
|
# - incremented for each add/drop of a mutable view
|
|
184
184
|
# - only maintained for mutable tables
|
|
185
|
+
# TODO: replace with mutable_views: list[UUID] to help with debugging
|
|
185
186
|
view_sn: int
|
|
186
187
|
|
|
187
188
|
# Metadata format for external stores:
|
|
@@ -193,6 +194,26 @@ class TableMd:
|
|
|
193
194
|
view_md: Optional[ViewMd]
|
|
194
195
|
additional_md: dict[str, Any]
|
|
195
196
|
|
|
197
|
+
has_pending_ops: bool = False
|
|
198
|
+
|
|
199
|
+
@property
|
|
200
|
+
def is_snapshot(self) -> bool:
|
|
201
|
+
return self.view_md is not None and self.view_md.is_snapshot
|
|
202
|
+
|
|
203
|
+
@property
|
|
204
|
+
def is_mutable(self) -> bool:
|
|
205
|
+
return not self.is_snapshot and not self.is_replica
|
|
206
|
+
|
|
207
|
+
@property
|
|
208
|
+
def is_pure_snapshot(self) -> bool:
|
|
209
|
+
return (
|
|
210
|
+
self.view_md is not None
|
|
211
|
+
and self.view_md.is_snapshot
|
|
212
|
+
and self.view_md.sample_clause is None
|
|
213
|
+
and self.view_md.predicate is None
|
|
214
|
+
and len(self.column_md) == 0
|
|
215
|
+
)
|
|
216
|
+
|
|
196
217
|
|
|
197
218
|
class Table(Base):
|
|
198
219
|
"""
|
|
@@ -215,7 +236,7 @@ class Table(Base):
|
|
|
215
236
|
lock_dummy: orm.Mapped[int] = orm.mapped_column(BigInteger, nullable=True)
|
|
216
237
|
|
|
217
238
|
|
|
218
|
-
@dataclasses.dataclass
|
|
239
|
+
@dataclasses.dataclass
|
|
219
240
|
class TableVersionMd:
|
|
220
241
|
tbl_id: str # uuid.UUID
|
|
221
242
|
created_at: float # time.time()
|
|
@@ -279,6 +300,22 @@ class TableSchemaVersion(Base):
|
|
|
279
300
|
md: orm.Mapped[dict[str, Any]] = orm.mapped_column(JSONB, nullable=False) # TableSchemaVersionMd
|
|
280
301
|
|
|
281
302
|
|
|
303
|
+
class PendingTableOp(Base):
|
|
304
|
+
"""
|
|
305
|
+
Table operation that needs to be completed before the table can be used.
|
|
306
|
+
|
|
307
|
+
Operations need to be completed in order of increasing seq_num.
|
|
308
|
+
"""
|
|
309
|
+
|
|
310
|
+
__tablename__ = 'pendingtableops'
|
|
311
|
+
|
|
312
|
+
tbl_id: orm.Mapped[uuid.UUID] = orm.mapped_column(
|
|
313
|
+
UUID(as_uuid=True), ForeignKey('tables.id'), primary_key=True, nullable=False
|
|
314
|
+
)
|
|
315
|
+
op_sn: orm.Mapped[int] = orm.mapped_column(Integer, primary_key=True, nullable=False) # catalog.TableOp.op_sn
|
|
316
|
+
op: orm.Mapped[dict[str, Any]] = orm.mapped_column(JSONB, nullable=False) # catalog.TableOp
|
|
317
|
+
|
|
318
|
+
|
|
282
319
|
@dataclasses.dataclass
|
|
283
320
|
class FunctionMd:
|
|
284
321
|
name: str
|
pixeltable/store.py
CHANGED
|
@@ -7,6 +7,7 @@ import warnings
|
|
|
7
7
|
from typing import Any, Iterable, Iterator, Optional, Union
|
|
8
8
|
|
|
9
9
|
import more_itertools
|
|
10
|
+
import psycopg
|
|
10
11
|
import sqlalchemy as sql
|
|
11
12
|
from tqdm import TqdmWarning, tqdm
|
|
12
13
|
|
|
@@ -146,8 +147,28 @@ class StoreBase:
|
|
|
146
147
|
return result
|
|
147
148
|
|
|
148
149
|
def create(self) -> None:
|
|
150
|
+
"""Create If Not Exists for this table"""
|
|
149
151
|
conn = Env.get().conn
|
|
150
|
-
self.
|
|
152
|
+
stmt = sql.schema.CreateTable(self.sa_tbl).compile(conn)
|
|
153
|
+
create_stmt = str(stmt)
|
|
154
|
+
if_not_exists_stmt = create_stmt.replace('CREATE TABLE', 'CREATE TABLE IF NOT EXISTS')
|
|
155
|
+
|
|
156
|
+
# Postgres seems not to handle concurrent Create Table If Not Exists correctly, we need to ignore the various
|
|
157
|
+
# errors that can occur when two connections run the same Create Table statement.
|
|
158
|
+
try:
|
|
159
|
+
conn.execute(sql.text(if_not_exists_stmt))
|
|
160
|
+
except (sql.exc.IntegrityError, sql.exc.ProgrammingError) as e:
|
|
161
|
+
Env.get().console_logger.info(f'StoreBase.create() failed with: {e}')
|
|
162
|
+
if (
|
|
163
|
+
isinstance(e.orig, psycopg.errors.UniqueViolation)
|
|
164
|
+
and 'duplicate key value violates unique constraint "pg_type_typname_nsp_index"' in str(e.orig)
|
|
165
|
+
) or (
|
|
166
|
+
isinstance(e.orig, (psycopg.errors.DuplicateObject, psycopg.errors.DuplicateTable))
|
|
167
|
+
and 'already exists' in str(e.orig)
|
|
168
|
+
):
|
|
169
|
+
pass
|
|
170
|
+
else:
|
|
171
|
+
raise
|
|
151
172
|
|
|
152
173
|
def drop(self) -> None:
|
|
153
174
|
"""Drop store table"""
|
pixeltable/utils/media_store.py
CHANGED
|
@@ -73,6 +73,17 @@ class MediaStore:
|
|
|
73
73
|
src_path.rename(dest_path)
|
|
74
74
|
return urllib.parse.urljoin('file:', urllib.request.pathname2url(str(dest_path)))
|
|
75
75
|
|
|
76
|
+
@classmethod
|
|
77
|
+
def save_media_file(cls, file_data: bytes, tbl_id: UUID, col_id: int, tbl_version: int) -> Path:
|
|
78
|
+
"""Save a media binary data to a file in the MediaStore."""
|
|
79
|
+
assert isinstance(file_data, bytes)
|
|
80
|
+
media_path = cls.prepare_media_path(tbl_id, col_id, tbl_version)
|
|
81
|
+
with open(media_path, 'wb') as f:
|
|
82
|
+
f.write(file_data)
|
|
83
|
+
f.flush() # Ensures Python buffers are written to OS
|
|
84
|
+
os.fsync(f.fileno()) # Forces OS to write to physical storage
|
|
85
|
+
return media_path
|
|
86
|
+
|
|
76
87
|
@classmethod
|
|
77
88
|
def delete(cls, tbl_id: UUID, version: Optional[int] = None) -> None:
|
|
78
89
|
"""Delete all files belonging to tbl_id. If version is not None, delete
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pixeltable
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.4
|
|
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,29 +1,30 @@
|
|
|
1
1
|
pixeltable/__init__.py,sha256=-bu8Al-s2PyGpPYZgj016gMl9s6NMQfjxVRwvhfd8IY,1457
|
|
2
|
-
pixeltable/__version__.py,sha256=
|
|
3
|
-
pixeltable/catalog/__init__.py,sha256=
|
|
4
|
-
pixeltable/catalog/catalog.py,sha256=
|
|
2
|
+
pixeltable/__version__.py,sha256=T7KXb1Im-4kQujXd5F_u-Wak6ZZevjWPic8US5EaoQE,112
|
|
3
|
+
pixeltable/catalog/__init__.py,sha256=oiiga_fe4iQsBh8lfLjLBTbvzaZfD4QM7hmMZDpAGGU,636
|
|
4
|
+
pixeltable/catalog/catalog.py,sha256=u4FsoduYQKYrKGN_yRvq7K4kU0-332ILozOS5fnPt90,91162
|
|
5
5
|
pixeltable/catalog/column.py,sha256=HZfujfvdkJeyOWfgmVutJLWOy19R8ZFczaEjYTZ5NQo,11495
|
|
6
|
-
pixeltable/catalog/dir.py,sha256=
|
|
6
|
+
pixeltable/catalog/dir.py,sha256=VYTscPlKR6XhupPTXlJ8txAHxS5GSpPJ3LIleDJagVQ,2047
|
|
7
7
|
pixeltable/catalog/globals.py,sha256=uMIDsbeDzFxZbcgKDTOiT5plC1gAKgz1oxxdh1odIPw,2648
|
|
8
|
-
pixeltable/catalog/insertable_table.py,sha256=
|
|
8
|
+
pixeltable/catalog/insertable_table.py,sha256=uOvV3Ibcnh9xNLwfZrE6kQJWp0KWasBOk29sPuIa4c0,9485
|
|
9
9
|
pixeltable/catalog/named_function.py,sha256=vZ-j7P4HugWh9OmUzBMwyRYvO3tQn9jWyJz_1stPavU,1210
|
|
10
10
|
pixeltable/catalog/path.py,sha256=VdoRy2eRVyR3FhJoo8wVFcuqqEq4o36RJsJ0cDX4Cac,2705
|
|
11
|
-
pixeltable/catalog/schema_object.py,sha256=
|
|
12
|
-
pixeltable/catalog/table.py,sha256=
|
|
13
|
-
pixeltable/catalog/table_version.py,sha256=
|
|
11
|
+
pixeltable/catalog/schema_object.py,sha256=XJ5kV7jEsjWmHTwQVQGHrInlOmu-vUDhBvczB_hTtxI,2123
|
|
12
|
+
pixeltable/catalog/table.py,sha256=1Z7fIza2v_CuVlLLmpEniZTls-_4EIfXwBov9pwtdmA,75786
|
|
13
|
+
pixeltable/catalog/table_version.py,sha256=XMwsHNWE8ybX7xecXREwVViT194t1dU0tIOInzLHYKc,68544
|
|
14
14
|
pixeltable/catalog/table_version_handle.py,sha256=FTPRqcGY-h-POcWyZbd9b8P2D5zIw5OSUvwF_dbyCGo,3608
|
|
15
|
-
pixeltable/catalog/table_version_path.py,sha256=
|
|
15
|
+
pixeltable/catalog/table_version_path.py,sha256=TcMG-R5b0O72HCvk0Qn8kGpZnfIsYhawOP7RjP1Sjb4,9815
|
|
16
|
+
pixeltable/catalog/tbl_ops.py,sha256=Vdcz4Nzvdw09zcQaCEaOr9Uufk2rQHgG0vBvMbQp9R8,1145
|
|
16
17
|
pixeltable/catalog/update_status.py,sha256=tF3KkDc6kvEQ7Tg3VMj-n774uKi1iLla61wLyeuwDRs,6888
|
|
17
|
-
pixeltable/catalog/view.py,sha256=
|
|
18
|
+
pixeltable/catalog/view.py,sha256=lG_8x3g_-1wDLUTIG-q-bva5IAf_s-S_NAyDWTOu7Oo,14593
|
|
18
19
|
pixeltable/config.py,sha256=UGLZ-A7exqGB5os3BluMXXj3iEo7mGQKBXebriTZjkQ,7148
|
|
19
|
-
pixeltable/dataframe.py,sha256=
|
|
20
|
-
pixeltable/env.py,sha256=
|
|
20
|
+
pixeltable/dataframe.py,sha256=QkyXKXd-TNPEvgRlCNSfGPmw5cz5s4RdOINsWYIyxfk,61386
|
|
21
|
+
pixeltable/env.py,sha256=yZZBWgqw4ez2bbHpVCuBlkbiJZMyB1QzfEGUEiYyaEg,37765
|
|
21
22
|
pixeltable/exceptions.py,sha256=Gm8d3TL2iiv6Pj2DLd29wp_j41qNBhxXL9iTQnL4Nk4,1116
|
|
22
23
|
pixeltable/exec/__init__.py,sha256=hQvj4ra4ubxu94qyuCBTHKsuYGzundkTTluOTIb5Bx8,524
|
|
23
24
|
pixeltable/exec/aggregation_node.py,sha256=HqzISO1nv7_DFyqjZLRkjtbDJl9fIEto1i6Kh5ru8vA,4498
|
|
24
25
|
pixeltable/exec/cache_prefetch_node.py,sha256=GOa70eJDFY3FQV3VvJOrUVI8LFvro-r-V6sh3w-eJAc,12130
|
|
25
26
|
pixeltable/exec/component_iteration_node.py,sha256=FZszWHrzsjHxCbUTwXtJIlgQqgYtvKZB6QWiDGkfIbs,4757
|
|
26
|
-
pixeltable/exec/data_row_batch.py,sha256=
|
|
27
|
+
pixeltable/exec/data_row_batch.py,sha256=s85NVDAMdPzx1C9XbS9xieDtnpad33w86PbW1k8ar0U,3460
|
|
27
28
|
pixeltable/exec/exec_context.py,sha256=jKeLStfkjwCKKAooC-7a7qZUnZU5O0_JQhanhVerV9c,984
|
|
28
29
|
pixeltable/exec/exec_node.py,sha256=dEPVuXFU4niYONCk9ThKx8cZUBNkv0gbmKMDERgdDks,3671
|
|
29
30
|
pixeltable/exec/expr_eval/__init__.py,sha256=sQThSEByK_DLfB-_-18RFhpARx49cSXYEkpCDyi0vQI,61
|
|
@@ -32,14 +33,14 @@ pixeltable/exec/expr_eval/expr_eval_node.py,sha256=klPhvsug91GiPIHkwcTj1ympxsoj8
|
|
|
32
33
|
pixeltable/exec/expr_eval/globals.py,sha256=fFrj2O53TgHDfVF8dgnyn1fPLi4ZHQuylewf5aHMwYk,7752
|
|
33
34
|
pixeltable/exec/expr_eval/row_buffer.py,sha256=YY0thdlMNNReEOTyPp36xKPeMeXSZ0VrI9bJsXgo7sU,2744
|
|
34
35
|
pixeltable/exec/expr_eval/schedulers.py,sha256=DuebLy_3Bu3MTUG3AQNk7JcVv69OeeRFu5bcZGT5T2c,22233
|
|
35
|
-
pixeltable/exec/in_memory_data_node.py,sha256=
|
|
36
|
+
pixeltable/exec/in_memory_data_node.py,sha256=OEyF7t9i0jN_hIRGqxWbV6dk1c-wWCaa-hx7m7v1dBE,3569
|
|
36
37
|
pixeltable/exec/row_update_node.py,sha256=zU0eSyn81-vRrjAMOadRqU8luTshnPUtIbS7npyLBKY,2798
|
|
37
38
|
pixeltable/exec/sql_node.py,sha256=cMoBGPOFVmvL3UFjCKxhU3huJu_ko0PRr55-XhbF1i0,27572
|
|
38
39
|
pixeltable/exprs/__init__.py,sha256=AxSMjKNavCT9F6vBaNR-nwX2iupAI5hbMb5hEj65Tfk,1096
|
|
39
40
|
pixeltable/exprs/arithmetic_expr.py,sha256=sZPao0qdFWbrDx0eiAVxw1wGHJXZ5ZoCpQaScysBldE,7333
|
|
40
41
|
pixeltable/exprs/array_slice.py,sha256=8Zv0E2RghdJi1Mbk0kKtOz2ccGQuXwLLb6R9v1jk7hA,2180
|
|
41
42
|
pixeltable/exprs/column_property_ref.py,sha256=rq8VD34fZwAZuN9wIqQEwVay7LTPBKvXXdZPknOJM6M,4422
|
|
42
|
-
pixeltable/exprs/column_ref.py,sha256=
|
|
43
|
+
pixeltable/exprs/column_ref.py,sha256=MH83bYsef5UC4vWU71PE-lPiVd8hVw4tT6sjdCCvWNw,15473
|
|
43
44
|
pixeltable/exprs/comparison.py,sha256=lgaRx000ZaNH10A4hrtsi5XoZKE-CNEONGMi7jxJfcM,5133
|
|
44
45
|
pixeltable/exprs/compound_predicate.py,sha256=vJVRVueAmaKnjiHCLWyh8wHgktzzK0DVqbOIQJgTjF8,3801
|
|
45
46
|
pixeltable/exprs/data_row.py,sha256=4mW5Q56L53gLAX7xI0uBRW7a5Ax66Q0W9Bi-k_ZBoe8,11800
|
|
@@ -86,7 +87,7 @@ pixeltable/functions/bedrock.py,sha256=lTCFHjYunF3minBGWcjXR90yJ8resFjXr4niyKhfx
|
|
|
86
87
|
pixeltable/functions/date.py,sha256=WUwqyrOWB8A00cTNEd6Vd7anQZo40_-7EWhpfpI-P6c,5323
|
|
87
88
|
pixeltable/functions/deepseek.py,sha256=IAo2e_DhkM0A5NrskxuPQUGYzIYAl4do_mdO1Qc3PeY,3338
|
|
88
89
|
pixeltable/functions/fireworks.py,sha256=q7eWlYfiWbA0d9r3CB_NAe1fw3q-Z7qsw2gyGJNgWLQ,4786
|
|
89
|
-
pixeltable/functions/gemini.py,sha256=
|
|
90
|
+
pixeltable/functions/gemini.py,sha256=Yede8DzWEa4eboW7SNTOooBabriUlsnQMUdG5jCWRQo,8320
|
|
90
91
|
pixeltable/functions/globals.py,sha256=ZXBV2LPXT2-yQYHHE7q8N1WdAr0WxiIO1ax0qwxhmK8,5118
|
|
91
92
|
pixeltable/functions/groq.py,sha256=FpR_LJpfZfzyhEvoBMMbQpQ-VQSRzBsS9U21qaINwww,3593
|
|
92
93
|
pixeltable/functions/huggingface.py,sha256=cJyf86qMcvivkGGNduNHAvh_idI-e4wJm0Zje1KJ2vQ,20611
|
|
@@ -96,36 +97,36 @@ pixeltable/functions/llama_cpp.py,sha256=1QB4vQ7J4Za1mL93bRIBXgokNtpzzYr_QU6KF27
|
|
|
96
97
|
pixeltable/functions/math.py,sha256=eZEFjXxNHDHjcCsOMhzfNbJthTsmtNxtSFV8AEeRIfM,4979
|
|
97
98
|
pixeltable/functions/mistralai.py,sha256=Fk52mfWUfxVy-yCxhH6wrGS7nLLSiOOrWxbTkkiQ-O8,5542
|
|
98
99
|
pixeltable/functions/ollama.py,sha256=4-6h9Foq_7Ut7JtEHGkeg1KbuKaFywSuMrKiw0xAyCA,4231
|
|
99
|
-
pixeltable/functions/openai.py,sha256=
|
|
100
|
+
pixeltable/functions/openai.py,sha256=8kGOUv2jh-df0ByMwP2sAQdSgzzSCj5WypCfhnvoD2c,27694
|
|
100
101
|
pixeltable/functions/replicate.py,sha256=sPvRGr0j0kCDc6Vz3mPUioFflApijukvZWJJUO2bqIQ,2429
|
|
101
102
|
pixeltable/functions/string.py,sha256=LdBNOna5PUSPmM5VlJ_qhmwzyFhumW0k6Dvx2rXSZtc,25356
|
|
102
103
|
pixeltable/functions/timestamp.py,sha256=0zp4urJagCcNLfJE0ltTCft-J9qs2C716TmRngKYaa0,9171
|
|
103
104
|
pixeltable/functions/together.py,sha256=A8J19BXywyWQ6a2_n05-8uIG5jquOBGqPmW3mb-NrIc,8842
|
|
104
105
|
pixeltable/functions/util.py,sha256=uQNkyBSkTVMe1wbUI2Q0nz-mM3qPVTF86yK8c9OFIcE,954
|
|
105
|
-
pixeltable/functions/video.py,sha256=
|
|
106
|
+
pixeltable/functions/video.py,sha256=zrh8De3w3zHe3QQ6T8d3IKGRNbin6wAcIQa6lRi5jL0,8511
|
|
106
107
|
pixeltable/functions/vision.py,sha256=_a0wY3akkVhWnnxlq__1VzSLylytlNadpNOOPOwSfLk,15393
|
|
107
108
|
pixeltable/functions/whisper.py,sha256=c9E6trhc2UcShVaGaEBCUEpArke1ql3MV5We0qSgmuU,2960
|
|
108
|
-
pixeltable/globals.py,sha256=
|
|
109
|
+
pixeltable/globals.py,sha256=6BrrjMUWRae92vSglWXpMgGRIWf8Wutop1OQxU3A6n0,36269
|
|
109
110
|
pixeltable/index/__init__.py,sha256=97aFuxiP_oz1ldn5iq8IWApkOV8XG6ZIBW5-9rkS0vM,122
|
|
110
111
|
pixeltable/index/base.py,sha256=200s7v3Zy810bRlbSAYzxxaEjVssl6r8esTHiSvWRwQ,1704
|
|
111
112
|
pixeltable/index/btree.py,sha256=8B06D67ay0DFUtEBC5q4bLjxMq7ILpKyyoLAiSaamzA,2503
|
|
112
113
|
pixeltable/index/embedding_index.py,sha256=B_k_3UJmSv7t2ljUg8GC_D4t1jc03PVsTAvxqiTmHBA,11754
|
|
113
114
|
pixeltable/io/__init__.py,sha256=chVGh3ygtZwSY6g_skIyCsjxwzo2847jDq9YGObAY98,608
|
|
114
|
-
pixeltable/io/datarows.py,sha256=
|
|
115
|
+
pixeltable/io/datarows.py,sha256=UibRI3TH6E8WTaUSxVC4g0FfLcbM57OjbUIk3IQpU2k,6179
|
|
115
116
|
pixeltable/io/external_store.py,sha256=rOYBwTqcZZVU2toWxJ_9Iy2w2YO0DhuABrM2xGmqHSo,14787
|
|
116
117
|
pixeltable/io/fiftyone.py,sha256=v0r28bIk2I0TRP5DfVHtBIUa4DpIJDK5sgExxOmHZ_w,6882
|
|
117
118
|
pixeltable/io/globals.py,sha256=so-skHogbXocuzI_IweH2cEX_SW_tDvFqBZyxeMyMzc,11375
|
|
118
119
|
pixeltable/io/hf_datasets.py,sha256=USCWp0nqs2D9FFfxlGhFy6pn2kDUwGfDHgUiv0-osc8,5634
|
|
119
120
|
pixeltable/io/label_studio.py,sha256=XpPkOLktm37Jnhh5ce1PQpUYzeuPJjoCZDaSGedagF4,31426
|
|
120
|
-
pixeltable/io/pandas.py,sha256=
|
|
121
|
+
pixeltable/io/pandas.py,sha256=wzxBggItahT0yjGoV0G_csVAcYlcMXArlF6lfePXqUc,9053
|
|
121
122
|
pixeltable/io/parquet.py,sha256=-cxyy9wMRzGFDJWhUIjACfQMyAmajyoFcTXSkB8qESE,7818
|
|
122
|
-
pixeltable/io/table_data_conduit.py,sha256=
|
|
123
|
+
pixeltable/io/table_data_conduit.py,sha256=8pTWXr9fCWUbGPcNX7Fm3WXhipBiv3pdbTMok02vbQs,22078
|
|
123
124
|
pixeltable/io/utils.py,sha256=YMfhpqMitWz1PhXJGkCNOgNtEM1AZ55S0zXVhljC5kY,4260
|
|
124
125
|
pixeltable/iterators/__init__.py,sha256=bU4EmbX85J1URmRw6G71f2I77b1ctqngEOwDmRB3T0w,455
|
|
125
|
-
pixeltable/iterators/audio.py,sha256=
|
|
126
|
+
pixeltable/iterators/audio.py,sha256=Xuv6sOuhhMbof87JrlO218Fm_j6MoMxEr88otmoXME4,9623
|
|
126
127
|
pixeltable/iterators/base.py,sha256=ZC0ZvXL4iw6AmT8cu-Mdx-T2UG9nmJYV1C6LK4efAfw,1669
|
|
127
128
|
pixeltable/iterators/document.py,sha256=wJYSnzusJFaxipv5y0uQw-surN9fFz0Aq-s7w_l_Yk8,20306
|
|
128
|
-
pixeltable/iterators/image.py,sha256=
|
|
129
|
+
pixeltable/iterators/image.py,sha256=RrFdf5cnFIQzWKJk4uYi1m1p2qAiz909THYhRQ27DbY,3603
|
|
129
130
|
pixeltable/iterators/string.py,sha256=URj5edWp-CsorjN_8nnfWGvtIFs_Zh4VPm6htlJbFkU,1257
|
|
130
131
|
pixeltable/iterators/video.py,sha256=L5S1YPmT_zM11vW9fK6d5nQpUvHVewQWmfDmy4BD45E,9134
|
|
131
132
|
pixeltable/metadata/__init__.py,sha256=iJxMsd3s5yNZ5ciIBzQCa0frXZKgvFj2_-H0Sf4N1mk,3154
|
|
@@ -160,14 +161,14 @@ pixeltable/metadata/converters/convert_38.py,sha256=YyNyocwzzdJRcI0YSCo_70Q4hSk6
|
|
|
160
161
|
pixeltable/metadata/converters/convert_39.py,sha256=YaEfgStxtYGRbuRLFw8wTAZVJRzIU6zL6nPU2zuDcEU,4658
|
|
161
162
|
pixeltable/metadata/converters/util.py,sha256=QUBOj2F_6rCAdIo0lgD1IVgAM15Vmq7ikQspB4s0eQ8,7732
|
|
162
163
|
pixeltable/metadata/notes.py,sha256=3fdZDFpL1-b194Ejv0Y0YP-vbnV-XvVP9wOmZM9XARA,1545
|
|
163
|
-
pixeltable/metadata/schema.py,sha256=
|
|
164
|
+
pixeltable/metadata/schema.py,sha256=3x-ZBzjoTep7UScSqsVKU-dWSOCgsM8YYZYE0a9S5ZU,13446
|
|
164
165
|
pixeltable/metadata/utils.py,sha256=NJQXWhhK1hdOZ4H3hh9N0mqbl-I9JqMUqrfA6OWLflE,2682
|
|
165
166
|
pixeltable/plan.py,sha256=nnMiBiQNJ0fWBNetyypVggCBCDWekTvKiSCMeays7Os,49369
|
|
166
167
|
pixeltable/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
167
168
|
pixeltable/share/__init__.py,sha256=AtR4nS6YkfkFRkXA-zZXFTK5pSQjHry8MnxdVLUk5SA,68
|
|
168
169
|
pixeltable/share/packager.py,sha256=WDid1dOogPbAkF7pPrLe17eYR0_FWubvExU26ooQl4c,30994
|
|
169
170
|
pixeltable/share/publish.py,sha256=U6PzOUYiZaPu-sVNjh2nN8qzY2-uMsYeTwQCCuGk7Jg,6537
|
|
170
|
-
pixeltable/store.py,sha256=
|
|
171
|
+
pixeltable/store.py,sha256=cSTcgx_OtXnHH2pSM2Fv9D8gP9vFiLSGIDUSzht_QEs,23874
|
|
171
172
|
pixeltable/type_system.py,sha256=DuCWaHPeToQ22lDmcQRRHKTEz7ATAfFSYcRgQvdniQM,55321
|
|
172
173
|
pixeltable/utils/__init__.py,sha256=Pwgu-Sg1XkxzdCZ4ZhWP77UgLP3tnQsyCKaUJLF4ajo,1741
|
|
173
174
|
pixeltable/utils/arrow.py,sha256=74wIy58rDYZJBVQ1g85NqzFyiQBvEQhnJ0Gi82iZ0dw,6421
|
|
@@ -183,13 +184,13 @@ pixeltable/utils/filecache.py,sha256=8RZZiEkD4awZpR-mn7OhoZPc6_JlPUNSBnMU8BcEAv4
|
|
|
183
184
|
pixeltable/utils/formatter.py,sha256=tbMxE9rBw6wdKUnJhNZ8h9uAF8dZKcihQ2KesqAag9A,10096
|
|
184
185
|
pixeltable/utils/http_server.py,sha256=B5iQ1s_VuwsVC7pUm1joGjLZqaluV8_RfFiU8V1FuG8,2453
|
|
185
186
|
pixeltable/utils/iceberg.py,sha256=L_s9G9NMIGMQdRHtNkks6ntTVW4DKKAw97R9gRmtw5s,553
|
|
186
|
-
pixeltable/utils/media_store.py,sha256=
|
|
187
|
+
pixeltable/utils/media_store.py,sha256=A93aYYhkq3Bz2Q9O7THwAew6z3peOssHK-Tg6YGWCNc,5466
|
|
187
188
|
pixeltable/utils/pytorch.py,sha256=564VHRdDHwD9h0v5lBHEDTJ8c6zx8wuzWYx8ZYjBxlI,3621
|
|
188
189
|
pixeltable/utils/s3.py,sha256=pxip2MlCqd2Qon2dzJXzfxvwtZyc-BAsjAnLL4J_OXY,587
|
|
189
190
|
pixeltable/utils/sql.py,sha256=Sa4Lh-VGe8GToU5W7DRiWf2lMl9B6saPqemiT0ZdHEc,806
|
|
190
191
|
pixeltable/utils/transactional_directory.py,sha256=OFKmu90oP7KwBAljwjnzP_w8euGdAXob3y4Nx9SCNHA,1357
|
|
191
|
-
pixeltable-0.4.
|
|
192
|
-
pixeltable-0.4.
|
|
193
|
-
pixeltable-0.4.
|
|
194
|
-
pixeltable-0.4.
|
|
195
|
-
pixeltable-0.4.
|
|
192
|
+
pixeltable-0.4.4.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
193
|
+
pixeltable-0.4.4.dist-info/METADATA,sha256=vZzbRSRb1dnaspIVYNFnD5Q6NsxIo-zNkY4qCCGBvSk,20577
|
|
194
|
+
pixeltable-0.4.4.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
195
|
+
pixeltable-0.4.4.dist-info/entry_points.txt,sha256=ToOd-pRgG7AitEBgYoBCRRB4-KVDQ0pj_9T4a1LgwA4,97
|
|
196
|
+
pixeltable-0.4.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|