pixeltable 0.2.3__py3-none-any.whl → 0.2.5__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.

Files changed (63) hide show
  1. pixeltable/catalog/column.py +26 -49
  2. pixeltable/catalog/insertable_table.py +7 -4
  3. pixeltable/catalog/table.py +163 -57
  4. pixeltable/catalog/table_version.py +416 -140
  5. pixeltable/catalog/table_version_path.py +2 -2
  6. pixeltable/client.py +72 -6
  7. pixeltable/dataframe.py +65 -21
  8. pixeltable/env.py +52 -53
  9. pixeltable/exec/cache_prefetch_node.py +1 -1
  10. pixeltable/exec/in_memory_data_node.py +11 -7
  11. pixeltable/exprs/comparison.py +3 -3
  12. pixeltable/exprs/data_row.py +5 -1
  13. pixeltable/exprs/literal.py +16 -4
  14. pixeltable/exprs/row_builder.py +8 -40
  15. pixeltable/ext/__init__.py +5 -0
  16. pixeltable/ext/functions/yolox.py +92 -0
  17. pixeltable/func/aggregate_function.py +15 -15
  18. pixeltable/func/expr_template_function.py +9 -1
  19. pixeltable/func/globals.py +24 -14
  20. pixeltable/func/signature.py +18 -12
  21. pixeltable/func/udf.py +7 -2
  22. pixeltable/functions/__init__.py +9 -9
  23. pixeltable/functions/eval.py +7 -8
  24. pixeltable/functions/fireworks.py +10 -37
  25. pixeltable/functions/huggingface.py +47 -19
  26. pixeltable/functions/openai.py +192 -24
  27. pixeltable/functions/together.py +104 -9
  28. pixeltable/functions/util.py +11 -0
  29. pixeltable/index/__init__.py +2 -0
  30. pixeltable/index/base.py +49 -0
  31. pixeltable/index/embedding_index.py +95 -0
  32. pixeltable/metadata/schema.py +45 -22
  33. pixeltable/plan.py +15 -34
  34. pixeltable/store.py +38 -41
  35. pixeltable/tests/conftest.py +8 -14
  36. pixeltable/tests/ext/test_yolox.py +21 -0
  37. pixeltable/tests/functions/test_fireworks.py +43 -0
  38. pixeltable/tests/functions/test_functions.py +60 -0
  39. pixeltable/tests/{test_functions.py → functions/test_huggingface.py} +7 -143
  40. pixeltable/tests/functions/test_openai.py +162 -0
  41. pixeltable/tests/functions/test_together.py +112 -0
  42. pixeltable/tests/test_component_view.py +14 -5
  43. pixeltable/tests/test_dataframe.py +23 -22
  44. pixeltable/tests/test_exprs.py +99 -102
  45. pixeltable/tests/test_function.py +51 -43
  46. pixeltable/tests/test_index.py +138 -0
  47. pixeltable/tests/test_migration.py +2 -1
  48. pixeltable/tests/test_snapshot.py +24 -1
  49. pixeltable/tests/test_table.py +205 -26
  50. pixeltable/tests/test_types.py +30 -0
  51. pixeltable/tests/test_video.py +16 -16
  52. pixeltable/tests/test_view.py +5 -0
  53. pixeltable/tests/utils.py +171 -14
  54. pixeltable/tool/create_test_db_dump.py +16 -0
  55. pixeltable/type_system.py +77 -128
  56. pixeltable/utils/arrow.py +98 -0
  57. pixeltable/utils/hf_datasets.py +157 -0
  58. pixeltable/utils/parquet.py +68 -27
  59. pixeltable/utils/pytorch.py +16 -97
  60. {pixeltable-0.2.3.dist-info → pixeltable-0.2.5.dist-info}/METADATA +35 -28
  61. {pixeltable-0.2.3.dist-info → pixeltable-0.2.5.dist-info}/RECORD +63 -50
  62. {pixeltable-0.2.3.dist-info → pixeltable-0.2.5.dist-info}/LICENSE +0 -0
  63. {pixeltable-0.2.3.dist-info → pixeltable-0.2.5.dist-info}/WHEEL +0 -0
@@ -1,14 +1,24 @@
1
+ import io
1
2
  import json
3
+ import logging
4
+ from collections import deque
5
+ from pathlib import Path
6
+ from typing import Dict, List, Optional, Union
7
+
8
+ import numpy as np
2
9
  import PIL.Image
3
- import io
4
- import pyarrow.parquet as pq
5
10
  import pyarrow as pa
6
- import numpy as np
7
- from pathlib import Path
8
- from collections import deque
11
+ import pyarrow.parquet
9
12
 
10
- from typing import List, Tuple, Any, Dict
13
+ import pixeltable.type_system as ts
14
+ from pixeltable.utils.arrow import iter_tuples, to_arrow_schema, to_pixeltable_schema
11
15
  from pixeltable.utils.transactional_directory import transactional_directory
16
+ import pixeltable.exceptions as exc
17
+
18
+ import random
19
+
20
+ _logger = logging.getLogger(__name__)
21
+
12
22
 
13
23
  def _write_batch(value_batch : Dict[str, deque], schema : pa.Schema, output_path : Path) -> None:
14
24
  pydict = {}
@@ -20,18 +30,18 @@ def _write_batch(value_batch : Dict[str, deque], schema : pa.Schema, output_path
20
30
  pydict[field.name] = value_batch[field.name]
21
31
 
22
32
  tab = pa.Table.from_pydict(pydict, schema=schema)
23
- pq.write_table(tab, output_path)
33
+ pa.parquet.write_table(tab, output_path)
24
34
 
25
35
  def save_parquet(df: 'pixeltable.DataFrame', dest_path: Path, partition_size_bytes: int = 100_000_000) -> None:
26
36
  """
27
37
  Internal method to stream dataframe data to parquet format.
28
38
  Does not materialize the dataset to memory.
29
39
 
30
- It preserves pixeltable type metadata in a json file, which would otherwise
40
+ It preserves pixeltable type metadata in a json file, which would otherwise
31
41
  not be available in the parquet format.
32
42
 
33
43
  Images are stored inline in a compressed format in their parquet file.
34
-
44
+
35
45
  Args:
36
46
  df : dataframe to save.
37
47
  dest_path : path to directory to save the parquet files to.
@@ -39,10 +49,9 @@ def save_parquet(df: 'pixeltable.DataFrame', dest_path: Path, partition_size_byt
39
49
  """
40
50
  column_names = df.get_column_names()
41
51
  column_types = df.get_column_types()
42
-
43
52
  type_dict = {k: v.as_dict() for k, v in zip(column_names, column_types)}
53
+ arrow_schema = to_arrow_schema(dict(zip(column_names, column_types)))
44
54
 
45
- arrow_schema = pa.schema([pa.field(name, column_types[i].to_arrow_type()) for i, name in enumerate(column_names)])
46
55
  # store the changes atomically
47
56
  with transactional_directory(dest_path) as temp_path:
48
57
  # dump metadata json file so we can inspect what was the source of the parquet file later on.
@@ -65,8 +74,9 @@ def save_parquet(df: 'pixeltable.DataFrame', dest_path: Path, partition_size_byt
65
74
  # images get inlined into the parquet file
66
75
  if data_row.file_paths is not None and data_row.file_paths[e.slot_idx] is not None:
67
76
  # if there is a file, read directly to preserve information
68
- val = open(data_row.file_paths[e.slot_idx], 'rb').read()
69
- elif isinstance(val, PIL.Image.Image):
77
+ with open(data_row.file_paths[e.slot_idx], 'rb') as f:
78
+ val = f.read()
79
+ elif isinstance(val, PIL.Image.Image):
70
80
  # if no file available, eg. bc it is computed, convert to png
71
81
  buf = io.BytesIO()
72
82
  val.save(buf, format='PNG')
@@ -109,18 +119,49 @@ def save_parquet(df: 'pixeltable.DataFrame', dest_path: Path, partition_size_byt
109
119
 
110
120
  _write_batch(current_value_batch, arrow_schema, temp_path / f'part-{batch_num:05d}.parquet')
111
121
 
112
- def get_part_metadata(path : Path) -> List[Tuple[str, int]]:
113
- """
114
- Args:
115
- path: path to directory containing parquet files.
116
- Returns:
117
- A list of (file_name, num_rows) tuples for the parquet files in file name order.
118
- """
119
- parts = sorted([f for f in path.iterdir() if f.suffix == '.parquet'])
120
- rows_per_file = {}
121
-
122
- for part in parts:
123
- parquet_file = pq.ParquetFile(str(part))
124
- rows_per_file[part] = parquet_file.metadata.num_rows
125
122
 
126
- return [(file, num_rows) for file, num_rows in rows_per_file.items()]
123
+ def parquet_schema_to_pixeltable_schema(parquet_path: str) -> Dict[str, Optional[ts.ColumnType]]:
124
+ """Generate a default pixeltable schema for the given parquet file. Returns None for unknown types."""
125
+
126
+ input_path = Path(parquet_path).expanduser()
127
+ parquet_dataset = pa.parquet.ParquetDataset(input_path)
128
+ return to_pixeltable_schema(parquet_dataset.schema)
129
+
130
+
131
+ def import_parquet(
132
+ cl: 'pixeltable.Client',
133
+ table_path: str,
134
+ *,
135
+ parquet_path: str,
136
+ schema_override: Optional[Dict[str, ts.ColumnType]],
137
+ **kwargs,
138
+ ) -> 'catalog.InsertableTable':
139
+ """See `pixeltable.Client.import_parquet` for documentation"""
140
+ input_path = Path(parquet_path).expanduser()
141
+ parquet_dataset = pa.parquet.ParquetDataset(input_path)
142
+
143
+ schema = parquet_schema_to_pixeltable_schema(parquet_path)
144
+ if schema_override is None:
145
+ schema_override = {}
146
+
147
+ schema.update(schema_override)
148
+ for k, v in schema.items():
149
+ if v is None:
150
+ raise exc.Error(f'Could not infer pixeltable type for column {k} from parquet file')
151
+
152
+ if table_path in cl.list_tables():
153
+ raise exc.Error(f'Table {table_path} already exists')
154
+
155
+ try:
156
+ tmp_name = f'{table_path}_tmp_{random.randint(0, 100000000)}'
157
+ tab = cl.create_table(tmp_name, schema, **kwargs)
158
+ for fragment in parquet_dataset.fragments:
159
+ for batch in fragment.to_batches():
160
+ dict_batch = list(iter_tuples(batch))
161
+ tab.insert(dict_batch)
162
+ except Exception as e:
163
+ _logger.error(f'Error while inserting Parquet file into table: {e}')
164
+ raise e
165
+
166
+ cl.move(tmp_name, table_path)
167
+ return cl.get_table(table_path)
@@ -1,25 +1,17 @@
1
1
  import io
2
2
  import pyarrow as pa
3
- import pyarrow.parquet as pq
3
+ import pyarrow.parquet
4
4
  import torch
5
5
  import torch.utils.data
6
- import math
7
6
  from pathlib import Path
8
7
  import PIL.Image
9
8
  import json
10
- from typing import Dict, Tuple, Generator, Any
9
+ from typing import Dict, Iterator, Any
11
10
  import datetime
12
11
 
13
12
  from pixeltable.type_system import ColumnType
14
- from pixeltable.utils.parquet import get_part_metadata
15
13
  import numpy as np
16
14
 
17
- def _cumsum(lst):
18
- acc = [0]
19
- for x in lst:
20
- acc.append(acc[-1] + x)
21
- return acc
22
-
23
15
  class PixeltablePytorchDataset(torch.utils.data.IterableDataset):
24
16
  """
25
17
  PyTorch dataset interface for pixeltable data.
@@ -47,24 +39,7 @@ class PixeltablePytorchDataset(torch.utils.data.IterableDataset):
47
39
  with column_type_path.open() as f:
48
40
  column_types = json.load(f)
49
41
  self.column_types = {k: ColumnType.from_dict(v) for k, v in column_types.items()}
50
- self.part_metadata = get_part_metadata(self.path)
51
- self._totals = _cumsum([x[1] for x in self.part_metadata])
52
-
53
- def _get_start_position(self, row_start: int) -> Tuple[int, int]:
54
- """
55
- Returns the starting parquet file and row within that file for a given 'global' row number.
56
- based on the individual sizes of each part
57
- """
58
- assert row_start >= self._totals[0]
59
- assert row_start < self._totals[-1]
60
-
61
- prev_acc = 0
62
- for i, acc in enumerate(self._totals[1:], start=1):
63
- if acc > row_start:
64
- return (i - 1, row_start - prev_acc)
65
- prev_acc = acc
66
-
67
- assert False, "unreachable"
42
+ self.part_metadata = pa.parquet.ParquetDataset(path).files
68
43
 
69
44
  def _unmarshall(self, k: str, v: Any) -> Any:
70
45
  if self.column_types[k].is_image_type():
@@ -88,13 +63,10 @@ class PixeltablePytorchDataset(torch.utils.data.IterableDataset):
88
63
  return json.loads(v)
89
64
  elif self.column_types[k].is_array_type():
90
65
  assert isinstance(v, np.ndarray)
91
- # WRITEABLE is required for torch collate function, or undefined behavior
92
66
  if not v.flags["WRITEABLE"]:
93
- vout = v.copy()
94
- assert vout.flags["WRITEABLE"]
95
- return vout
96
- else:
97
- return v
67
+ v = v.copy()
68
+ assert v.flags["WRITEABLE"]
69
+ return v
98
70
  elif self.column_types[k].is_timestamp_type():
99
71
  # pytorch default collation only supports numeric types
100
72
  assert isinstance(v, datetime.datetime)
@@ -103,70 +75,17 @@ class PixeltablePytorchDataset(torch.utils.data.IterableDataset):
103
75
  assert not isinstance(v, np.ndarray) # all array outputs should be handled above
104
76
  return v
105
77
 
106
- def __iter__(self) -> Generator[Dict[str, Any], None, None]:
78
+ def __iter__(self) -> Iterator[Dict[str, Any]]:
79
+ import pixeltable.utils.arrow as arrow
107
80
  worker_info = torch.utils.data.get_worker_info()
108
- if worker_info is None: # single-process data loading, return the full iterator
109
- start_row = 0
110
- end_row = self._totals[-1]
111
- else: # in a worker process
112
- num_workers = [
113
- math.floor(self._totals[-1] / float(worker_info.num_workers))
114
- for _ in range(worker_info.num_workers)
115
- ]
116
- assert self._totals[-1] - sum(num_workers) < worker_info.num_workers
117
- for i in range(self._totals[-1] - sum(num_workers)):
118
- num_workers[i] += 1
119
-
120
- assert sum(num_workers) == self._totals[-1]
121
- start_rows = _cumsum(num_workers)
122
- start_row = start_rows[worker_info.id]
123
- end_row = start_rows[worker_info.id + 1]
124
81
 
125
- if start_row == end_row:
126
- return iter([]) # type: ignore
82
+ if worker_info is None:
83
+ part_list = range(len(self.part_metadata))
127
84
  else:
128
- return self._iter_range(start_row, end_row)
129
-
130
- def _iter_range(self, start_row : int, end_row : int) -> Generator[Dict[str, Any], None, None]:
131
- (part_no, iter_start) = self._get_start_position(start_row)
132
- total = end_row - start_row
133
-
134
- acc = 0
135
- part_pos = part_no
136
- iter_pos = iter_start
137
-
138
- def _to_column_dict(tab : pa.Table) -> Dict[str, Any]:
139
- column_dict = {}
140
- for k in tab.column_names:
141
- if self.column_types[k].is_array_type():
142
- # treat array columns as numpy arrays to easily preserve numpy type
143
- column_dict[k] = tab.column(k).to_numpy()
144
- else:
145
- # for the rest, use pydict to preserve python types
146
- column_dict[k] = tab.column(k).to_pylist()
147
- return column_dict
148
-
149
- tab: pa.Table = pq.read_table(self.path / self.part_metadata[part_no][0])
150
- column_dict = _to_column_dict(tab)
151
- assert tab.num_rows == self.part_metadata[part_no][1]
152
-
153
- while True:
154
- while iter_pos < tab.num_rows and acc < total:
155
- next_tup = {}
156
- for col_name, col_vals in column_dict.items():
157
- raw_val = col_vals[iter_pos]
158
- next_tup[col_name] = self._unmarshall(col_name, raw_val)
159
-
160
- yield next_tup
161
- acc += 1
162
- iter_pos += 1
163
-
164
- if acc == total:
165
- break
85
+ part_list = [ i for i in part_list if (i % worker_info.num_workers) == worker_info.id ]
166
86
 
167
- # move on to next part
168
- part_pos += 1
169
- assert part_pos < len(self.part_metadata)
170
- iter_pos = 0
171
- tab = pq.read_table(self.path / self.part_metadata[part_pos][0])
172
- column_dict = _to_column_dict(tab)
87
+ for part_no in part_list:
88
+ pqf = pa.parquet.ParquetFile(self.part_metadata[part_no])
89
+ for batch in pqf.iter_batches():
90
+ for tup in arrow.iter_tuples(batch):
91
+ yield {k: self._unmarshall(k, v) for k, v in tup.items()}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pixeltable
3
- Version: 0.2.3
3
+ Version: 0.2.5
4
4
  Summary: Pixeltable: The Multimodal AI Data Plane
5
5
  Author: Marcel Kornacker
6
6
  Author-email: marcelk@gmail.com
@@ -15,12 +15,12 @@ Requires-Dist: beautifulsoup4 (>=4.0.0,<5.0.0)
15
15
  Requires-Dist: cloudpickle (>=2.2.1,<3.0.0)
16
16
  Requires-Dist: jinja2 (>=3.1.3,<4.0.0)
17
17
  Requires-Dist: jmespath (>=1.0.1,<2.0.0)
18
- Requires-Dist: numpy (>=1.26,<2.0)
18
+ Requires-Dist: numpy (>=1.26)
19
19
  Requires-Dist: opencv-python-headless (>=4.7.0.68,<5.0.0.0)
20
20
  Requires-Dist: pandas (>=2.0,<3.0)
21
- Requires-Dist: pgserver (==0.0.9)
21
+ Requires-Dist: pgserver (==0.1.2)
22
22
  Requires-Dist: pgvector (>=0.2.1,<0.3.0)
23
- Requires-Dist: pillow (>=9.4.0,<10.0.0)
23
+ Requires-Dist: pillow (>=10.0)
24
24
  Requires-Dist: psutil (>=5.9.5,<6.0.0)
25
25
  Requires-Dist: psycopg2-binary (>=2.9.5,<3.0.0)
26
26
  Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
@@ -28,38 +28,44 @@ Requires-Dist: regex (>=2022.10.31,<2023.0.0)
28
28
  Requires-Dist: requests (>=2.31.0,<3.0.0)
29
29
  Requires-Dist: sqlalchemy-utils (>=0.41.1,<0.42.0)
30
30
  Requires-Dist: sqlalchemy[mypy] (>=2.0.23,<3.0.0)
31
+ Requires-Dist: tenacity (>=8.2,<9.0)
31
32
  Requires-Dist: tqdm (>=4.64.1,<5.0.0)
32
33
  Description-Content-Type: text/markdown
33
34
 
35
+ <div align="center">
34
36
  <img src="docs/pixeltable-banner.png" width="45%"/>
35
37
 
36
- # Pixeltable: The Multimodal AI Data Plane
38
+ # Unifying Data, Models, and Orchestration for AI Products
37
39
 
38
40
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
39
41
  &nbsp;&nbsp;
40
42
  ![pytest status](https://github.com/pixeltable/pixeltable/actions/workflows/pytest.yml/badge.svg)
41
43
 
42
- Pixeltable is a Python library that lets AI engineers and data scientists focus on
43
- exploration, modeling, and app development without having to deal with the customary
44
- data plumbing.
44
+ [Installation](https://pixeltable.github.io/pixeltable/getting-started/) | [Documentation](https://pixeltable.github.io/pixeltable/)
45
+ </div>
45
46
 
46
- **Pixeltable redefines data infrastructure and workflow orchestration for AI development.**
47
- It brings together data storage, versioning, and indexing with orchestration and model
48
- versioning under a declarative table interface, with transformations, model inference,
49
- and custom logic represented as computed columns.
47
+ Pixeltable is a Python library that lets AI engineers and data scientists focus on exploration, modeling, and app development without dealing with the customary data plumbing.
50
48
 
51
- ## Quick Start
49
+ ## What problems does Pixeltable solve?
50
+
51
+ Today’s solutions for AI app development require extensive custom coding and infrastructure
52
+ plumbing. Tracking lineage and versions between and across data transformations, models, and
53
+ deployment is cumbersome. Pixeltable is a replacement for traditional data plumbing, providing
54
+ a unified plane for data, models, and orchestration. It removes the data plumbing overhead in
55
+ building and productionizing AI applications.
56
+
57
+ ## ⚡Quick Start
58
+ Learn the basics of Pixeltable through interactive examples. View the notebooks on Google Colab or Kaggle, for free.
52
59
 
53
- If you just want to play around with Pixeltable to see what it's capable of, the easiest way is to run
54
- the Pixeltable Basics tutorial in colab:
60
+ ### Pixeltable Basics
61
+ In this tutorial, we'll survey how to create tables, populate them with data, and enhance them with built-in and user-defined transformations and AI operations.
55
62
 
56
- <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/master/docs/tutorials/pixeltable-basics.ipynb">
57
- <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/>
58
- </a>
63
+ [![Kaggle](https://kaggle.com/static/images/open-in-kaggle.svg)](https://kaggle.com/kernels/welcome?src=https://github.com/pixeltable/pixeltable/blob/master/docs/tutorials/pixeltable-basics.ipynb)&nbsp;&nbsp;
64
+ <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/master/docs/tutorials/pixeltable-basics.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a>
59
65
 
60
- ## Installation
61
66
 
62
- Pixeltable works with Python 3.9, 3.10, or 3.11 running on Linux or MacOS.
67
+ ## 💾 Installation
68
+ Pixeltable works with Python 3.9, 3.10, 3.11, or 3.12 running on Linux, MacOS, or Windows.
63
69
 
64
70
  ```
65
71
  pip install pixeltable
@@ -78,14 +84,6 @@ guide. Then, check out the
78
84
  [Pixeltable Basics](https://pixeltable.github.io/pixeltable/tutorials/pixeltable-basics/)
79
85
  tutorial for a tour of its most important features.
80
86
 
81
- ## What problems does Pixeltable solve?
82
-
83
- Today’s solutions for AI app development require extensive custom coding and infrastructure
84
- plumbing. Tracking lineage and versions between and across data transformations, models, and
85
- deployment is cumbersome. Pixeltable is a replacement for traditional data plumbing, providing
86
- a unified plane for data, models, and orchestration. It removes the data plumbing overhead in
87
- building and productionizing AI applications.
88
-
89
87
  ## Why should you use Pixeltable?
90
88
 
91
89
  - It gives you transparency and reproducibility
@@ -119,3 +117,12 @@ get cost projections before adding new data and new augmentations.
119
117
  * Rely on Pixeltable's automatic versioning and snapshot functionality to protect against regressions
120
118
  and to ensure reproducibility.
121
119
 
120
+ ## Contributions & Feedback
121
+
122
+ Are you experiencing issues or bugs with Pixeltable? File an [Issue](https://github.com/pixeltable/pixeltable/issues).
123
+ </br>Do you want to contribute? Feel free to open a [PR](https://github.com/pixeltable/pixeltable/pulls).
124
+
125
+ ## :classical_building: License
126
+
127
+ This library is licensed under the Apache 2.0 License.
128
+
@@ -1,31 +1,31 @@
1
1
  pixeltable/__init__.py,sha256=enh38lhZ_38Ys3rCy_XC_BlPNPK9H2CKV4KePaqnV4E,959
2
2
  pixeltable/catalog/__init__.py,sha256=E41bxaPeQIcgRYzTWc2vkDOboQhRymrJf4IcHQO7o_8,453
3
3
  pixeltable/catalog/catalog.py,sha256=0TYWB1R6YBp9qCkWF7kCcX2Yw70UuburKKIemv5L1Js,7908
4
- pixeltable/catalog/column.py,sha256=7PU5yECislpR_PNZTT3Z5sZiE34DnI6SR3WDsI-WgCg,8661
4
+ pixeltable/catalog/column.py,sha256=2K3rUrcfdF-eXiRB9WhIrFVj1XmjrK51lQA616OYfLQ,7887
5
5
  pixeltable/catalog/dir.py,sha256=pG1nMpG123POo6WMSHhAmnwXOQ26uUJfUcbzL-Jb4ws,919
6
6
  pixeltable/catalog/globals.py,sha256=yLEGNbsSnLzjWNHVJacfjA9hbw13Q6QXLOSCRmdTlq0,943
7
- pixeltable/catalog/insertable_table.py,sha256=1JGZqmx5tKbm_UmJLIalntFDs81s-mvTv0gOqk98b3Q,8280
7
+ pixeltable/catalog/insertable_table.py,sha256=B9QLN2eoCTjwqH5KLBRy3YQ7_l1nd8hqJd83eIdE1Qc,8303
8
8
  pixeltable/catalog/named_function.py,sha256=a96gnKtx-nz5_MzDIiD4t4Hxqdjkg9ZtijRQxvWA5WQ,1147
9
9
  pixeltable/catalog/path.py,sha256=QgccEi_QOfaKt8YsR2zLtd_z7z7QQkU_1kprJFi2SPQ,1677
10
10
  pixeltable/catalog/path_dict.py,sha256=xfvxg1Ze5jZCARUGASF2DRbQPh7pRVTYhuJ_u82gYUo,5941
11
11
  pixeltable/catalog/schema_object.py,sha256=-UxmPLbuEBqJiJi_GGRbFdr7arAFxTqs4bt6TFmSt3M,1059
12
- pixeltable/catalog/table.py,sha256=CJQc2NnebfL1ekMcaZhJEZ0CI408-F7R90_czjDKy-g,25499
13
- pixeltable/catalog/table_version.py,sha256=Q1NSaeLmFw7gYgARyyW6JJ79GRhjtp0_Q410KH27e1Q,35680
14
- pixeltable/catalog/table_version_path.py,sha256=kn5T0m5XBqphlDqCKsqD-s159diCjKvrSrtzYZHwKuw,5461
12
+ pixeltable/catalog/table.py,sha256=6OKvbrFFVu_xoKs68QC7mt-N99rKrBPwos4Bozs9rvg,30675
13
+ pixeltable/catalog/table_version.py,sha256=1KBk1A_iqXtQbUs3P-5bxedOccj2kcryMLmlwxZcLF4,48818
14
+ pixeltable/catalog/table_version_path.py,sha256=2Ofzd0n36flcNm86KWwIWDBAfgnV5Z-FxAHdMSPgMLc,5482
15
15
  pixeltable/catalog/view.py,sha256=BIL3s4DV3tWbOcqtqnhn46B2UvLaBhppfJUlNEt5nec,9734
16
- pixeltable/client.py,sha256=HiqGNRQoyBPXF2rAhTJFE3ZSUUaSLpGo28pLZjubh8Y,20548
17
- pixeltable/dataframe.py,sha256=vBc4T-QU-lTTtnljqDbBFTHwm2CecLHIjJumEv8lQ0s,28339
18
- pixeltable/env.py,sha256=sY-VUY9WFs4li7CidyRXubfjmBh3cbR-cFj-wZr4xY0,16398
16
+ pixeltable/client.py,sha256=Ypah43hdEByGZ7WGS5-2LWKnsWAuhofq84TMRZD90uQ,23442
17
+ pixeltable/dataframe.py,sha256=GyeutsjdKSAzRorzIsSZ_hElGJM7bRSRv28ynB4qFGY,30014
18
+ pixeltable/env.py,sha256=Qk_Br2gJKDykvz0AoWJ45nDZTjhl-MStxVWWFI4pU3A,16303
19
19
  pixeltable/exceptions.py,sha256=MSP9zeL0AmXT93XqjdvgGN4rzno1_KRrGriq6hpemnw,376
20
20
  pixeltable/exec/__init__.py,sha256=FOQBSMQ3buGg5kRzymkfDCk5fnVfICn3LrsJtbyNC6E,412
21
21
  pixeltable/exec/aggregation_node.py,sha256=cf6rVAgrGh_uaMrCIgXJIwQTmbcboJlnrH_MmPIQSd0,3321
22
- pixeltable/exec/cache_prefetch_node.py,sha256=zDYYc0vmdLzB82YqgJRdCMriaMHX07LS3o04G2U3NmI,5212
22
+ pixeltable/exec/cache_prefetch_node.py,sha256=d5pEuR6AtJQkEVy9X3XeYFI_q0szMtoNAH96vYdtBE0,5241
23
23
  pixeltable/exec/component_iteration_node.py,sha256=Uz6zEeaJMcbvF3S0W0qmLI_uWsZsaSspHKNzuAMrasg,4069
24
24
  pixeltable/exec/data_row_batch.py,sha256=ZaS_ciyYhoP50Aoszhgtnh_yDRR6z9H43crnaJdP-xA,3505
25
25
  pixeltable/exec/exec_context.py,sha256=E82Q2bJMJ1ulud5L5D9dh2Z8vEUQ659SgT614YKDO34,924
26
26
  pixeltable/exec/exec_node.py,sha256=Hji5NCPHfa50IWyjladXrBm4I0zseV7AV4cVdx0Q8Ew,2170
27
27
  pixeltable/exec/expr_eval_node.py,sha256=mqACyEy48fsiWkbHSkkMc8gG2nL-WT6eJSG3nltM85c,10810
28
- pixeltable/exec/in_memory_data_node.py,sha256=x2Jn_AGx52YcDPORH8sZZRD0s64Ng1NvfMpqAW-bVwY,2949
28
+ pixeltable/exec/in_memory_data_node.py,sha256=SNM2AbMQSjmGDWMNJUf_5MmlXWE3P80lsuUjNfzQckA,3171
29
29
  pixeltable/exec/media_validation_node.py,sha256=OKfRyKpcn7AZdACy_HD4NsDC87ZfNFs1tdrQz2NiIVw,1514
30
30
  pixeltable/exec/sql_scan_node.py,sha256=zKJ2_iM0ah748Vz8jD0Lkm7TRyUChIejnGUPNmYPgbs,10318
31
31
  pixeltable/exprs/__init__.py,sha256=EkpjeEW-8rriE9hVb9PdiknHQ3-Y8jPp37yJ-NC_oWA,935
@@ -33,9 +33,9 @@ pixeltable/exprs/arithmetic_expr.py,sha256=sWBYCBKI6IHj9ASwDcm2BlkQ5gleVtKtmpiPv
33
33
  pixeltable/exprs/array_slice.py,sha256=VmWc6iFusrM85MjyEBBCfXG1Jnt8-Gr6-J88BXxNoOE,2131
34
34
  pixeltable/exprs/column_property_ref.py,sha256=0PHiBys0fxe2LgjaMId5UHob4E-ZggyPLnnW41RgA0E,2706
35
35
  pixeltable/exprs/column_ref.py,sha256=5-mbWV8-cWWu0ynxPSQ0L8oLewDrLp17xh8DOCmQ36s,4794
36
- pixeltable/exprs/comparison.py,sha256=jwwvKG0nLOHiNyjZm8AWKn59qBtTYH98vTF_hhwn0Og,3000
36
+ pixeltable/exprs/comparison.py,sha256=rAlGUF0AuzkYGspewJPu-6aaQZa4dVMJYGbMwqKyBIc,2964
37
37
  pixeltable/exprs/compound_predicate.py,sha256=Gh22MKi625m5A_RunVRd-a1XFi-fitikqBVz2VNXKrs,3830
38
- pixeltable/exprs/data_row.py,sha256=TRbC2lmPm-U_Az2edlVaHbaYn-dm0G3IQp6gQ6HH5DQ,8046
38
+ pixeltable/exprs/data_row.py,sha256=2kGnZhDna4bkgzb2y9iDnkLFe8lXSk59QAf9zW2Z-Y0,8278
39
39
  pixeltable/exprs/expr.py,sha256=JyEmP8F9LXmxOrVswih1Aq0SrpGcboSRinOYIMWYfKM,23748
40
40
  pixeltable/exprs/expr_set.py,sha256=Q64Q2yI0CTq2Ma_E-BUYlMotSstVuMm4OFZnBCedHRk,1222
41
41
  pixeltable/exprs/function_call.py,sha256=QFzkb2gKjeALGTgCet-o0HETwTXoFBzsncbghgScmOE,16961
@@ -47,80 +47,93 @@ pixeltable/exprs/inline_dict.py,sha256=Lb3VS3Mkxb72mWL4qipOQjUgY8AMxk1POj225Xqjt
47
47
  pixeltable/exprs/is_null.py,sha256=nvpOXtQj1UeYJpkCWzbaGuQElzrA2HSG3XNQugOv-pw,1041
48
48
  pixeltable/exprs/json_mapper.py,sha256=I60VNgus64ai80gnFCIsRn0VRWYXMkqH5VNvnATsN9s,4559
49
49
  pixeltable/exprs/json_path.py,sha256=Wz_5zFsyc9TPhsSbsDjDmQ3Nb0uVIwMCx5nh-cQYBiE,6526
50
- pixeltable/exprs/literal.py,sha256=LOeD0aN_V7Kg332xzCHWUlzKPupXiptpU_rg-X0bEt0,1885
50
+ pixeltable/exprs/literal.py,sha256=5NNza-WL1dd3hNznwwkr_yAcTGXSIRYUszGfy30lruI,2396
51
51
  pixeltable/exprs/object_ref.py,sha256=eTcx84aWRI59fIiGvbdv3_cfL0XW4xEFQ4lwpLpJkM8,1250
52
52
  pixeltable/exprs/predicate.py,sha256=OSDgjfSqiK7J_5GZMUXMvjfyomKEGi0JNxeB073SGXw,1859
53
- pixeltable/exprs/row_builder.py,sha256=sOW2zG6MwqOT8BFgmlveqIiRGPZinuK0_dY6IgmCWT0,16992
53
+ pixeltable/exprs/row_builder.py,sha256=72bbPPynmzFrWuZoqsCCBmtWAgf3XFyKqUQaoMusmeo,15321
54
54
  pixeltable/exprs/rowid_ref.py,sha256=74w4rEy21YysTVbyKNc3op-pYFqDAx8VJdtl7ZPpxHs,4268
55
55
  pixeltable/exprs/type_cast.py,sha256=JMg8p1qYoFfiAXfJPSbTEnfrK7lRO_JMaqlPHOrhNQU,1793
56
56
  pixeltable/exprs/variable.py,sha256=Kg_O4ytcHYZFijIyMHYBJn063cTKU1-YE583FAz8Qaw,1361
57
+ pixeltable/ext/__init__.py,sha256=0uugfuME1FybVo-MdxaVNGagRjhcvNTnv5MZUem6Cyo,269
58
+ pixeltable/ext/functions/yolox.py,sha256=LwrOtXMT57AP6-IkmRZ_12yN5-EiFRpTuh4Sexm8x24,3131
57
59
  pixeltable/func/__init__.py,sha256=4qvDnK_S5yljwtIrxCkeQlz6vuTVfwSU4zl-MBT2TMU,457
58
- pixeltable/func/aggregate_function.py,sha256=E11lVKBR4MZQ6VT0G4oo5xWR907BqHqJog-widXcJt0,9177
60
+ pixeltable/func/aggregate_function.py,sha256=OC5dmWKOjNHcgH5KrsxZpISoP5RFXfHFkzHQk8PnOUQ,9267
59
61
  pixeltable/func/batched_function.py,sha256=nrfmykJps4QkgzeC4ZroGy8mJ-BACNKbRJABHHG6-Ac,2350
60
62
  pixeltable/func/callable_function.py,sha256=WGUwjNEzXGDJ1jzdZ-mrn2cnfEHmFZIh_DRl_Yk89D0,2357
61
- pixeltable/func/expr_template_function.py,sha256=Nj-FDDozSuvcoQ7KsJcQrzzQn7foeCY7zSEFkusiLqQ,3392
63
+ pixeltable/func/expr_template_function.py,sha256=aBIjO5ibd2t56lNKKEmv-YFVcxUW_jqHIiYaslG1u2A,3807
62
64
  pixeltable/func/function.py,sha256=NcGyKp7ds6bMzg1qzuaK8pBQH_DhknmSiZzsfXi-z2k,4023
63
65
  pixeltable/func/function_registry.py,sha256=1ibSQxEPm3Zd3r497vSlckQiDG9sfCnyJx3zcSm9t7c,11456
64
- pixeltable/func/globals.py,sha256=UP4hAkEVKD_3lr7l_VVUUCetJP85sydUYiVAU4m5-aw,1220
66
+ pixeltable/func/globals.py,sha256=sEwn6lGgHMp6VQORb_P5qRd_-Q2_bUSqvqM9-XPN_ec,1483
65
67
  pixeltable/func/nos_function.py,sha256=HzIKK4XjTo1E6pML-EbhuX3u_LYibFWUuTkIxoIih7c,9650
66
- pixeltable/func/signature.py,sha256=5Xo3hIVSXoYtkU-BvUi21b6FghIQABm48UfVjQr9QYU,7107
67
- pixeltable/func/udf.py,sha256=XlB7dzOc98XinUrs4tMGUAetV0SmQ_Z2oKPDBsx46o0,6457
68
- pixeltable/functions/__init__.py,sha256=kFepRTpg-YOeeXG9076s9v-lm8ZUNqicaPUfX-CrW5c,3419
69
- pixeltable/functions/eval.py,sha256=qLc_55VTwi_IDnAJFq79Hy7FLi7Gb26DxdykYiBTMrM,8453
70
- pixeltable/functions/fireworks.py,sha256=7h1gxcGhG8jepS_Gi1nwp8zCw1gdRaTzufS6U08mmLc,1596
71
- pixeltable/functions/huggingface.py,sha256=Wg8AgCsoGFx8AX3AThko66L7uSg9cUEjL8_QxKoA4dg,4804
68
+ pixeltable/func/signature.py,sha256=aQRb-znfblRlMlUN7YmbFHF6-PRAGbYRpqDNd7nawII,7343
69
+ pixeltable/func/udf.py,sha256=DEaXgKrx-Nrszf9cSC_ql9GF016DRbKI5JXAHODUU0I,6711
70
+ pixeltable/functions/__init__.py,sha256=uO-XB4QUbx3Jjs9GoaTXoJY2jn0AuXTL32YLkL_3_CI,3297
71
+ pixeltable/functions/eval.py,sha256=_2FANDJqwtIDzTxtcKc0Yacf7b4LTAjyy2fPDw1FG_s,8404
72
+ pixeltable/functions/fireworks.py,sha256=e_rCITg18yNndNI8TJPXRSN6DR0hYWT-_dUavoPuyfc,908
73
+ pixeltable/functions/huggingface.py,sha256=_Z-MqqMRVDw1GOS5KonaeEmh5qsU-dfam9EODddiHw4,5693
72
74
  pixeltable/functions/image.py,sha256=xR_S_0BuX6Ycc5E366GpOfP0JptD7beQwHE_fLl8ZVM,431
73
- pixeltable/functions/openai.py,sha256=SkwUBnnTT6olQCMHzQGO0vpvApgAaBk_88W7YM8QQuo,2863
75
+ pixeltable/functions/openai.py,sha256=o5-qh_T4JgIyMR8Ky1Y6HbK9yg88fJSkkQCIaLAf9Qg,6870
74
76
  pixeltable/functions/pil/image.py,sha256=8gItSXXuJaCkq9FHEJE9qFpRM3WAoa59x89Xa0DgksQ,6217
75
77
  pixeltable/functions/string.py,sha256=RYOgZwifjC943YloEMi3PdflnjFqOYB2FddrUvzgtXs,516
76
- pixeltable/functions/together.py,sha256=TGo72RJuHqofwJHSrHqsJoO6RQm6Iipqhy49V3JiBss,650
77
- pixeltable/functions/util.py,sha256=v094FgixHchzKMj4YvfHExDRGIVhCL2D-NL3pl-92oo,1596
78
+ pixeltable/functions/together.py,sha256=sG23nLMScmp4wRA4K1EIJDY9peqE1IPgxlK3fhNrbgw,3423
79
+ pixeltable/functions/util.py,sha256=djVqro_W5M_jUgYWzZZaXXH3lWaAWj6q-hrpzFl_Ko8,1860
78
80
  pixeltable/functions/video.py,sha256=WZF4G3tV-_LfRQHUinXe_rnu1-4N68Ht60JCR_s7Bew,2403
81
+ pixeltable/index/__init__.py,sha256=tlJENOzEq6p_8xu-nX1mN4Zt9asw4481Znl5ZXYIKwc,72
82
+ pixeltable/index/base.py,sha256=LwBXLOBWkQhAOSOo2gtgtgSJglnRUrf0RtG5JmcwwEQ,1362
83
+ pixeltable/index/embedding_index.py,sha256=THFue7f4fKCUXYlxqqRGNcoc1o22GqYcYg6s5vvQFFg,4372
79
84
  pixeltable/iterators/__init__.py,sha256=sfsasCypAq5rNOTMlr4j2ROXxzdl4M8L2KvQIEbd0cQ,70
80
85
  pixeltable/iterators/base.py,sha256=sugU9mG19xf9I4c_lEQDI_xrXPLuyuIYlKc-9OiS1HQ,1545
81
86
  pixeltable/iterators/document.py,sha256=bWK-3oRD9Sbc5vIcxccMyFh8zTP40233NK3ch6uyLI0,13105
82
87
  pixeltable/iterators/video.py,sha256=mUdHev0f_XJIfHTB-mejjToURh10Ud7l096eZm2aPjM,3444
83
88
  pixeltable/metadata/__init__.py,sha256=6rLGFpWzQMCk0EcSKLp4Bnbk8tLK1cxuONBPqwDCMzU,2083
84
89
  pixeltable/metadata/converters/convert_10.py,sha256=0mSGCn7vqtef63riPi9msUaaUvsSQIj-NFj9QFDYPdA,733
85
- pixeltable/metadata/schema.py,sha256=oTxtFSvbmCEcr54F929_NYFVp76N8gpN4nHDr9VnA9M,7761
86
- pixeltable/plan.py,sha256=BQMCxOCy7lO4dqBCt5W9GUFdBWkuhr13-T8_2E97fUk,34710
87
- pixeltable/store.py,sha256=ICqfHiotyMyTi2gsQ-Qw-ed1ooNkAx0vgMSMri4xfqk,19511
88
- pixeltable/tests/conftest.py,sha256=2RyRWIW2Ky9VQ41Hj0ChNr_Oh5vTx4x95tUdJWX5ktE,6677
90
+ pixeltable/metadata/schema.py,sha256=uuk3rzCpYr99PzEO1pIXe8nMaOoTJtwRfhnqgQ_MdDs,8335
91
+ pixeltable/plan.py,sha256=sZe_K_5VUGISPIiRoogXhfYMSx6tU58YPGcx1HCKACo,33549
92
+ pixeltable/store.py,sha256=IAurcG5vyryl4GMIl6nH0vM-R-IXTj5ZaczgtMKsEx0,19426
93
+ pixeltable/tests/conftest.py,sha256=mVZmWdQWNRJPmeyYTkdE2AcOx861A-JsfaZkRmZ5_wE,6339
94
+ pixeltable/tests/ext/test_yolox.py,sha256=hZRCq1bue3PO86zdBdfUa-3I8_pZ4i91J25cLPcmRX0,1085
95
+ pixeltable/tests/functions/test_fireworks.py,sha256=d6-bgB4PUByJ_9pfn7_jcI8weMpUgYM1Bln0ohBu49I,1690
96
+ pixeltable/tests/functions/test_functions.py,sha256=SRE4zRwfJ1Hetu8uMp5X-Iqg-pawn87q07JHa7w_8l0,2884
97
+ pixeltable/tests/functions/test_huggingface.py,sha256=hmxM-2skPe1xu0uniI2N_IL8djDpBis86wdEh4Oc_84,7657
98
+ pixeltable/tests/functions/test_openai.py,sha256=YT34H6knG-pSypGFxGGjqebjjcYF1Z7BDm1Vo9Ar970,8659
99
+ pixeltable/tests/functions/test_together.py,sha256=sNySFn0tgWAVz99htLA3UvrKFoHevyKOfBQ6uJb4AFM,4812
89
100
  pixeltable/tests/test_audio.py,sha256=92PMPrMtYzLoaLiW92MupEfWPEcfoLlYlZKlxmWQXdI,3186
90
101
  pixeltable/tests/test_catalog.py,sha256=Npxt72g5aZkfg1fqE-19L8rGilzicAiTC0ithIy3woI,1189
91
102
  pixeltable/tests/test_client.py,sha256=9acrjElh1YVX8WXWO04VQ-S6mNx9ZtqAHoh4uBc81y4,531
92
- pixeltable/tests/test_component_view.py,sha256=VfcBgdG1QKeo0AOnHmO21J3qdm_8-06RljB7kkTeTok,17732
93
- pixeltable/tests/test_dataframe.py,sha256=EH8pVeDpthH8J8561xZtn_Lz4Tb_8uycw4JjLKjZEJI,18007
103
+ pixeltable/tests/test_component_view.py,sha256=j0Ri9li_gqEgu_X_MDlHq3SrglwSb-TFt-VgAPiXk1M,18221
104
+ pixeltable/tests/test_dataframe.py,sha256=7MNVGKg7gD__K_EH5PRx2wSDkykpQF2Uoahr_JvQwD4,17906
94
105
  pixeltable/tests/test_dirs.py,sha256=WuWGOcpUFPCl1PGZgOMcU5bpzv1ClUqZ5AxavrDeCic,3611
95
106
  pixeltable/tests/test_document.py,sha256=5G52cMbkkX2lk5SwyYQ1KYjQjgUfVhjcsjPtL9xjGXU,5810
96
- pixeltable/tests/test_exprs.py,sha256=ZwImlJpTu9YQ2AnAplurjxDmabYqG7rB7aU6TxQAJdI,32743
97
- pixeltable/tests/test_function.py,sha256=6sA_3Oe1p4sUhL5L5hYyW-mG1TPGfFDmW1BPVPnGXek,12817
98
- pixeltable/tests/test_functions.py,sha256=pKRsb8503vkYWzp_BOGuxd-PDtOb04NKW-T6_4sJ3B0,14394
99
- pixeltable/tests/test_migration.py,sha256=UjJhhg061TtyTAa1CAB-BdlT9YwLJkl8yIGSetnqcKw,1535
107
+ pixeltable/tests/test_exprs.py,sha256=3F2btTIdT6TymaQLtiDIo3sAntW1WLY5oU-ud267VhY,32181
108
+ pixeltable/tests/test_function.py,sha256=zzW7IYTipe23ao5_dNMmGEv2xJOsDUe0DoHI8pfuPDI,12987
109
+ pixeltable/tests/test_index.py,sha256=6ONEKsxHdUJuLTYoeIVqEJzbp_sANzr43D1xre2b-6o,5410
110
+ pixeltable/tests/test_migration.py,sha256=RGpQOjkkjhT4oO9U5X6dG2q8YHTeJPDq_dRlQZY7YQM,1599
100
111
  pixeltable/tests/test_nos.py,sha256=ITE7FNEaNreJ_XTz4wYLWuidFSUQMFp3ShuHTz05OrE,2649
101
- pixeltable/tests/test_snapshot.py,sha256=J8wepLOaOrJkqDWq1dkou8MIR5Hf1DEseAqlUrb7BFg,9297
102
- pixeltable/tests/test_table.py,sha256=KGPny8KQ4wVYT-N78dqsoMahd_1GyQAGZaCqT7sB61E,48484
112
+ pixeltable/tests/test_snapshot.py,sha256=uTTxnBNZODhhbH2pAxtzKdGrNmbiozKmya-LvK8OQ6g,10331
113
+ pixeltable/tests/test_table.py,sha256=a7BCBsSzlLmIEXtmrLiIFP6B4KoG4B9MuHm_JIwFEic,56557
103
114
  pixeltable/tests/test_transactional_directory.py,sha256=Jx55PZgrkHTI0Eli09puwMckvwfCM9arPTQUT9g6Tbg,1308
104
- pixeltable/tests/test_types.py,sha256=4_LR5Poc8Fa5fOpRBaAc_qAN21SsVxFP54Npq_6n9G8,970
105
- pixeltable/tests/test_video.py,sha256=j9vgxp9f2WdH0rCoMXqhgTW3XG-czTBU4rrnuR95y8E,7782
106
- pixeltable/tests/test_view.py,sha256=vbKEk9kWF5U6B78uNLSQsGw46s2oOOhHnJy8p9NmNTo,21859
107
- pixeltable/tests/utils.py,sha256=2EpA2KQmE7fdNDGsOBmjpOwHmGpfNIv_1880itvcaoE,10378
108
- pixeltable/tool/create_test_db_dump.py,sha256=ARlLUfOs4stxIPFl-hGl_KX-ck6JRWmUiXqTwTtS1GU,5148
115
+ pixeltable/tests/test_types.py,sha256=psRqCDInUPH99W6-FlZhqUoN5FTlfZaUUS7YR3UzvIw,2045
116
+ pixeltable/tests/test_video.py,sha256=zN9h9KM2V8U-Rf3tFxYimp_QoT4hLbbguyEu2o9_PLU,7740
117
+ pixeltable/tests/test_view.py,sha256=EWo_Z-UEbilayXK8iEziPg5fedGtT6o4745S04Z4Lb4,22108
118
+ pixeltable/tests/utils.py,sha256=LNHP9O0vqtKV4_WngD6V3e6iI7dKxLkII2UInR4xKHQ,15106
119
+ pixeltable/tool/create_test_db_dump.py,sha256=mKX42BHgx1JggmG2vupT0kzDM0N2HG-z8ObKcgBRMls,5842
109
120
  pixeltable/tool/create_test_video.py,sha256=OLfccymYReIpzE8osZn4rQvLXxxiPC_l0vc06U74hVM,2899
110
- pixeltable/type_system.py,sha256=Qxx-LzE88QJPC528z8wnof66BwKBT7GPYOJ4bE4BV9o,31798
121
+ pixeltable/type_system.py,sha256=VXVxgclkW3_wX818qZ6NnST29M8R4fgQ9_LiEfVOo8k,29929
111
122
  pixeltable/utils/__init__.py,sha256=UYlrf6TIWJT0g-Hac0b34-dEk478B5Qx8dGco34YlIk,439
123
+ pixeltable/utils/arrow.py,sha256=83_7aG5UR2qtTktw_otLkQs-RQbLk0VVM0JLJkbweNU,3692
112
124
  pixeltable/utils/clip.py,sha256=HXXWFBJXW9XysdMk9_3hP1V1S-3B8Hwd5rNMbJFjjnI,720
113
125
  pixeltable/utils/coco.py,sha256=mk1cxjKYQC0ABm2ZQ9SNu9MvBPECmmKvnASpxnFXdL0,5604
114
126
  pixeltable/utils/documents.py,sha256=MGtWZs93Bt_pdExxT9yjH7VWbawSd5A2O5_YdxEZlMk,1094
115
127
  pixeltable/utils/filecache.py,sha256=UoNONG2VaAc2IBB0e3sQdsvyOPOes2XSDc5_CsA4qek,7839
116
128
  pixeltable/utils/help.py,sha256=cCnxJ4VP9MJ57iDqExmnDcM-JG3a1lw_q7g-D7bpSVI,252
129
+ pixeltable/utils/hf_datasets.py,sha256=TxN0H9d25VfXiWwT1XAziNFJMKLSK9Y7x1oPejbuFok,7005
117
130
  pixeltable/utils/media_store.py,sha256=x71wnJDZDHcdd13VCfL4AkHQ6IJB41gNA-zBvXJwFos,3116
118
- pixeltable/utils/parquet.py,sha256=3cjC1vibPHQ24cQS0xPwTjkhxK9TVkITkSxkf29bdaQ,5775
119
- pixeltable/utils/pytorch.py,sha256=h7q-7q3gXThDoTVA8k9vIvMc4VgnNAQy3ScDIU6h3IE,6515
131
+ pixeltable/utils/parquet.py,sha256=DmiF74UYNvnGOOgHUHk_108QZALsQY7HnZoJw6-H3xc,7120
132
+ pixeltable/utils/pytorch.py,sha256=BR4tgfUWw-2rwWTOgzXj5qdMBpe1Arpp5SK4ax6jjpk,3483
120
133
  pixeltable/utils/s3.py,sha256=rkanuhk9DWvSfmbOLQW1j1Iov4sl2KhxGGKN-AJ8LSE,432
121
134
  pixeltable/utils/sql.py,sha256=5n5_OmXAGtqFdL6z5XvgnU-vlx6Ba6f1WJrO1ZwUle8,765
122
135
  pixeltable/utils/transactional_directory.py,sha256=UGzCrGtLR3hEEf8sYGuWBzLVFAEQml3vdIavigWeTBM,1349
123
- pixeltable-0.2.3.dist-info/LICENSE,sha256=0UNMmwuqWPC0xDY1NWMm4uNJ2_MyA1pnTNRgQTvuBiQ,746
124
- pixeltable-0.2.3.dist-info/METADATA,sha256=n_jCwEwEIRpA78qdeOTZBgQzlTFAljHgsyOZPrg-o58,5473
125
- pixeltable-0.2.3.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
126
- pixeltable-0.2.3.dist-info/RECORD,,
136
+ pixeltable-0.2.5.dist-info/LICENSE,sha256=0UNMmwuqWPC0xDY1NWMm4uNJ2_MyA1pnTNRgQTvuBiQ,746
137
+ pixeltable-0.2.5.dist-info/METADATA,sha256=Fl2vtfThiLTgAhZMSioMssMmq7DvnSe-7V42AfBrT7g,6081
138
+ pixeltable-0.2.5.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
139
+ pixeltable-0.2.5.dist-info/RECORD,,