pixeltable 0.2.30__py3-none-any.whl → 0.3.1__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/table.py +212 -173
- pixeltable/catalog/table_version.py +2 -1
- pixeltable/catalog/view.py +3 -5
- pixeltable/dataframe.py +52 -39
- pixeltable/env.py +94 -5
- pixeltable/exec/__init__.py +1 -1
- pixeltable/exec/aggregation_node.py +3 -3
- pixeltable/exec/cache_prefetch_node.py +13 -7
- pixeltable/exec/component_iteration_node.py +3 -9
- pixeltable/exec/data_row_batch.py +17 -5
- pixeltable/exec/exec_node.py +32 -12
- pixeltable/exec/expr_eval/__init__.py +1 -0
- pixeltable/exec/expr_eval/evaluators.py +245 -0
- pixeltable/exec/expr_eval/expr_eval_node.py +404 -0
- pixeltable/exec/expr_eval/globals.py +114 -0
- pixeltable/exec/expr_eval/row_buffer.py +76 -0
- pixeltable/exec/expr_eval/schedulers.py +232 -0
- pixeltable/exec/in_memory_data_node.py +2 -2
- pixeltable/exec/row_update_node.py +14 -14
- pixeltable/exec/sql_node.py +2 -2
- pixeltable/exprs/column_ref.py +5 -1
- pixeltable/exprs/data_row.py +50 -40
- pixeltable/exprs/expr.py +57 -12
- pixeltable/exprs/function_call.py +54 -19
- pixeltable/exprs/inline_expr.py +12 -21
- pixeltable/exprs/literal.py +25 -8
- pixeltable/exprs/row_builder.py +23 -0
- pixeltable/exprs/similarity_expr.py +4 -4
- pixeltable/func/__init__.py +5 -5
- pixeltable/func/aggregate_function.py +4 -0
- pixeltable/func/callable_function.py +54 -6
- pixeltable/func/expr_template_function.py +5 -1
- pixeltable/func/function.py +54 -13
- pixeltable/func/query_template_function.py +56 -10
- pixeltable/func/tools.py +51 -14
- pixeltable/func/udf.py +7 -1
- pixeltable/functions/__init__.py +1 -1
- pixeltable/functions/anthropic.py +108 -21
- pixeltable/functions/gemini.py +2 -6
- pixeltable/functions/huggingface.py +10 -28
- pixeltable/functions/openai.py +225 -28
- pixeltable/globals.py +8 -5
- pixeltable/index/embedding_index.py +90 -38
- pixeltable/io/label_studio.py +1 -1
- pixeltable/metadata/__init__.py +1 -1
- pixeltable/metadata/converters/convert_24.py +11 -2
- pixeltable/metadata/converters/convert_25.py +19 -0
- pixeltable/metadata/notes.py +1 -0
- pixeltable/plan.py +24 -9
- pixeltable/store.py +6 -0
- pixeltable/type_system.py +4 -7
- pixeltable/utils/arrow.py +3 -3
- {pixeltable-0.2.30.dist-info → pixeltable-0.3.1.dist-info}/METADATA +5 -11
- {pixeltable-0.2.30.dist-info → pixeltable-0.3.1.dist-info}/RECORD +59 -53
- pixeltable/exec/expr_eval_node.py +0 -232
- {pixeltable-0.2.30.dist-info → pixeltable-0.3.1.dist-info}/LICENSE +0 -0
- {pixeltable-0.2.30.dist-info → pixeltable-0.3.1.dist-info}/WHEEL +0 -0
- {pixeltable-0.2.30.dist-info → pixeltable-0.3.1.dist-info}/entry_points.txt +0 -0
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import importlib
|
|
2
1
|
from typing import Any, Optional
|
|
3
2
|
|
|
4
3
|
import sqlalchemy as sql
|
|
@@ -23,7 +22,7 @@ def __substitute_md(k: Optional[str], v: Any) -> Optional[tuple[Optional[str], A
|
|
|
23
22
|
'pixeltable.func.expr_template_function.ExprTemplateFunction']):
|
|
24
23
|
if 'path' in v:
|
|
25
24
|
assert 'signature' not in v
|
|
26
|
-
f = resolve_symbol(v['path'])
|
|
25
|
+
f = resolve_symbol(__substitute_path(v['path']))
|
|
27
26
|
assert isinstance(f, func.Function)
|
|
28
27
|
v['signature'] = f.signatures[0].as_dict()
|
|
29
28
|
return k, v
|
|
@@ -45,3 +44,13 @@ def __substitute_md(k: Optional[str], v: Any) -> Optional[tuple[Optional[str], A
|
|
|
45
44
|
return k, v
|
|
46
45
|
|
|
47
46
|
return None
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def __substitute_path(path: str) -> str:
|
|
50
|
+
# Starting with version 25, function signatures are preserved in metadata. To migrate from older
|
|
51
|
+
# versions, it's necessary to resolve the function symbol to get the signature. The following
|
|
52
|
+
# adjustment is necessary for function names that are stored in db artifacts of version < 25, but
|
|
53
|
+
# have changed in some version > 25.
|
|
54
|
+
if path in ['pixeltable.functions.huggingface.clip_text', 'pixeltable.functions.huggingface.clip_image']:
|
|
55
|
+
return 'pixeltable.functions.huggingface.clip'
|
|
56
|
+
return path
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from typing import Any, Optional
|
|
2
|
+
|
|
3
|
+
import sqlalchemy as sql
|
|
4
|
+
|
|
5
|
+
from pixeltable.metadata import register_converter
|
|
6
|
+
from pixeltable.metadata.converters.util import convert_table_md
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@register_converter(version=25)
|
|
10
|
+
def _(engine: sql.engine.Engine) -> None:
|
|
11
|
+
convert_table_md(engine, substitution_fn=__substitute_md)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def __substitute_md(k: Optional[str], v: Any) -> Optional[tuple[Optional[str], Any]]:
|
|
15
|
+
if k == 'path' and (
|
|
16
|
+
v in ['pixeltable.functions.huggingface.clip_text', 'pixeltable.functions.huggingface.clip_image']
|
|
17
|
+
):
|
|
18
|
+
return 'path', 'pixeltable.functions.huggingface.clip'
|
|
19
|
+
return None
|
pixeltable/metadata/notes.py
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
# rather than as a comment, so that the existence of a description can be enforced by
|
|
3
3
|
# the unit tests when new versions are added.
|
|
4
4
|
VERSION_NOTES = {
|
|
5
|
+
26: 'Rename clip_text and clip_image to clip',
|
|
5
6
|
25: 'Functions with multiple signatures',
|
|
6
7
|
24: 'Added TableMd/IndexMd.indexed_col_tbl_id',
|
|
7
8
|
23: 'DataFrame.from_clause',
|
pixeltable/plan.py
CHANGED
|
@@ -5,6 +5,7 @@ import enum
|
|
|
5
5
|
from typing import Any, Iterable, Optional, Sequence, Literal
|
|
6
6
|
from uuid import UUID
|
|
7
7
|
|
|
8
|
+
|
|
8
9
|
import sqlalchemy as sql
|
|
9
10
|
|
|
10
11
|
import pixeltable as pxt
|
|
@@ -166,10 +167,13 @@ class Analyzer:
|
|
|
166
167
|
raise excs.Error(
|
|
167
168
|
f'Invalid non-aggregate expression in aggregate query: {self.select_list[is_agg_output.index(False)]}')
|
|
168
169
|
|
|
169
|
-
# check that filter doesn't contain aggregates
|
|
170
|
+
# check that Where clause and filter doesn't contain aggregates
|
|
171
|
+
if self.sql_where_clause is not None:
|
|
172
|
+
if any(_is_agg_fn_call(e) for e in self.sql_where_clause.subexprs(expr_class=exprs.FunctionCall)):
|
|
173
|
+
raise excs.Error(f'where() cannot contain aggregate functions: {self.sql_where_clause}')
|
|
170
174
|
if self.filter is not None:
|
|
171
175
|
if any(_is_agg_fn_call(e) for e in self.filter.subexprs(expr_class=exprs.FunctionCall)):
|
|
172
|
-
raise excs.Error(f'
|
|
176
|
+
raise excs.Error(f'where() cannot contain aggregate functions: {self.filter}')
|
|
173
177
|
|
|
174
178
|
# check that grouping exprs don't contain aggregates and can be expressed as SQL (we perform sort-based
|
|
175
179
|
# aggregation and rely on the SqlScanNode returning data in the correct order)
|
|
@@ -283,7 +287,8 @@ class Planner:
|
|
|
283
287
|
computed_exprs = row_builder.output_exprs - row_builder.input_exprs
|
|
284
288
|
if len(computed_exprs) > 0:
|
|
285
289
|
# add an ExprEvalNode when there are exprs to compute
|
|
286
|
-
plan = exec.ExprEvalNode(
|
|
290
|
+
plan = exec.ExprEvalNode(
|
|
291
|
+
row_builder, computed_exprs, plan.output_exprs, input=plan, maintain_input_order=False)
|
|
287
292
|
|
|
288
293
|
stored_col_info = row_builder.output_slot_idxs()
|
|
289
294
|
stored_img_col_info = [info for info in stored_col_info if info.col.col_type.is_image_type()]
|
|
@@ -548,7 +553,7 @@ class Planner:
|
|
|
548
553
|
plan = exec.ComponentIterationNode(target, plan)
|
|
549
554
|
if len(view_output_exprs) > 0:
|
|
550
555
|
plan = exec.ExprEvalNode(
|
|
551
|
-
row_builder, output_exprs=view_output_exprs, input_exprs=base_output_exprs,input=plan)
|
|
556
|
+
row_builder, output_exprs=view_output_exprs, input_exprs=base_output_exprs, input=plan)
|
|
552
557
|
|
|
553
558
|
stored_img_col_info = [info for info in row_builder.output_slot_idxs() if info.col.col_type.is_image_type()]
|
|
554
559
|
plan.set_stored_img_cols(stored_img_col_info)
|
|
@@ -750,10 +755,12 @@ class Planner:
|
|
|
750
755
|
ctx.batch_size = 16
|
|
751
756
|
|
|
752
757
|
# do aggregation in SQL if all agg exprs can be translated
|
|
753
|
-
if (
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
758
|
+
if (
|
|
759
|
+
sql_elements.contains_all(analyzer.select_list)
|
|
760
|
+
and sql_elements.contains_all(analyzer.grouping_exprs)
|
|
761
|
+
and isinstance(plan, exec.SqlNode)
|
|
762
|
+
and plan.to_cte() is not None
|
|
763
|
+
):
|
|
757
764
|
plan = exec.SqlAggregationNode(
|
|
758
765
|
row_builder, input=plan, select_list=analyzer.select_list, group_by_items=analyzer.group_by_clause)
|
|
759
766
|
else:
|
|
@@ -770,14 +777,22 @@ class Planner:
|
|
|
770
777
|
# we need an ExprEvalNode to evaluate the remaining output exprs
|
|
771
778
|
plan = exec.ExprEvalNode(row_builder, eval_ctx.target_exprs, sql_exprs, input=plan)
|
|
772
779
|
# we're returning everything to the user, so we might as well do it in a single batch
|
|
780
|
+
# TODO: return smaller batches in order to increase inter-ExecNode parallelism
|
|
773
781
|
ctx.batch_size = 0
|
|
774
782
|
|
|
783
|
+
sql_node = plan.get_node(exec.SqlNode)
|
|
775
784
|
if len(analyzer.order_by_clause) > 0:
|
|
776
785
|
# we have the last SqlNode we created produce the ordering
|
|
777
|
-
sql_node = plan.get_node(exec.SqlNode)
|
|
778
786
|
assert sql_node is not None
|
|
779
787
|
sql_node.set_order_by(analyzer.order_by_clause)
|
|
780
788
|
|
|
789
|
+
# if we don't need an ordered result, tell the ExprEvalNode not to maintain input order (which allows us to
|
|
790
|
+
# return batches earlier)
|
|
791
|
+
if sql_node is not None and len(sql_node.order_by_clause) == 0:
|
|
792
|
+
expr_eval_node = plan.get_node(exec.ExprEvalNode)
|
|
793
|
+
if expr_eval_node is not None:
|
|
794
|
+
expr_eval_node.set_input_order(False)
|
|
795
|
+
|
|
781
796
|
if limit is not None:
|
|
782
797
|
plan.set_limit(limit)
|
|
783
798
|
|
pixeltable/store.py
CHANGED
|
@@ -229,6 +229,7 @@ class StoreBase:
|
|
|
229
229
|
sql.exc.DBAPIError if there was a SQL error during execution
|
|
230
230
|
excs.Error if on_error='abort' and there was an exception during row evaluation
|
|
231
231
|
"""
|
|
232
|
+
assert col.tbl.id == self.tbl_version.id
|
|
232
233
|
num_excs = 0
|
|
233
234
|
num_rows = 0
|
|
234
235
|
|
|
@@ -249,6 +250,7 @@ class StoreBase:
|
|
|
249
250
|
|
|
250
251
|
try:
|
|
251
252
|
# insert rows from exec_plan into temp table
|
|
253
|
+
# TODO: unify the table row construction logic with RowBuilder.create_table_row()
|
|
252
254
|
for row_batch in exec_plan:
|
|
253
255
|
num_rows += len(row_batch)
|
|
254
256
|
tbl_rows: list[dict[str, Any]] = []
|
|
@@ -272,6 +274,10 @@ class StoreBase:
|
|
|
272
274
|
tbl_row[col.sa_errortype_col.name] = error_type
|
|
273
275
|
tbl_row[col.sa_errormsg_col.name] = error_msg
|
|
274
276
|
else:
|
|
277
|
+
if col.col_type.is_image_type() and result_row.file_urls[value_expr_slot_idx] is None:
|
|
278
|
+
# we have yet to store this image
|
|
279
|
+
filepath = str(MediaStore.prepare_media_path(col.tbl.id, col.id, col.tbl.version))
|
|
280
|
+
result_row.flush_img(value_expr_slot_idx, filepath)
|
|
275
281
|
val = result_row.get_stored_val(value_expr_slot_idx, col.sa_col.type)
|
|
276
282
|
if col.col_type.is_media_type():
|
|
277
283
|
val = self._move_tmp_media_file(val, col, result_row.pk[-1])
|
pixeltable/type_system.py
CHANGED
|
@@ -246,8 +246,8 @@ class ColumnType:
|
|
|
246
246
|
col_type = ArrayType.from_literal(val, nullable=nullable)
|
|
247
247
|
if col_type is not None:
|
|
248
248
|
return col_type
|
|
249
|
-
|
|
250
|
-
if isinstance(val,
|
|
249
|
+
# this could still be json-serializable
|
|
250
|
+
if isinstance(val, (list, tuple, dict, np.ndarray, pydantic.BaseModel)):
|
|
251
251
|
try:
|
|
252
252
|
JsonType().validate_literal(val)
|
|
253
253
|
return JsonType(nullable=nullable)
|
|
@@ -659,9 +659,6 @@ class JsonType(ColumnType):
|
|
|
659
659
|
return val_type.print_value(val)
|
|
660
660
|
|
|
661
661
|
def _validate_literal(self, val: Any) -> None:
|
|
662
|
-
if not isinstance(val, (dict, list)):
|
|
663
|
-
# TODO In the future we should accept scalars too, which would enable us to remove this top-level check
|
|
664
|
-
raise TypeError(f'Expected dict or list, got {val.__class__.__name__}')
|
|
665
662
|
if not self.__is_valid_json(val):
|
|
666
663
|
raise TypeError(f'That literal is not a valid Pixeltable JSON object: {val}')
|
|
667
664
|
if self.__validator is not None:
|
|
@@ -869,7 +866,7 @@ class ArrayType(ColumnType):
|
|
|
869
866
|
continue
|
|
870
867
|
if n1 != n2:
|
|
871
868
|
return False
|
|
872
|
-
return val.dtype
|
|
869
|
+
return np.issubdtype(val.dtype, self.numpy_dtype())
|
|
873
870
|
|
|
874
871
|
def _to_json_schema(self) -> dict[str, Any]:
|
|
875
872
|
return {
|
|
@@ -886,7 +883,7 @@ class ArrayType(ColumnType):
|
|
|
886
883
|
f'got ndarray({val.shape}, dtype={val.dtype})'))
|
|
887
884
|
|
|
888
885
|
def _create_literal(self, val: Any) -> Any:
|
|
889
|
-
if isinstance(val, (list,tuple)):
|
|
886
|
+
if isinstance(val, (list, tuple)):
|
|
890
887
|
# map python float to whichever numpy float is
|
|
891
888
|
# declared for this type, rather than assume float64
|
|
892
889
|
return np.array(val, dtype=self.numpy_dtype())
|
pixeltable/utils/arrow.py
CHANGED
|
@@ -75,7 +75,7 @@ def to_arrow_schema(pixeltable_schema: dict[str, Any]) -> pa.Schema:
|
|
|
75
75
|
return pa.schema((name, to_arrow_type(typ)) for name, typ in pixeltable_schema.items()) # type: ignore[misc]
|
|
76
76
|
|
|
77
77
|
|
|
78
|
-
def to_pydict(batch: pa.RecordBatch) -> dict[str, Union[list, np.ndarray]]:
|
|
78
|
+
def to_pydict(batch: Union[pa.Table, pa.RecordBatch]) -> dict[str, Union[list, np.ndarray]]:
|
|
79
79
|
"""Convert a RecordBatch to a dictionary of lists, unlike pa.lib.RecordBatch.to_pydict,
|
|
80
80
|
this function will not convert numpy arrays to lists, and will preserve the original numpy dtype.
|
|
81
81
|
"""
|
|
@@ -84,7 +84,7 @@ def to_pydict(batch: pa.RecordBatch) -> dict[str, Union[list, np.ndarray]]:
|
|
|
84
84
|
col = batch.column(k)
|
|
85
85
|
if isinstance(col.type, pa.FixedShapeTensorType):
|
|
86
86
|
# treat array columns as numpy arrays to easily preserve numpy type
|
|
87
|
-
out[name] = col.to_numpy(zero_copy_only=False)
|
|
87
|
+
out[name] = col.to_numpy(zero_copy_only=False) # type: ignore[call-arg]
|
|
88
88
|
else:
|
|
89
89
|
# for the rest, use pydict to preserve python types
|
|
90
90
|
out[name] = col.to_pylist()
|
|
@@ -92,7 +92,7 @@ def to_pydict(batch: pa.RecordBatch) -> dict[str, Union[list, np.ndarray]]:
|
|
|
92
92
|
return out
|
|
93
93
|
|
|
94
94
|
|
|
95
|
-
def iter_tuples(batch: pa.RecordBatch) -> Iterator[dict[str, Any]]:
|
|
95
|
+
def iter_tuples(batch: Union[pa.Table, pa.RecordBatch]) -> Iterator[dict[str, Any]]:
|
|
96
96
|
"""Convert a RecordBatch to an iterator of dictionaries. also works with pa.Table and pa.RowGroup"""
|
|
97
97
|
pydict = to_pydict(batch)
|
|
98
98
|
assert len(pydict) > 0, 'empty record batch'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pixeltable
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: AI Data Infrastructure: Declarative, Multimodal, and Incremental
|
|
5
5
|
Home-page: https://pixeltable.com/
|
|
6
6
|
License: Apache-2.0
|
|
@@ -27,11 +27,13 @@ Requires-Dist: av (>=10.0.0)
|
|
|
27
27
|
Requires-Dist: beautifulsoup4 (>=4.0.0,<5.0.0)
|
|
28
28
|
Requires-Dist: cloudpickle (>=2.2.1,<3.0.0)
|
|
29
29
|
Requires-Dist: ftfy (>=6.2.0,<7.0.0)
|
|
30
|
+
Requires-Dist: httpx (>=0.27)
|
|
30
31
|
Requires-Dist: jinja2 (>=3.1.3,<4.0.0)
|
|
31
32
|
Requires-Dist: jmespath (>=1.0.1,<2.0.0)
|
|
32
33
|
Requires-Dist: jsonschema (>=4.1.0)
|
|
33
34
|
Requires-Dist: lxml (>=5.0)
|
|
34
35
|
Requires-Dist: more-itertools (>=10.2,<11.0)
|
|
36
|
+
Requires-Dist: nest_asyncio (>=1.5)
|
|
35
37
|
Requires-Dist: numpy (>=1.25,<2.0)
|
|
36
38
|
Requires-Dist: pandas (>=2.0,<3.0)
|
|
37
39
|
Requires-Dist: pgvector (>=0.2.1,<0.3.0)
|
|
@@ -255,7 +257,7 @@ Learn how to interact with inference services such as [Together AI](https://pixe
|
|
|
255
257
|
|
|
256
258
|
```python
|
|
257
259
|
import pixeltable as pxt
|
|
258
|
-
from pixeltable.functions.huggingface import
|
|
260
|
+
from pixeltable.functions.huggingface import clip
|
|
259
261
|
from pixeltable.iterators import FrameIterator
|
|
260
262
|
import PIL.Image
|
|
261
263
|
|
|
@@ -266,16 +268,8 @@ video_table.insert([{'video': '/video.mp4'}])
|
|
|
266
268
|
frames_view = pxt.create_view(
|
|
267
269
|
'frames', video_table, iterator=FrameIterator.create(video=video_table.video))
|
|
268
270
|
|
|
269
|
-
@pxt.expr_udf
|
|
270
|
-
def embed_image(img: PIL.Image.Image):
|
|
271
|
-
return clip_image(img, model_id='openai/clip-vit-base-patch32')
|
|
272
|
-
|
|
273
|
-
@pxt.expr_udf
|
|
274
|
-
def str_embed(s: str):
|
|
275
|
-
return clip_text(s, model_id='openai/clip-vit-base-patch32')
|
|
276
|
-
|
|
277
271
|
# Create an index on the 'frame' column that allows text and image search
|
|
278
|
-
frames_view.add_embedding_index('frame',
|
|
272
|
+
frames_view.add_embedding_index('frame', embed=clip.using('openai/clip-vit-base-patch32'))
|
|
279
273
|
|
|
280
274
|
# Now we will retrieve images based on a sample image
|
|
281
275
|
sample_image = '/image.jpeg'
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
pixeltable/__init__.py,sha256=
|
|
2
|
-
pixeltable/__version__.py,sha256=
|
|
1
|
+
pixeltable/__init__.py,sha256=c-Z21TqJUbzGQKsO4CS4lVFwWlZnVhpIR94cL6RNmDo,1411
|
|
2
|
+
pixeltable/__version__.py,sha256=zVI6ltlHGwKITzBi4TSc2jGBnWUb4mnqjF_PYoGqTuw,112
|
|
3
3
|
pixeltable/catalog/__init__.py,sha256=u8Ods4ncTY7DI5w0jyHVC0QDVDLHAy8Rqia3qsM5OH8,517
|
|
4
4
|
pixeltable/catalog/catalog.py,sha256=tyDyI5wQw7vV6_FChrp9qgGCRClcjiSdW3eygYT0p9s,7849
|
|
5
5
|
pixeltable/catalog/column.py,sha256=ezeKoGl6aBTzSZBihDA6vdETcvyCguAD4OsmrxWs73A,9595
|
|
@@ -10,48 +10,53 @@ pixeltable/catalog/named_function.py,sha256=cWf9WxAagSY9uqE7mM0IwWSsDOvQUkJlcHlG
|
|
|
10
10
|
pixeltable/catalog/path.py,sha256=QgccEi_QOfaKt8YsR2zLtd_z7z7QQkU_1kprJFi2SPQ,1677
|
|
11
11
|
pixeltable/catalog/path_dict.py,sha256=V7YQM0QhUWr4FbgUiDUIweGbmMJr687QCm2p614Xrs0,6473
|
|
12
12
|
pixeltable/catalog/schema_object.py,sha256=NUE6Fx6Km0UUJ6WcE9mOgL2UQCLBMQjINQLp_mljzKA,2382
|
|
13
|
-
pixeltable/catalog/table.py,sha256=
|
|
14
|
-
pixeltable/catalog/table_version.py,sha256=
|
|
13
|
+
pixeltable/catalog/table.py,sha256=Gqb1tT9l8oB5eeeFuj45fy0_1fdCqizmRWvyjFH-U9Y,62404
|
|
14
|
+
pixeltable/catalog/table_version.py,sha256=wuvFYbr6WrwhDWC202tUIgF8T61P69WOtduBUDq5EsI,58601
|
|
15
15
|
pixeltable/catalog/table_version_path.py,sha256=CczGbcz5ESq663arreri_p4chMZHozgG6k3y-ajkJN4,5787
|
|
16
|
-
pixeltable/catalog/view.py,sha256=
|
|
17
|
-
pixeltable/dataframe.py,sha256
|
|
18
|
-
pixeltable/env.py,sha256=
|
|
16
|
+
pixeltable/catalog/view.py,sha256=qUjou_z_YwKTqTIRUY4Q3JxWUEiKvl2pDi7DNOnw4fw,10709
|
|
17
|
+
pixeltable/dataframe.py,sha256=KrAB-l_qdArlT3pnlSH69k0mqs0AK2wFhQ4V_7Wcjyw,48639
|
|
18
|
+
pixeltable/env.py,sha256=VMS4Kj-RVEeFgmLzuQ2sFRQFtG4dLRbBZ9VzVzvO7hk,34993
|
|
19
19
|
pixeltable/exceptions.py,sha256=NuFY2WtkQpLfLHT_J70kOw9Tr0kEDkkgo-u7As4Gaq4,410
|
|
20
|
-
pixeltable/exec/__init__.py,sha256=
|
|
21
|
-
pixeltable/exec/aggregation_node.py,sha256=
|
|
22
|
-
pixeltable/exec/cache_prefetch_node.py,sha256=
|
|
23
|
-
pixeltable/exec/component_iteration_node.py,sha256=
|
|
24
|
-
pixeltable/exec/data_row_batch.py,sha256=
|
|
20
|
+
pixeltable/exec/__init__.py,sha256=E_ub_ftAJVebEmKHZs47egeJqMfAbbx4SS1l7jR-Nd0,489
|
|
21
|
+
pixeltable/exec/aggregation_node.py,sha256=iE3UHHW0IbkHsY7kYJAg6m1UKyKUu2_tJuzgL_rQUVE,4038
|
|
22
|
+
pixeltable/exec/cache_prefetch_node.py,sha256=9jwCzWuAhymff6xwvBietw2S_eYno6y2n59QWbzowns,12220
|
|
23
|
+
pixeltable/exec/component_iteration_node.py,sha256=4DkEzekeuaKok-VjI0Y3FIMF7BdoKHNmX2tAM10hsOY,4730
|
|
24
|
+
pixeltable/exec/data_row_batch.py,sha256=5WhdS3ahtCP3wROw4NPJjtvaQUAWKwyN1rHKbfdT6TU,3308
|
|
25
25
|
pixeltable/exec/exec_context.py,sha256=-FbfYLcGOL7mviru5dE1A7x4YxLbdKoXBHN3OSbqbcg,1084
|
|
26
|
-
pixeltable/exec/exec_node.py,sha256=
|
|
27
|
-
pixeltable/exec/
|
|
28
|
-
pixeltable/exec/
|
|
29
|
-
pixeltable/exec/
|
|
30
|
-
pixeltable/exec/
|
|
26
|
+
pixeltable/exec/exec_node.py,sha256=qDp63PFlMQUVwav0JIjuP0r0BH9EwW7s_NgqFE_Zn20,3735
|
|
27
|
+
pixeltable/exec/expr_eval/__init__.py,sha256=t0o2T7MxfH09TI7KlzxEjPUySejn2vkK06LC8t4FjsQ,41
|
|
28
|
+
pixeltable/exec/expr_eval/evaluators.py,sha256=HtcrWivzoGWzpEAYRgyKvFRGVKq4rMO-QpK7fZq4fE8,11349
|
|
29
|
+
pixeltable/exec/expr_eval/expr_eval_node.py,sha256=37c5eevFMAvvYmSbqzcO4Wjxouy3R5a5vSnLLjifeic,19786
|
|
30
|
+
pixeltable/exec/expr_eval/globals.py,sha256=UAlOAOJNHw4sJ3CXXk2Gh0qhOxEm2cGtNlkvvvebx1g,3895
|
|
31
|
+
pixeltable/exec/expr_eval/row_buffer.py,sha256=Wjc6ZklxSW4-sCAMEGIzESII1uuC6Urzmq6JeUO3ALA,2737
|
|
32
|
+
pixeltable/exec/expr_eval/schedulers.py,sha256=MqO0r5TaQhywozpRPL87S8YwZmKEc8sdEerX2LHDaCY,10962
|
|
33
|
+
pixeltable/exec/in_memory_data_node.py,sha256=CwuwkA2xdyApMfPfSQamlLdbb-IQn7R7zeBBJiI8I7g,3479
|
|
34
|
+
pixeltable/exec/row_update_node.py,sha256=MEvI3Yzw6YcUDTufSNVNVtyG83Hj6zHzEI9fvKtAgRQ,2859
|
|
35
|
+
pixeltable/exec/sql_node.py,sha256=vMHNHzhrlk2Ej58vMZzk7hYAeHFHlBtkLwYZsOVn3CQ,19573
|
|
31
36
|
pixeltable/exprs/__init__.py,sha256=zx5OTxfUpFs_U36CAO-81v6RCX49wqRw3eHaLfytvkE,1044
|
|
32
37
|
pixeltable/exprs/arithmetic_expr.py,sha256=I_OESFmUHlMSDmMy699-2JnFb7KbRjvh1GF06u8rBQ8,6322
|
|
33
38
|
pixeltable/exprs/array_slice.py,sha256=eSqtQRxvweW_CwTRgkDD189i-BmTJ48dsW3znRPDebg,2180
|
|
34
39
|
pixeltable/exprs/column_property_ref.py,sha256=ycHqZ7_LTFz_gag_53T5KRN6RfZckpw83DvvtxmcynM,3788
|
|
35
|
-
pixeltable/exprs/column_ref.py,sha256=
|
|
40
|
+
pixeltable/exprs/column_ref.py,sha256=win5w5oU0isvpa6bcB9c3I-ufI50RvZ2YOnNcSq-NX0,10886
|
|
36
41
|
pixeltable/exprs/comparison.py,sha256=w1FuhnGsJRoCLYX3ztIHZDywf8nZeT2tKKwRjIQa6Lc,5101
|
|
37
42
|
pixeltable/exprs/compound_predicate.py,sha256=6N_zN4A_hKGLordNY0si-8KHeFWG1UtyeiTHcs69IrM,3846
|
|
38
|
-
pixeltable/exprs/data_row.py,sha256=
|
|
39
|
-
pixeltable/exprs/expr.py,sha256=
|
|
43
|
+
pixeltable/exprs/data_row.py,sha256=11WAmLmkhrjsKvKfPwj0dg8IkbeLwVcbFpK6eq3VUsM,10577
|
|
44
|
+
pixeltable/exprs/expr.py,sha256=JYjdweVm6z5Fw37_WhefGDaVN_2jQtUV9BiVwt20oYE,32203
|
|
40
45
|
pixeltable/exprs/expr_dict.py,sha256=xkvo_iVPOLMq3WkBZQ2FOoXqYoebuV6XGlidPJxdOkY,1588
|
|
41
46
|
pixeltable/exprs/expr_set.py,sha256=GeUQXadzJbAqQOGdsO6Z5hPAp0A03YUr2hyIvfZDYEE,2576
|
|
42
|
-
pixeltable/exprs/function_call.py,sha256=
|
|
47
|
+
pixeltable/exprs/function_call.py,sha256=DrBFDU2cKVBj7TiDsAJFuElFMClg1RO9W8klnLNz8l0,28033
|
|
43
48
|
pixeltable/exprs/globals.py,sha256=5pwn5vdi-EEpYBpPty658YV45myY7W0iFIfTH7QIzak,2032
|
|
44
49
|
pixeltable/exprs/in_predicate.py,sha256=VxSn9TA_3UDHTC6rqQ12No5HbZO7SuE4DglpwAoI58s,3783
|
|
45
|
-
pixeltable/exprs/inline_expr.py,sha256=
|
|
50
|
+
pixeltable/exprs/inline_expr.py,sha256=PRiW4kvxBmvbJD27Rr-xQzcL7f5YWmnHd3GuhwOGocw,7707
|
|
46
51
|
pixeltable/exprs/is_null.py,sha256=rnusy1j33o48Z-qjguj09G7AmsBHFJI5SWQXOAjgKQw,1092
|
|
47
52
|
pixeltable/exprs/json_mapper.py,sha256=yhefrgvy76czfyTER_oRXnfxOVQb42Q4Us1KkXhSsLM,4545
|
|
48
53
|
pixeltable/exprs/json_path.py,sha256=UTf3VUcyEmEBJs6yU4kONGcZ8fy1o6mIe9MlntnUd6M,6811
|
|
49
|
-
pixeltable/exprs/literal.py,sha256=
|
|
54
|
+
pixeltable/exprs/literal.py,sha256=Nhh-fXYMqGL4Tfm2YiFUd4ALMjzG7nJ2H4jHZe9XS1Y,4394
|
|
50
55
|
pixeltable/exprs/method_ref.py,sha256=3O_uFMP6wWGiwJWri8on-47EVl-QD3AiAc7hXJMADxs,2615
|
|
51
56
|
pixeltable/exprs/object_ref.py,sha256=GVg6uxZnKwFVTC0kouJq-wMFP-gUPb_ld_syHrsGMdE,1283
|
|
52
|
-
pixeltable/exprs/row_builder.py,sha256=
|
|
57
|
+
pixeltable/exprs/row_builder.py,sha256=hpvmQyBie5pRtOkMKQu0xCxB18EK8iw_aUbtxYlzWcs,19862
|
|
53
58
|
pixeltable/exprs/rowid_ref.py,sha256=iNBZ0wIhBAGkGCrNP9UQ2FeK8OajVX-eI4dtDA_bfHU,4401
|
|
54
|
-
pixeltable/exprs/similarity_expr.py,sha256=
|
|
59
|
+
pixeltable/exprs/similarity_expr.py,sha256=GhiopGxN3wu5MOEqfWN4PNbqgSszg2VIC1_bqVPpm3Q,4333
|
|
55
60
|
pixeltable/exprs/sql_element_cache.py,sha256=8i9ZslKWKTd1lUN7JvwRtQ-PFD1QMi5LBYdwcGA2-p0,1364
|
|
56
61
|
pixeltable/exprs/type_cast.py,sha256=DzVVpMo3msAJm42SAGOV4P0ECyM6LEao3zdfmob4MQo,1862
|
|
57
62
|
pixeltable/exprs/variable.py,sha256=3ZV3HzqULk05LKGG1p1T_xIlBfhqHIK4KJSCgoCDDSY,1488
|
|
@@ -59,31 +64,31 @@ pixeltable/ext/__init__.py,sha256=iO0J_Jfnv38F5y40sDAW54gpXjIyZgOGgoWQJAwjQec,42
|
|
|
59
64
|
pixeltable/ext/functions/__init__.py,sha256=hIjPEKC5E5uJOXlQqUyhP9yn9ZqWOCJAlj0kXWDlhlE,159
|
|
60
65
|
pixeltable/ext/functions/whisperx.py,sha256=jojjNhazcYiAh1scwUl-erhIDRr4kOTkcLrjy0xcp6g,2325
|
|
61
66
|
pixeltable/ext/functions/yolox.py,sha256=k-pQTelv4Tea3AXvDB7Kc7YCIa1uexjVGqxETP0B_hc,5351
|
|
62
|
-
pixeltable/func/__init__.py,sha256=
|
|
63
|
-
pixeltable/func/aggregate_function.py,sha256=
|
|
64
|
-
pixeltable/func/callable_function.py,sha256=
|
|
65
|
-
pixeltable/func/expr_template_function.py,sha256=
|
|
66
|
-
pixeltable/func/function.py,sha256=
|
|
67
|
+
pixeltable/func/__init__.py,sha256=Tmy5srLdxcWDwxwnXXj2mTNUMimdYY-MdU6fJ9SpePc,457
|
|
68
|
+
pixeltable/func/aggregate_function.py,sha256=eRPKCX2gdpEokyn5tKWxgbrC2UneaC0o2zIUp39Gd-w,12717
|
|
69
|
+
pixeltable/func/callable_function.py,sha256=KL69czs2EZ9Fv5EoDT4xaXILePhaV9owTBNBgtNU4RU,8941
|
|
70
|
+
pixeltable/func/expr_template_function.py,sha256=prKOIfO5rO_M3y6lSOB2zTYqZYb2nycbJ5m5FlJQ27E,5454
|
|
71
|
+
pixeltable/func/function.py,sha256=Ida2SOKQzryiuOqQDF5l9Q-8LmmGx1rNvzxHwuOrtsg,18853
|
|
67
72
|
pixeltable/func/function_registry.py,sha256=Ps09iPDRJRKj-NQtancrI07zqFBIPpASGZ636mpBiI0,12333
|
|
68
73
|
pixeltable/func/globals.py,sha256=sEwn6lGgHMp6VQORb_P5qRd_-Q2_bUSqvqM9-XPN_ec,1483
|
|
69
|
-
pixeltable/func/query_template_function.py,sha256=
|
|
74
|
+
pixeltable/func/query_template_function.py,sha256=zaRpthtFDsN0RGsZMebXiCSukW7oBHY4oskUx_93H8Y,5316
|
|
70
75
|
pixeltable/func/signature.py,sha256=wWf07OawOwDmqZOjUPgHJHAhAQ-fd61PGBx82aWLBgA,11212
|
|
71
|
-
pixeltable/func/tools.py,sha256=
|
|
72
|
-
pixeltable/func/udf.py,sha256=
|
|
73
|
-
pixeltable/functions/__init__.py,sha256=
|
|
74
|
-
pixeltable/functions/anthropic.py,sha256=
|
|
76
|
+
pixeltable/func/tools.py,sha256=7OAHVb9KbmcPtfMWsbKAoRu3kx-_japSTE-hgRQJefM,5988
|
|
77
|
+
pixeltable/func/udf.py,sha256=p7imgwk7S03q3lHZxqAZUKr63XSeSsrD8kWTbwOLQWo,8882
|
|
78
|
+
pixeltable/functions/__init__.py,sha256=C7Okwst3JdhzwIFWXhyJ3F0EHKGKor2R8dRMvQ3y6Us,428
|
|
79
|
+
pixeltable/functions/anthropic.py,sha256=rSgMWmR2YVRfrdbbAPY5OvKkbyV1DHBJIHFGdDwVnP4,8800
|
|
75
80
|
pixeltable/functions/audio.py,sha256=7213nTnqKJ6vM9kalaoJ283OwX5SGEJN10vDhaRNZ6E,644
|
|
76
81
|
pixeltable/functions/fireworks.py,sha256=qwFC_eIaDs-glxyJ_IVXaNGkpgPzeRsQ_SdpzueBxq0,2605
|
|
77
|
-
pixeltable/functions/gemini.py,sha256=
|
|
82
|
+
pixeltable/functions/gemini.py,sha256=0aqsDpxI0AgeWu6zXQxtFbp3nhhuwXqzulZyot6UKdg,2613
|
|
78
83
|
pixeltable/functions/globals.py,sha256=Q5S84Vk_ovCADLivXkn4vfUnX8oSgW8v1dZ0aPoz7C4,4844
|
|
79
|
-
pixeltable/functions/huggingface.py,sha256=
|
|
84
|
+
pixeltable/functions/huggingface.py,sha256=fXcj6NC5Hz_nYE-0CjvSJ1sD3Jq726hQXzueqnQ6Kr4,20576
|
|
80
85
|
pixeltable/functions/image.py,sha256=3Qm4ybAT_o4YUl3bzhEXy8dKOwgZ7RCUV-ky-dbL_jc,13836
|
|
81
86
|
pixeltable/functions/json.py,sha256=cptFpuxQED5wSXXsH8steeHu3pCkZ_zXRE7lccjXybU,756
|
|
82
87
|
pixeltable/functions/llama_cpp.py,sha256=1awALuAXVpQH64l7vQlM8gvxLDix4c1-6DV3nG5RHu4,3881
|
|
83
88
|
pixeltable/functions/math.py,sha256=WPoH9zD9_GdwvBs-FSC3Sqb70gOPNouhPcBZABsuLwI,1541
|
|
84
89
|
pixeltable/functions/mistralai.py,sha256=GpxtT-a8ltx1kQC8XTJRflxkh-17VhzzFTkxqIUsba8,5494
|
|
85
90
|
pixeltable/functions/ollama.py,sha256=z-g0cCJ-WMf6RI3SXIVVbbOlrWNR8nxGTyzET1rratU,4320
|
|
86
|
-
pixeltable/functions/openai.py,sha256=
|
|
91
|
+
pixeltable/functions/openai.py,sha256=Sh2zqwW72CYiMoyEELLpY1fwTmxuLGnAQbtEkmTac4c,24030
|
|
87
92
|
pixeltable/functions/replicate.py,sha256=j8ZedScOMInmHWmriQSUOviw6tp8gQr-W6n21PNNL2g,2188
|
|
88
93
|
pixeltable/functions/string.py,sha256=VqzhVildxTt_XblW89Kl5Zd6MVOU71eaX2LTMY5jkUg,20366
|
|
89
94
|
pixeltable/functions/timestamp.py,sha256=KOm5eVF51PqOCTqwq8cKCAEJNWMgu2xN_yTtGf7yixU,9095
|
|
@@ -92,17 +97,17 @@ pixeltable/functions/util.py,sha256=GgKTzCjvzUQNjWtSObTkfxkvJ9GVUOzKimY45WhE25M,
|
|
|
92
97
|
pixeltable/functions/video.py,sha256=12jnOdU0G-Hk42rJx-S5QC77-bDkUflkxfkjej8n5pM,6702
|
|
93
98
|
pixeltable/functions/vision.py,sha256=MEgkNp-4tUUeQS05VEJBrMgQFM48aNsNlksfAl9rH7w,15494
|
|
94
99
|
pixeltable/functions/whisper.py,sha256=f2wqRd0n9jSBqRZN3W93UaetiAHtbsK0j9jXR2j2kkQ,2913
|
|
95
|
-
pixeltable/globals.py,sha256=
|
|
100
|
+
pixeltable/globals.py,sha256=9UfD7FOn71dbzPZjV-LxzhxXBhwPcpLt46J0_RVPynk,33899
|
|
96
101
|
pixeltable/index/__init__.py,sha256=XBwetNQQwnz0fiKwonOKhyy_U32l_cjt77kNvEIdjWs,102
|
|
97
102
|
pixeltable/index/base.py,sha256=zo0YvJI3oXiK6hZJztB36ZftKKhLfO75Zq3t-PeQA6M,1556
|
|
98
103
|
pixeltable/index/btree.py,sha256=JFerLyyLoBaD0FSF_jJ6iJFBVa-z_et--KdNR02xjRg,2264
|
|
99
|
-
pixeltable/index/embedding_index.py,sha256=
|
|
104
|
+
pixeltable/index/embedding_index.py,sha256=xXqUlDGss-a-nA1TFhixF_NY7HOmE3YZGpT-4PG3O74,11177
|
|
100
105
|
pixeltable/io/__init__.py,sha256=j3qDyGO1ejLce-UzIncK3eRqyOCLoOlDqClecMBSJGc,563
|
|
101
106
|
pixeltable/io/external_store.py,sha256=H1jt7MDn464QRgBvU-PmcPcFlo3EZBCG7fKWEZXOfyc,16676
|
|
102
107
|
pixeltable/io/fiftyone.py,sha256=hH-FahW6BuMQY8lGa2atnNnJto_pK8kWrP_y_EMsq6g,6965
|
|
103
108
|
pixeltable/io/globals.py,sha256=9S9wnlIAuhZq7eC_GklTM_UX0UATK9fEagk8-SRCeXQ,17794
|
|
104
109
|
pixeltable/io/hf_datasets.py,sha256=o5fqm2CJAjhFd3z-NYGxN0jM1tfrp4szuUX0TGnyNRY,8316
|
|
105
|
-
pixeltable/io/label_studio.py,sha256=
|
|
110
|
+
pixeltable/io/label_studio.py,sha256=Yx2ES_Y32eZA8JvJ1k17tSU0GiRTcU0_R116c7RCbZo,31091
|
|
106
111
|
pixeltable/io/pandas.py,sha256=7eHg7wnAfRA9eBk4iC0iSSVTKOM59Ne4pXokKWdt3dY,9793
|
|
107
112
|
pixeltable/io/parquet.py,sha256=bvwTRIKhS99M3bAcAP63jnh5-R6Qww1SrYBGWjZvN1g,8800
|
|
108
113
|
pixeltable/iterators/__init__.py,sha256=qA9cJTwPO3gk-7y8mUXw2anWSbnUAVGwzl52SxiUjNU,398
|
|
@@ -111,7 +116,7 @@ pixeltable/iterators/document.py,sha256=e5EMUAW4f5SqfC5mRN7Oo2E3gw_vcMSzq2707NVL
|
|
|
111
116
|
pixeltable/iterators/image.py,sha256=7eJupbyLEl_q4bemEozL8WgTgkxjl-DYnSXyHTQ7Rck,3628
|
|
112
117
|
pixeltable/iterators/string.py,sha256=NG_fWc_GAITDfzl6MvrDOMrSoMcZdMZf6hPQztCSatE,1305
|
|
113
118
|
pixeltable/iterators/video.py,sha256=anedQpSOnjYhHLa8UiEx-6ROagb14rpXh9am8oTriUg,9382
|
|
114
|
-
pixeltable/metadata/__init__.py,sha256=
|
|
119
|
+
pixeltable/metadata/__init__.py,sha256=S99VPq09bEYI7nF6HQ55Fyp9bJ0TUhk9L9gsOQi5XT4,2209
|
|
115
120
|
pixeltable/metadata/converters/convert_10.py,sha256=J1_r7LNNAWTdb042AwqFpJ4sEB-i4qhUdk5iOjcZk34,719
|
|
116
121
|
pixeltable/metadata/converters/convert_12.py,sha256=Ci-qyZW1gqci-8wnjeOB5afdq7KTuN-hVSV9OqSPx8g,162
|
|
117
122
|
pixeltable/metadata/converters/convert_13.py,sha256=yFR6lD3pOrZ46ZQBFKYvxiIYa7rRxh46Bsq7yiCBNak,1356
|
|
@@ -125,16 +130,17 @@ pixeltable/metadata/converters/convert_20.py,sha256=NLMeke9QUGqIJUe5MNqKmVdaLs6p
|
|
|
125
130
|
pixeltable/metadata/converters/convert_21.py,sha256=YTztkbqOC2zQcTWrXfhrP8diUbfxy5DHwsu_IT-bBok,1115
|
|
126
131
|
pixeltable/metadata/converters/convert_22.py,sha256=f_oauWGEiefr9tZOtGBJMcqqIsTmJwhLNr6DqKlZZkg,590
|
|
127
132
|
pixeltable/metadata/converters/convert_23.py,sha256=ih_3st9Y6A4ZbI8G5HTaUE9xDhiClN-QaT1k1iATIb4,1235
|
|
128
|
-
pixeltable/metadata/converters/convert_24.py,sha256=
|
|
133
|
+
pixeltable/metadata/converters/convert_24.py,sha256=cBzfCqbPgYrWDO0DmJ019VVkbe2CZXTS4xF6q4LZYKM,2401
|
|
134
|
+
pixeltable/metadata/converters/convert_25.py,sha256=3sCXMbHiLJWMvbghj-XaeW4_1xSECivlbsdGtGSmntE,620
|
|
129
135
|
pixeltable/metadata/converters/util.py,sha256=NgzoKralRIXwOqtguifVsBbpEN2M2X1v8lvOnsdGnPs,6100
|
|
130
|
-
pixeltable/metadata/notes.py,sha256=
|
|
136
|
+
pixeltable/metadata/notes.py,sha256=RsyIuwl3KhFRstB6cLX8ySWfIx67LAyr05HYXovu7Yc,779
|
|
131
137
|
pixeltable/metadata/schema.py,sha256=H9t51cbhXOhNu9Xog2VTjZlkTCx4cjQAlwOXi3HSd2E,9448
|
|
132
|
-
pixeltable/plan.py,sha256=
|
|
138
|
+
pixeltable/plan.py,sha256=DgzP5kDmBooaUioZ0KBlSUcx_jpqy456CnbDRVzFBJM,41501
|
|
133
139
|
pixeltable/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
134
|
-
pixeltable/store.py,sha256
|
|
135
|
-
pixeltable/type_system.py,sha256=
|
|
140
|
+
pixeltable/store.py,sha256=-A7oRGHDpvhUZzx68QSde0t2NvUjeM1rOw9KdwukQ9s,22497
|
|
141
|
+
pixeltable/type_system.py,sha256=nR004iZjvA5BIBSXsBXaHbpUPbddtiUCUzB0To1Bakw,48115
|
|
136
142
|
pixeltable/utils/__init__.py,sha256=UYlrf6TIWJT0g-Hac0b34-dEk478B5Qx8dGco34YlIk,439
|
|
137
|
-
pixeltable/utils/arrow.py,sha256=
|
|
143
|
+
pixeltable/utils/arrow.py,sha256=iuZhueel1FT_3UDAMITFXxodLB7w8TrUpsMpie3IDXg,3991
|
|
138
144
|
pixeltable/utils/coco.py,sha256=WCUyoj0dTyJFbPB7frEQUvY92SlEPxQ068r-3QAwROE,7285
|
|
139
145
|
pixeltable/utils/code.py,sha256=AOw1u2r8_DQXpX-lxJhyHWARGrCRDXOJHFVgKOi54Uc,1231
|
|
140
146
|
pixeltable/utils/description_helper.py,sha256=P-8EE2pRFP8s3coe73frgV68yt4Dp3saErCUehMxKUw,3759
|
|
@@ -147,8 +153,8 @@ pixeltable/utils/pytorch.py,sha256=6RvOCjy_QV4gc-aht-3d0zoASkuv-warfpl87vgmuKw,3
|
|
|
147
153
|
pixeltable/utils/s3.py,sha256=huA5hxDGkPIu18zWet76o0FsO7Vbtp-iPmnOzCe-MvA,586
|
|
148
154
|
pixeltable/utils/sql.py,sha256=j_tj0h4ffm-DhUIJbvGphxrVyBKlNTwDKqWGhRQ5_PY,795
|
|
149
155
|
pixeltable/utils/transactional_directory.py,sha256=UGzCrGtLR3hEEf8sYGuWBzLVFAEQml3vdIavigWeTBM,1349
|
|
150
|
-
pixeltable-0.
|
|
151
|
-
pixeltable-0.
|
|
152
|
-
pixeltable-0.
|
|
153
|
-
pixeltable-0.
|
|
154
|
-
pixeltable-0.
|
|
156
|
+
pixeltable-0.3.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
157
|
+
pixeltable-0.3.1.dist-info/METADATA,sha256=tRC6nn3plpwtLqC5TZsNDfDRB9SCj2NyNJIvzK6kWMA,19370
|
|
158
|
+
pixeltable-0.3.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
159
|
+
pixeltable-0.3.1.dist-info/entry_points.txt,sha256=ToOd-pRgG7AitEBgYoBCRRB4-KVDQ0pj_9T4a1LgwA4,97
|
|
160
|
+
pixeltable-0.3.1.dist-info/RECORD,,
|