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

@@ -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.4
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.0)
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,37 +28,42 @@ 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
+ [![Open in Kaggle](https://kaggle.com/static/images/open-in-kaggle.svg)](https://www.kaggle.com/code/brunep/pixeltable-basics) <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
64
 
60
- ## Installation
61
65
 
66
+ ## 💾 Installation
62
67
  Pixeltable works with Python 3.9, 3.10, or 3.11 running on Linux or MacOS.
63
68
 
64
69
  ```
@@ -78,14 +83,6 @@ guide. Then, check out the
78
83
  [Pixeltable Basics](https://pixeltable.github.io/pixeltable/tutorials/pixeltable-basics/)
79
84
  tutorial for a tour of its most important features.
80
85
 
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
86
  ## Why should you use Pixeltable?
90
87
 
91
88
  - It gives you transparency and reproducibility
@@ -119,3 +116,12 @@ get cost projections before adding new data and new augmentations.
119
116
  * Rely on Pixeltable's automatic versioning and snapshot functionality to protect against regressions
120
117
  and to ensure reproducibility.
121
118
 
119
+ ## Contributions & Feedback
120
+
121
+ Are you experiencing issues or bugs with Pixeltable? File an [Issue](https://github.com/pixeltable/pixeltable/issues).
122
+ </br>Do you want to contribute? Feel free to open a [PR](https://github.com/pixeltable/pixeltable/pulls).
123
+
124
+ ## :classical_building: License
125
+
126
+ This library is licensed under the Apache 2.0 License.
127
+
@@ -1,7 +1,7 @@
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=rlWhKh_k9zLXus0Slcrxzsl6tJpyOxylu2qfUk0waVI,8663
5
5
  pixeltable/catalog/dir.py,sha256=pG1nMpG123POo6WMSHhAmnwXOQ26uUJfUcbzL-Jb4ws,919
6
6
  pixeltable/catalog/globals.py,sha256=yLEGNbsSnLzjWNHVJacfjA9hbw13Q6QXLOSCRmdTlq0,943
7
7
  pixeltable/catalog/insertable_table.py,sha256=1JGZqmx5tKbm_UmJLIalntFDs81s-mvTv0gOqk98b3Q,8280
@@ -13,9 +13,9 @@ pixeltable/catalog/table.py,sha256=CJQc2NnebfL1ekMcaZhJEZ0CI408-F7R90_czjDKy-g,2
13
13
  pixeltable/catalog/table_version.py,sha256=Q1NSaeLmFw7gYgARyyW6JJ79GRhjtp0_Q410KH27e1Q,35680
14
14
  pixeltable/catalog/table_version_path.py,sha256=kn5T0m5XBqphlDqCKsqD-s159diCjKvrSrtzYZHwKuw,5461
15
15
  pixeltable/catalog/view.py,sha256=BIL3s4DV3tWbOcqtqnhn46B2UvLaBhppfJUlNEt5nec,9734
16
- pixeltable/client.py,sha256=HiqGNRQoyBPXF2rAhTJFE3ZSUUaSLpGo28pLZjubh8Y,20548
16
+ pixeltable/client.py,sha256=RweoJoUGap_uzAcrhSwU6yOH7j_fsSM-VgyKSCYGvv8,23616
17
17
  pixeltable/dataframe.py,sha256=vBc4T-QU-lTTtnljqDbBFTHwm2CecLHIjJumEv8lQ0s,28339
18
- pixeltable/env.py,sha256=sY-VUY9WFs4li7CidyRXubfjmBh3cbR-cFj-wZr4xY0,16398
18
+ pixeltable/env.py,sha256=A38md5r-hE6i-6Og1Nptlzo0ci3Oyn62ogPs6hlNLZE,15744
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
@@ -65,15 +65,15 @@ pixeltable/func/globals.py,sha256=UP4hAkEVKD_3lr7l_VVUUCetJP85sydUYiVAU4m5-aw,12
65
65
  pixeltable/func/nos_function.py,sha256=HzIKK4XjTo1E6pML-EbhuX3u_LYibFWUuTkIxoIih7c,9650
66
66
  pixeltable/func/signature.py,sha256=5Xo3hIVSXoYtkU-BvUi21b6FghIQABm48UfVjQr9QYU,7107
67
67
  pixeltable/func/udf.py,sha256=XlB7dzOc98XinUrs4tMGUAetV0SmQ_Z2oKPDBsx46o0,6457
68
- pixeltable/functions/__init__.py,sha256=kFepRTpg-YOeeXG9076s9v-lm8ZUNqicaPUfX-CrW5c,3419
68
+ pixeltable/functions/__init__.py,sha256=T8FZuE9YSh4KeRg7tBgOEdg8LLyvn89xWLIRylpiP-I,3390
69
69
  pixeltable/functions/eval.py,sha256=qLc_55VTwi_IDnAJFq79Hy7FLi7Gb26DxdykYiBTMrM,8453
70
- pixeltable/functions/fireworks.py,sha256=7h1gxcGhG8jepS_Gi1nwp8zCw1gdRaTzufS6U08mmLc,1596
70
+ pixeltable/functions/fireworks.py,sha256=e_rCITg18yNndNI8TJPXRSN6DR0hYWT-_dUavoPuyfc,908
71
71
  pixeltable/functions/huggingface.py,sha256=Wg8AgCsoGFx8AX3AThko66L7uSg9cUEjL8_QxKoA4dg,4804
72
72
  pixeltable/functions/image.py,sha256=xR_S_0BuX6Ycc5E366GpOfP0JptD7beQwHE_fLl8ZVM,431
73
- pixeltable/functions/openai.py,sha256=SkwUBnnTT6olQCMHzQGO0vpvApgAaBk_88W7YM8QQuo,2863
73
+ pixeltable/functions/openai.py,sha256=xh40TvNanhXPXWGte_ZKxuyD6TYWzmC_1G3qRNDkNv8,6861
74
74
  pixeltable/functions/pil/image.py,sha256=8gItSXXuJaCkq9FHEJE9qFpRM3WAoa59x89Xa0DgksQ,6217
75
75
  pixeltable/functions/string.py,sha256=RYOgZwifjC943YloEMi3PdflnjFqOYB2FddrUvzgtXs,516
76
- pixeltable/functions/together.py,sha256=TGo72RJuHqofwJHSrHqsJoO6RQm6Iipqhy49V3JiBss,650
76
+ pixeltable/functions/together.py,sha256=sG23nLMScmp4wRA4K1EIJDY9peqE1IPgxlK3fhNrbgw,3423
77
77
  pixeltable/functions/util.py,sha256=v094FgixHchzKMj4YvfHExDRGIVhCL2D-NL3pl-92oo,1596
78
78
  pixeltable/functions/video.py,sha256=WZF4G3tV-_LfRQHUinXe_rnu1-4N68Ht60JCR_s7Bew,2403
79
79
  pixeltable/iterators/__init__.py,sha256=sfsasCypAq5rNOTMlr4j2ROXxzdl4M8L2KvQIEbd0cQ,70
@@ -85,42 +85,48 @@ pixeltable/metadata/converters/convert_10.py,sha256=0mSGCn7vqtef63riPi9msUaaUvsS
85
85
  pixeltable/metadata/schema.py,sha256=oTxtFSvbmCEcr54F929_NYFVp76N8gpN4nHDr9VnA9M,7761
86
86
  pixeltable/plan.py,sha256=BQMCxOCy7lO4dqBCt5W9GUFdBWkuhr13-T8_2E97fUk,34710
87
87
  pixeltable/store.py,sha256=ICqfHiotyMyTi2gsQ-Qw-ed1ooNkAx0vgMSMri4xfqk,19511
88
- pixeltable/tests/conftest.py,sha256=2RyRWIW2Ky9VQ41Hj0ChNr_Oh5vTx4x95tUdJWX5ktE,6677
88
+ pixeltable/tests/conftest.py,sha256=qTfWzGHH35gSkHPOaCAzdDtWWJDEktNIPprLh1wjHwU,6684
89
+ pixeltable/tests/functions/test_fireworks.py,sha256=G-54dABoRbmXApyjWZKKrKKooIp7sWcpAT6rJWVESWk,1666
90
+ pixeltable/tests/functions/test_functions.py,sha256=SRE4zRwfJ1Hetu8uMp5X-Iqg-pawn87q07JHa7w_8l0,2884
91
+ pixeltable/tests/functions/test_huggingface.py,sha256=jOnE51qCHosB6FYIBUWf4VsK4m9mLO3zaBxnKZ5cmHI,7739
92
+ pixeltable/tests/functions/test_openai.py,sha256=ptt3QDAQttddqWjmeGMmOkedJg14KFr_b2FT9Chmwlw,8172
93
+ pixeltable/tests/functions/test_together.py,sha256=0XGAO2J17tefSlhtMbOFN92bp1SgUB9kw_almcz6fyQ,4788
89
94
  pixeltable/tests/test_audio.py,sha256=92PMPrMtYzLoaLiW92MupEfWPEcfoLlYlZKlxmWQXdI,3186
90
95
  pixeltable/tests/test_catalog.py,sha256=Npxt72g5aZkfg1fqE-19L8rGilzicAiTC0ithIy3woI,1189
91
96
  pixeltable/tests/test_client.py,sha256=9acrjElh1YVX8WXWO04VQ-S6mNx9ZtqAHoh4uBc81y4,531
92
97
  pixeltable/tests/test_component_view.py,sha256=VfcBgdG1QKeo0AOnHmO21J3qdm_8-06RljB7kkTeTok,17732
93
- pixeltable/tests/test_dataframe.py,sha256=EH8pVeDpthH8J8561xZtn_Lz4Tb_8uycw4JjLKjZEJI,18007
98
+ pixeltable/tests/test_dataframe.py,sha256=KytKHjsyHluB9DmxmI0g3YPC7UTvbnv5YhysaUMfVzA,17975
94
99
  pixeltable/tests/test_dirs.py,sha256=WuWGOcpUFPCl1PGZgOMcU5bpzv1ClUqZ5AxavrDeCic,3611
95
100
  pixeltable/tests/test_document.py,sha256=5G52cMbkkX2lk5SwyYQ1KYjQjgUfVhjcsjPtL9xjGXU,5810
96
101
  pixeltable/tests/test_exprs.py,sha256=ZwImlJpTu9YQ2AnAplurjxDmabYqG7rB7aU6TxQAJdI,32743
97
102
  pixeltable/tests/test_function.py,sha256=6sA_3Oe1p4sUhL5L5hYyW-mG1TPGfFDmW1BPVPnGXek,12817
98
- pixeltable/tests/test_functions.py,sha256=pKRsb8503vkYWzp_BOGuxd-PDtOb04NKW-T6_4sJ3B0,14394
99
103
  pixeltable/tests/test_migration.py,sha256=UjJhhg061TtyTAa1CAB-BdlT9YwLJkl8yIGSetnqcKw,1535
100
104
  pixeltable/tests/test_nos.py,sha256=ITE7FNEaNreJ_XTz4wYLWuidFSUQMFp3ShuHTz05OrE,2649
101
105
  pixeltable/tests/test_snapshot.py,sha256=J8wepLOaOrJkqDWq1dkou8MIR5Hf1DEseAqlUrb7BFg,9297
102
- pixeltable/tests/test_table.py,sha256=KGPny8KQ4wVYT-N78dqsoMahd_1GyQAGZaCqT7sB61E,48484
106
+ pixeltable/tests/test_table.py,sha256=zthAzzO9DGmOSsnFD2Xuy40t4-_1ZzchAMKg9JXs1kY,53303
103
107
  pixeltable/tests/test_transactional_directory.py,sha256=Jx55PZgrkHTI0Eli09puwMckvwfCM9arPTQUT9g6Tbg,1308
104
108
  pixeltable/tests/test_types.py,sha256=4_LR5Poc8Fa5fOpRBaAc_qAN21SsVxFP54Npq_6n9G8,970
105
109
  pixeltable/tests/test_video.py,sha256=j9vgxp9f2WdH0rCoMXqhgTW3XG-czTBU4rrnuR95y8E,7782
106
110
  pixeltable/tests/test_view.py,sha256=vbKEk9kWF5U6B78uNLSQsGw46s2oOOhHnJy8p9NmNTo,21859
107
- pixeltable/tests/utils.py,sha256=2EpA2KQmE7fdNDGsOBmjpOwHmGpfNIv_1880itvcaoE,10378
111
+ pixeltable/tests/utils.py,sha256=OY8r6SM9MAEiXehqBymF8BkHYmlAd7-D09nfzTZMCsA,14359
108
112
  pixeltable/tool/create_test_db_dump.py,sha256=ARlLUfOs4stxIPFl-hGl_KX-ck6JRWmUiXqTwTtS1GU,5148
109
113
  pixeltable/tool/create_test_video.py,sha256=OLfccymYReIpzE8osZn4rQvLXxxiPC_l0vc06U74hVM,2899
110
- pixeltable/type_system.py,sha256=Qxx-LzE88QJPC528z8wnof66BwKBT7GPYOJ4bE4BV9o,31798
114
+ pixeltable/type_system.py,sha256=oUrqqux-YJrzNpPFp_3WkSdI3lHm7AcZByTCnWa97VQ,30374
111
115
  pixeltable/utils/__init__.py,sha256=UYlrf6TIWJT0g-Hac0b34-dEk478B5Qx8dGco34YlIk,439
116
+ pixeltable/utils/arrow.py,sha256=83_7aG5UR2qtTktw_otLkQs-RQbLk0VVM0JLJkbweNU,3692
112
117
  pixeltable/utils/clip.py,sha256=HXXWFBJXW9XysdMk9_3hP1V1S-3B8Hwd5rNMbJFjjnI,720
113
118
  pixeltable/utils/coco.py,sha256=mk1cxjKYQC0ABm2ZQ9SNu9MvBPECmmKvnASpxnFXdL0,5604
114
119
  pixeltable/utils/documents.py,sha256=MGtWZs93Bt_pdExxT9yjH7VWbawSd5A2O5_YdxEZlMk,1094
115
120
  pixeltable/utils/filecache.py,sha256=UoNONG2VaAc2IBB0e3sQdsvyOPOes2XSDc5_CsA4qek,7839
116
121
  pixeltable/utils/help.py,sha256=cCnxJ4VP9MJ57iDqExmnDcM-JG3a1lw_q7g-D7bpSVI,252
122
+ pixeltable/utils/hf_datasets.py,sha256=TxN0H9d25VfXiWwT1XAziNFJMKLSK9Y7x1oPejbuFok,7005
117
123
  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
124
+ pixeltable/utils/parquet.py,sha256=DmiF74UYNvnGOOgHUHk_108QZALsQY7HnZoJw6-H3xc,7120
125
+ pixeltable/utils/pytorch.py,sha256=BR4tgfUWw-2rwWTOgzXj5qdMBpe1Arpp5SK4ax6jjpk,3483
120
126
  pixeltable/utils/s3.py,sha256=rkanuhk9DWvSfmbOLQW1j1Iov4sl2KhxGGKN-AJ8LSE,432
121
127
  pixeltable/utils/sql.py,sha256=5n5_OmXAGtqFdL6z5XvgnU-vlx6Ba6f1WJrO1ZwUle8,765
122
128
  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,,
129
+ pixeltable-0.2.4.dist-info/LICENSE,sha256=0UNMmwuqWPC0xDY1NWMm4uNJ2_MyA1pnTNRgQTvuBiQ,746
130
+ pixeltable-0.2.4.dist-info/METADATA,sha256=tUA1jMlooZRLprmQniFTby9KDCuOHFr5b1FVv4fCZdM,5983
131
+ pixeltable-0.2.4.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
132
+ pixeltable-0.2.4.dist-info/RECORD,,