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

@@ -24,24 +24,37 @@ _logger = logging.getLogger('pixeltable')
24
24
  client_lock = threading.Lock()
25
25
 
26
26
 
27
- class R2ClientDict(NamedTuple):
28
- """Container for actual R2 access objects (clients, resources)
29
- Thread-safe, protected by the module lock 'client_lock'"""
27
+ class S3CompatClientDict(NamedTuple):
28
+ """Container for S3-compatible storage access objects (R2, B2, etc.).
29
+ Thread-safe via the module-level 'client_lock'.
30
+ """
30
31
 
31
- profile: Optional[str] # profile used to find credentials
32
- clients: dict[str, Any] # Dictionary of URI to client object attached to the URI
32
+ profile: Optional[str] # AWS-style profile used to locate credentials
33
+ clients: dict[str, Any] # Map of endpoint URL boto3 client instance
33
34
 
34
35
 
35
36
  @env.register_client('r2')
36
37
  def _() -> Any:
37
38
  profile_name = Config.get().get_string_value('r2_profile')
38
- return R2ClientDict(profile=profile_name, clients={})
39
+ return S3CompatClientDict(profile=profile_name, clients={})
39
40
 
40
41
 
41
42
  @env.register_client('r2_resource')
42
43
  def _() -> Any:
43
44
  profile_name = Config.get().get_string_value('r2_profile')
44
- return R2ClientDict(profile=profile_name, clients={})
45
+ return S3CompatClientDict(profile=profile_name, clients={})
46
+
47
+
48
+ @env.register_client('b2')
49
+ def _() -> Any:
50
+ profile_name = Config.get().get_string_value('b2_profile')
51
+ return S3CompatClientDict(profile=profile_name, clients={})
52
+
53
+
54
+ @env.register_client('b2_resource')
55
+ def _() -> Any:
56
+ profile_name = Config.get().get_string_value('b2_profile')
57
+ return S3CompatClientDict(profile=profile_name, clients={})
45
58
 
46
59
 
47
60
  @env.register_client('s3')
@@ -75,8 +88,8 @@ class S3Store(ObjectStoreBase):
75
88
  self.soa = soa
76
89
  self.__bucket_name = self.soa.container
77
90
  self.__prefix_name = self.soa.prefix
78
- assert self.soa.storage_target in {StorageTarget.R2_STORE, StorageTarget.S3_STORE}, (
79
- f'Expected storage_target "s3" or "r2", got {self.soa.storage_target}'
91
+ assert self.soa.storage_target in {StorageTarget.R2_STORE, StorageTarget.S3_STORE, StorageTarget.B2_STORE}, (
92
+ f'Expected storage_target "s3", "r2", or "b2", got {self.soa.storage_target}'
80
93
  )
81
94
  self.__base_uri = self.soa.prefix_free_uri + self.soa.prefix
82
95
 
@@ -91,6 +104,15 @@ class S3Store(ObjectStoreBase):
91
104
  extra_args={'endpoint_url': self.soa.container_free_uri, 'region_name': 'auto'},
92
105
  )
93
106
  return cd.clients[self.soa.container_free_uri]
107
+ if self.soa.storage_target == StorageTarget.B2_STORE:
108
+ cd = env.Env.get().get_client('b2')
109
+ with client_lock:
110
+ if self.soa.container_free_uri not in cd.clients:
111
+ cd.clients[self.soa.container_free_uri] = S3Store.create_boto_client(
112
+ profile_name=cd.profile,
113
+ extra_args={'endpoint_url': self.soa.container_free_uri, 'region_name': 'auto'},
114
+ )
115
+ return cd.clients[self.soa.container_free_uri]
94
116
  if self.soa.storage_target == StorageTarget.S3_STORE:
95
117
  return env.Env.get().get_client('s3')
96
118
  raise AssertionError(f'Unexpected storage_target: {self.soa.storage_target}')
@@ -105,6 +127,15 @@ class S3Store(ObjectStoreBase):
105
127
  extra_args={'endpoint_url': self.soa.container_free_uri, 'region_name': 'auto'},
106
128
  )
107
129
  return cd.clients[self.soa.container_free_uri]
130
+ if self.soa.storage_target == StorageTarget.B2_STORE:
131
+ cd = env.Env.get().get_client('b2_resource')
132
+ with client_lock:
133
+ if self.soa.container_free_uri not in cd.clients:
134
+ cd.clients[self.soa.container_free_uri] = S3Store.create_boto_resource(
135
+ profile_name=cd.profile,
136
+ extra_args={'endpoint_url': self.soa.container_free_uri, 'region_name': 'auto'},
137
+ )
138
+ return cd.clients[self.soa.container_free_uri]
108
139
  if self.soa.storage_target == StorageTarget.S3_STORE:
109
140
  return env.Env.get().get_client('s3_resource')
110
141
  raise AssertionError(f'Unexpected storage_target: {self.soa.storage_target}')
@@ -161,8 +192,8 @@ class S3Store(ObjectStoreBase):
161
192
  new_file_uri = self._prepare_uri(col, ext=src_path.suffix)
162
193
  parsed = urllib.parse.urlparse(new_file_uri)
163
194
  key = parsed.path.lstrip('/')
164
- if self.soa.storage_target == StorageTarget.R2_STORE:
165
- key = key.split('/', 1)[-1] # Remove the bucket name from the key for R2
195
+ if self.soa.storage_target in {StorageTarget.R2_STORE, StorageTarget.B2_STORE}:
196
+ key = key.split('/', 1)[-1] # Remove the bucket name from the key for R2/B2
166
197
  try:
167
198
  _logger.debug(f'Media Storage: copying {src_path} to {new_file_uri} : Key: {key}')
168
199
  self.client().upload_file(Filename=str(src_path), Bucket=self.bucket_name, Key=key)
@@ -329,6 +360,8 @@ class S3Store(ObjectStoreBase):
329
360
  'connect_timeout': 15,
330
361
  'read_timeout': 30,
331
362
  'retries': {'max_attempts': 3, 'mode': 'adaptive'},
363
+ 's3': {'addressing_style': 'path'}, # Use path-style addressing for S3-compatible services
364
+ 'user_agent_extra': 'pixeltable', # Marks requests as coming from Pixeltable for tracking and debugging
332
365
  }
333
366
 
334
367
  session = cls.create_boto_session(profile_name)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pixeltable
3
- Version: 0.4.16
3
+ Version: 0.4.18
4
4
  Summary: AI Data Infrastructure: Declarative, Multimodal, and Incremental
5
5
  Project-URL: homepage, https://pixeltable.com/
6
6
  Project-URL: repository, https://github.com/pixeltable/pixeltable
@@ -37,14 +37,14 @@ Requires-Dist: more-itertools>=10.2
37
37
  Requires-Dist: nest-asyncio>=1.5
38
38
  Requires-Dist: numpy>=1.25
39
39
  Requires-Dist: pandas>=2.0
40
- Requires-Dist: pgvector>=0.2.1
40
+ Requires-Dist: pgvector>=0.4.0
41
41
  Requires-Dist: pillow-heif>=0.15.0
42
42
  Requires-Dist: pillow>=9.3.0
43
- Requires-Dist: pixeltable-pgserver==0.3.1
43
+ Requires-Dist: pixeltable-pgserver==0.4.0
44
44
  Requires-Dist: psutil>=5.9.5
45
45
  Requires-Dist: psycopg[binary]>=3.1.18
46
46
  Requires-Dist: puremagic>=1.20
47
- Requires-Dist: pyarrow>=13.0.0
47
+ Requires-Dist: pyarrow>=19
48
48
  Requires-Dist: pydantic>=2.7.4
49
49
  Requires-Dist: pymupdf>=1.24.1
50
50
  Requires-Dist: pyyaml>=6.0.1
@@ -75,7 +75,7 @@ The only open source Python library providing declarative data infrastructure fo
75
75
  [![PyPI Package](https://img.shields.io/pypi/v/pixeltable?color=4D148C)](https://pypi.org/project/pixeltable/)
76
76
  [![My Discord (1306431018890166272)](https://img.shields.io/badge/💬-Discord-%235865F2.svg)](https://discord.gg/QPyqFYx2UN)
77
77
 
78
- [**Quick Start**](https://docs.pixeltable.com/docs/overview/quick-start) |
78
+ [**Quick Start**](https://docs.pixeltable.com/overview/quick-start) |
79
79
  [**Documentation**](https://docs.pixeltable.com/) |
80
80
  [**API Reference**](https://pixeltable.github.io/pixeltable/) |
81
81
  [**Sample Apps**](https://github.com/pixeltable/pixeltable/tree/main/docs/sample-apps) |
@@ -97,8 +97,8 @@ https://github.com/user-attachments/assets/b50fd6df-5169-4881-9dbe-1b6e5d06cede
97
97
  ## Quick Start
98
98
 
99
99
  With Pixeltable, you define your *entire* data processing and AI workflow declaratively using
100
- **[computed columns](https://docs.pixeltable.com/docs/datastore/computed-columns)** on
101
- **[tables](https://docs.pixeltable.com/docs/datastore/tables-and-operations)**.
100
+ **[computed columns](https://docs.pixeltable.com/datastore/computed-columns)** on
101
+ **[tables](https://docs.pixeltable.com/datastore/tables-and-operations)**.
102
102
  Focus on your application logic, not the data plumbing.
103
103
 
104
104
  ```python
@@ -126,7 +126,7 @@ t.add_computed_column(
126
126
  # Extract specific fields from detection results
127
127
  t.add_computed_column(detections_text=t.detections.label_text)
128
128
 
129
- # OpenAI Vision API integration with built-in rate limiting and async managemennt
129
+ # OpenAI Vision API integration with built-in rate limiting and async management
130
130
  from pixeltable.functions import openai
131
131
 
132
132
  t.add_computed_column(
@@ -152,17 +152,17 @@ results = t.select(
152
152
 
153
153
  ## What Happened?
154
154
 
155
- * **Data Ingestion & Storage:** References [files](https://docs.pixeltable.com/docs/datastore/bringing-data)
155
+ * **Data Ingestion & Storage:** References [files](https://docs.pixeltable.com/datastore/bringing-data)
156
156
  (images, videos, audio, docs) in place, handles structured data.
157
- * **Transformation & Processing:** Applies *any* Python function ([UDFs](https://docs.pixeltable.com/docs/datastore/custom-functions))
158
- or built-in operations ([chunking, frame extraction](https://docs.pixeltable.com/docs/datastore/iterators)) automatically.
159
- * **AI Model Integration:** Runs inference ([embeddings](https://docs.pixeltable.com/docs/datastore/embedding-index),
160
- [object detection](https://docs.pixeltable.com/docs/examples/vision/yolox),
161
- [LLMs](https://docs.pixeltable.com/docs/integrations/frameworks#cloud-llm-providers)) as part of the data pipeline.
157
+ * **Transformation & Processing:** Applies *any* Python function ([UDFs](https://docs.pixeltable.com/datastore/custom-functions))
158
+ or built-in operations ([chunking, frame extraction](https://docs.pixeltable.com/datastore/iterators)) automatically.
159
+ * **AI Model Integration:** Runs inference ([embeddings](https://docs.pixeltable.com/datastore/vector-database),
160
+ [object detection](https://docs.pixeltable.com/examples/vision/yolox),
161
+ [LLMs](https://docs.pixeltable.com/integrations/frameworks#cloud-llm-providers)) as part of the data pipeline.
162
162
  * **Indexing & Retrieval:** Creates and manages vector indexes for fast
163
- [semantic search](https://docs.pixeltable.com/docs/datastore/embedding-index#phase-3%3A-query)
163
+ [semantic search](https://docs.pixeltable.com/datastore/vector-database#phase-3%3A-query)
164
164
  alongside traditional filtering.
165
- * **Incremental Computation:** Only [recomputes](https://docs.pixeltable.com/docs/overview/quick-start) what's
165
+ * **Incremental Computation:** Only [recomputes](https://docs.pixeltable.com/overview/quick-start) what's
166
166
  necessary when data or code changes, saving time and cost.
167
167
  * **Versioning & Lineage:** Automatically tracks data and schema changes for reproducibility. See below for an example
168
168
  that uses "time travel" to query an older version of a table.
@@ -186,7 +186,7 @@ managed by Pixeltable and is intended to be accessed through the Pixeltable Pyth
186
186
 
187
187
  ## Key Principles
188
188
 
189
- **[Unified Multimodal Interface:](https://docs.pixeltable.com/docs/datastore/tables-and-operations)** `pxt.Image`,
189
+ **[Unified Multimodal Interface:](https://docs.pixeltable.com/datastore/tables-and-operations)** `pxt.Image`,
190
190
  `pxt.Video`, `pxt.Audio`, `pxt.Document`, etc. – manage diverse data consistently.
191
191
 
192
192
  ```python
@@ -199,7 +199,7 @@ t = pxt.create_table(
199
199
  )
200
200
  ```
201
201
 
202
- **[Declarative Computed Columns:](https://docs.pixeltable.com/docs/datastore/computed-columns)** Define processing
202
+ **[Declarative Computed Columns:](https://docs.pixeltable.com/datastore/computed-columns)** Define processing
203
203
  steps once; they run automatically on new/updated data.
204
204
 
205
205
  ```python
@@ -210,7 +210,7 @@ t.add_computed_column(
210
210
  )
211
211
  ```
212
212
 
213
- **[Built-in Vector Search:](https://docs.pixeltable.com/docs/datastore/embedding-index)** Add embedding indexes and
213
+ **[Built-in Vector Search:](https://docs.pixeltable.com/datastore/vector-database)** Add embedding indexes and
214
214
  perform similarity searches directly on tables/views.
215
215
 
216
216
  ```python
@@ -224,7 +224,7 @@ t.add_embedding_index(
224
224
  sim = t.img.similarity("cat playing with yarn")
225
225
  ```
226
226
 
227
- **[Incremental View Maintenance:](https://docs.pixeltable.com/docs/datastore/views)** Create virtual tables using iterators
227
+ **[Incremental View Maintenance:](https://docs.pixeltable.com/datastore/views)** Create virtual tables using iterators
228
228
  for efficient processing without data duplication.
229
229
 
230
230
  ```python
@@ -241,7 +241,7 @@ frames = pxt.create_view('frames', videos,
241
241
  iterator=FrameIterator.create(video=videos.video, fps=0.5))
242
242
  ```
243
243
 
244
- **[Seamless AI Integration:](https://docs.pixeltable.com/docs/integrations/frameworks)** Built-in functions for
244
+ **[Seamless AI Integration:](https://docs.pixeltable.com/integrations/frameworks)** Built-in functions for
245
245
  OpenAI, Anthropic, Hugging Face, CLIP, YOLOX, and more.
246
246
 
247
247
  ```python
@@ -265,7 +265,7 @@ t.add_computed_column(
265
265
  )
266
266
  ```
267
267
 
268
- **[Bring Your Own Code:](https://docs.pixeltable.com/docs/datastore/custom-functions)** Extend Pixeltable with UDFs, batch processing, and custom aggregators.
268
+ **[Bring Your Own Code:](https://docs.pixeltable.com/datastore/custom-functions)** Extend Pixeltable with UDFs, batch processing, and custom aggregators.
269
269
 
270
270
  ```python
271
271
  @pxt.udf
@@ -273,7 +273,7 @@ def format_prompt(context: list, question: str) -> str:
273
273
  return f"Context: {context}\nQuestion: {question}"
274
274
  ```
275
275
 
276
- **[Agentic Workflows / Tool Calling:](https://docs.pixeltable.com/docs/examples/chat/tools)** Register `@pxt.udf`,
276
+ **[Agentic Workflows / Tool Calling:](https://docs.pixeltable.com/examples/chat/tools)** Register `@pxt.udf`,
277
277
  `@pxt.query` functions, or **MCP tools** as tools.
278
278
 
279
279
  ```python
@@ -287,7 +287,7 @@ t.add_computed_column(
287
287
  )
288
288
  ```
289
289
 
290
- **[Data Persistence:](https://docs.pixeltable.com/docs/datastore/tables-and-operations#data-operations)** All data,
290
+ **[Data Persistence:](https://docs.pixeltable.com/datastore/tables-and-operations#data-operations)** All data,
291
291
  metadata, and computed results are automatically stored and versioned.
292
292
 
293
293
  ```python
@@ -296,7 +296,7 @@ t.select(t.account, t.balance).collect() # Query its contents
296
296
  t.revert() # Undo the last modification to the table and restore its previous state
297
297
  ```
298
298
 
299
- **[Time Travel:](https://docs.pixeltable.com/docs/datastore/tables-and-operations#data-operations)** By default,
299
+ **[Time Travel:](https://docs.pixeltable.com/datastore/tables-and-operations#data-operations)** By default,
300
300
  Pixeltable preserves the full change history of each table, and any prior version can be selected and queried.
301
301
 
302
302
  ```python
@@ -305,7 +305,7 @@ old_version = pxt.get_table('my_table:472') # Get a handle to a specific table
305
305
  old_version.select(t.account, t.balance).collect() # Query the older version
306
306
  ```
307
307
 
308
- **[SQL-like Python Querying:](https://docs.pixeltable.com/docs/datastore/filtering-and-selecting)** Familiar syntax
308
+ **[SQL-like Python Querying:](https://docs.pixeltable.com/datastore/filtering-and-selecting)** Familiar syntax
309
309
  combined with powerful AI capabilities.
310
310
 
311
311
  ```python
@@ -342,8 +342,8 @@ pxt.export_images_as_fo_dataset(table, table.image) # FiftyOne
342
342
 
343
343
  ## Key Examples
344
344
 
345
- *(See the [Full Quick Start](https://docs.pixeltable.com/docs/overview/quick-start) or
346
- [Notebook Gallery](#-notebook-gallery) for more details)*
345
+ *(See the [Full Quick Start](https://docs.pixeltable.com/overview/quick-start) or
346
+ [Notebook Gallery](#notebook-gallery) for more details)*
347
347
 
348
348
  **1. Multimodal Data Store and Data Transformation (Computed Column):**
349
349
 
@@ -543,7 +543,7 @@ Explore Pixeltable's capabilities interactively:
543
543
  | 10-Min Tour | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/pixeltable-basics.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> | OpenAI | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/integrations/working-with-openai.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> |
544
544
  | Tables & Ops | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/fundamentals/tables-and-data-operations.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> | Anthropic | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/integrations/working-with-anthropic.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> |
545
545
  | UDFs | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/feature-guides/udfs-in-pixeltable.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> | Together AI | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/integrations/working-with-together.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> |
546
- | Embedding Index | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/feature-guides/embedding-and-vector-indexes.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> | Label Studio | <a target="_blank" href="https://docs.pixeltable.com/docs/cookbooks/vision/label-studio"> <img src="https://img.shields.io/badge/📚%20Docs-013056" alt="Visit Docs"/></a> |
546
+ | Embedding Index | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/feature-guides/embedding-indexes.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> | Label Studio | <a target="_blank" href="https://docs.pixeltable.com/examples/vision/label-studio"> <img src="https://img.shields.io/badge/📚%20Docs-013056" alt="Visit Docs"/></a> |
547
547
  | External Files | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/feature-guides/working-with-external-files.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> | Mistral | <a target="_blank" href="https://colab.research.google.com/github/mistralai/cookbook/blob/main/third_party/Pixeltable/incremental_prompt_engineering_and_model_comparison.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Github"/> |
548
548
  | **Use Cases** | | **Sample Apps** | |
549
549
  | RAG Demo | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/use-cases/rag-demo.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> | Multimodal Agent | <a target="_blank" href="https://huggingface.co/spaces/Pixeltable/Multimodal-Powerhouse"> <img src="https://img.shields.io/badge/🤗%20Demo-FF7D04" alt="HF Space"/></a> |
@@ -552,7 +552,7 @@ Explore Pixeltable's capabilities interactively:
552
552
 
553
553
  ## Maintaining Production-Ready Multimodal AI Apps is Still Too Hard
554
554
 
555
- Building robust AI applications, especially [multimodal](https://docs.pixeltable.com/docs/datastore/bringing-data) ones,
555
+ Building robust AI applications, especially [multimodal](https://docs.pixeltable.com/datastore/bringing-data) ones,
556
556
  requires stitching together numerous tools:
557
557
 
558
558
  * ETL pipelines for data loading and transformation.
@@ -1,16 +1,16 @@
1
1
  pixeltable/__init__.py,sha256=-EBEVxlngasTuD1qkJVHebSfUmYlZQH26qWLmXPRZX8,1716
2
2
  pixeltable/__version__.py,sha256=LnMIuAxx6nAQDMev_jnZyUdgsaiE3F8lulfXQBRl9qQ,112
3
- pixeltable/config.py,sha256=ailFL_XWBqPUFQScYCCEKKN5-rjRf_SgGvsJBVUs1qA,8841
4
- pixeltable/dataframe.py,sha256=GpIDZEUF72qcpUGk5OxhcnoSFWYqVOTQiWMPJPUtj-A,64868
5
- pixeltable/env.py,sha256=SHbSW9Z0bvKeN3EpMGncg2KY7yptE5MqoeydLQNR3gE,46599
3
+ pixeltable/config.py,sha256=CF_HXxqYlmMaO8EFHymMeh9Q61UZS0xYaXPE4DBTpJU,8929
4
+ pixeltable/dataframe.py,sha256=EOfxMZPdDRfvvLEeFKt-ocJv_PTWYbza7QG9dd4L9Do,64868
5
+ pixeltable/env.py,sha256=gnCsMRszzlsIcqbwzDii_WLXMvcdh55JvaclFM3eTRc,47297
6
6
  pixeltable/exceptions.py,sha256=Gm8d3TL2iiv6Pj2DLd29wp_j41qNBhxXL9iTQnL4Nk4,1116
7
- pixeltable/globals.py,sha256=OxH62N_tOV_UH0sKCprdpj2_NfNP5sn9YKs20ixY-bE,40366
8
- pixeltable/plan.py,sha256=qRHs1fn6my72w_sV40dNpKNBtWh573Nzam3W8zGj6fw,54070
7
+ pixeltable/globals.py,sha256=nUU0ElOlBM0KhrlZJ26FjFxitkWDqBKz-mNUxJPCULg,41291
8
+ pixeltable/plan.py,sha256=oaNmaiCkTkcYNypzZj49xkqvJmVGZV4KWPs6IhwSL5E,53920
9
9
  pixeltable/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- pixeltable/store.py,sha256=BZGt6bYi5eH5SaZNXIoEUv8OuZxdHLT8MbIV4k-ThXA,22915
10
+ pixeltable/store.py,sha256=TTSAYSQDwq3atDC_UZ41Rk6Cc1OZLVyfy-WoEQ9BVJY,23890
11
11
  pixeltable/type_system.py,sha256=dbV4HKuRzWu5X0LscjWzdxbgcuy8mX34pMCg0725y0g,56316
12
12
  pixeltable/catalog/__init__.py,sha256=GL0MLxqCBHlhKWqhC3e9B4kwTazagTOiqBHHRjyWbTg,726
13
- pixeltable/catalog/catalog.py,sha256=MSJKh1LTXZ2i4zOZCb1I4tblVb_O9x2tKggusuuRgmE,102523
13
+ pixeltable/catalog/catalog.py,sha256=NvOss8B0RGG656tINPN01GHwyJsmKVNqOJ6q64UUfC0,103825
14
14
  pixeltable/catalog/column.py,sha256=lZ24WsVJRcGtfrd8YuSPMWgad3gJPUGtp_YFjEcdX7U,13870
15
15
  pixeltable/catalog/dir.py,sha256=VYTscPlKR6XhupPTXlJ8txAHxS5GSpPJ3LIleDJagVQ,2047
16
16
  pixeltable/catalog/globals.py,sha256=uMIDsbeDzFxZbcgKDTOiT5plC1gAKgz1oxxdh1odIPw,2648
@@ -18,14 +18,14 @@ pixeltable/catalog/insertable_table.py,sha256=VUuJ8z7OtMqgy_LMzkn1KzeLXdR-9poTtt
18
18
  pixeltable/catalog/named_function.py,sha256=vZ-j7P4HugWh9OmUzBMwyRYvO3tQn9jWyJz_1stPavU,1210
19
19
  pixeltable/catalog/path.py,sha256=O3FfxrvyX2crijBhp_2k4-3mG3BFxwba-tlPB74QtJQ,3780
20
20
  pixeltable/catalog/schema_object.py,sha256=rQ6-3rzqnOHyEEHi97kai2S7BO3D9AkH7rirnfbGc14,1785
21
- pixeltable/catalog/table.py,sha256=P3NDlzDfAd2fHAcZ0fJb6ZA3ROpzfcVsyRCfVDaaf7U,81051
21
+ pixeltable/catalog/table.py,sha256=M_pnUeZbwCvnxzJabJVPiqIE15xC6gODqIjpf9Z8gKU,81481
22
22
  pixeltable/catalog/table_metadata.py,sha256=dDUGss6wTv_e1FHIRO9wWC5QhuIaCXTe9Xhd_lUW3Fg,3762
23
- pixeltable/catalog/table_version.py,sha256=QaTSyAdKd5QwfSvCy_-GxWvalcW6VsRgUY0nd-1NwNE,65720
23
+ pixeltable/catalog/table_version.py,sha256=fDAr6518LFkUWdHMym940wni1OP-3vzeW_d4-BxoLRY,68268
24
24
  pixeltable/catalog/table_version_handle.py,sha256=oCQGKdy13TaHDQVLGOMxLtFkYPWs-GdDqlFhfR3WvrU,3732
25
- pixeltable/catalog/table_version_path.py,sha256=IaFVDH06_6ZMuBv5eLNCRTlWizpvz95jgAzqp4OVx_o,9713
25
+ pixeltable/catalog/table_version_path.py,sha256=IFRg1QZdh_DMK0KSg1OncRCw4iZWnrIymblvjVCcklY,9237
26
26
  pixeltable/catalog/tbl_ops.py,sha256=Vdcz4Nzvdw09zcQaCEaOr9Uufk2rQHgG0vBvMbQp9R8,1145
27
27
  pixeltable/catalog/update_status.py,sha256=jeRy7WUZ80l4gPY1c5vYcxT1F82nL5KphNrSKKfOdk8,7667
28
- pixeltable/catalog/view.py,sha256=Snki7QNlKThba9MSeEYCaBIwaqfiR0v_FMdIO9SJkFE,15420
28
+ pixeltable/catalog/view.py,sha256=Q8C3_NoGOajvG5-ew67WX5RBIf8acie6R8_lwhKwJ5Y,15661
29
29
  pixeltable/exec/__init__.py,sha256=UQ32v0MbLF3vFx6MZLuZKfrqNVoihJFhsYzWOChX1go,704
30
30
  pixeltable/exec/aggregation_node.py,sha256=54YO1tddnIGOlWUwVff9xcghrZr60UNAgBekF7OuxWA,4401
31
31
  pixeltable/exec/cache_prefetch_node.py,sha256=Xq6Ty_0LLipDOQ91keUNVo5DZPn5Ogz39X2ThKQz5WA,10891
@@ -33,13 +33,13 @@ pixeltable/exec/cell_materialization_node.py,sha256=TfkGUQdCmTkkLU_lHEXNvd6SzORP
33
33
  pixeltable/exec/cell_reconstruction_node.py,sha256=ygB-BOK1I1KW_yFOMFX-E-w2l_-LUbYKXY6mfQXf6Fg,5322
34
34
  pixeltable/exec/component_iteration_node.py,sha256=7k8Wfzjc15SO0V8rc-zYTiB3DQ-euMtNQIOsve_FY7I,4797
35
35
  pixeltable/exec/data_row_batch.py,sha256=ryrhfXczQVrtxrTEyDTyK9ItNZ9wNt15FdM_Mpuuumw,1109
36
- pixeltable/exec/exec_context.py,sha256=jKeLStfkjwCKKAooC-7a7qZUnZU5O0_JQhanhVerV9c,984
36
+ pixeltable/exec/exec_context.py,sha256=dODbeIXOsxFaIsPoE_q0ybaMqyEsg6JXcw0jOF8jd_Y,1363
37
37
  pixeltable/exec/exec_node.py,sha256=gvXU1nFQqwXNfjUSGAcrB9_2V8Stur6A_dETBkpxqXY,3305
38
38
  pixeltable/exec/globals.py,sha256=fAKOvszbntIh4J1nAmvVA9BGGk98NKZ_G9mVEaZ28pk,904
39
39
  pixeltable/exec/in_memory_data_node.py,sha256=XrR3ggNILrJ77n3l4qOiKWfwUVakdRIdRsVasKP17jw,3513
40
40
  pixeltable/exec/object_store_save_node.py,sha256=r78ySsSlpmw0ZsfG2Rp0kR2xfbs_RgrWjZ__gU_oL1Y,13272
41
41
  pixeltable/exec/row_update_node.py,sha256=KS68FYUxtUv2JSP5RjJmKBAr_hT26zXmWmdpQrYfvKI,3127
42
- pixeltable/exec/sql_node.py,sha256=wPk-LbMqDKIVB_lkjIqh2MqBUSIUZIwLEOGPkNeCwhk,31701
42
+ pixeltable/exec/sql_node.py,sha256=jo6ffEYQjblU2mY0xhMSbI93qhUO-7kZj8yDQIMi52A,31832
43
43
  pixeltable/exec/expr_eval/__init__.py,sha256=sQThSEByK_DLfB-_-18RFhpARx49cSXYEkpCDyi0vQI,61
44
44
  pixeltable/exec/expr_eval/evaluators.py,sha256=t-pJbDW3jjbJLjU53hZtl2uESIX82PSKjMgOzfFi_os,17174
45
45
  pixeltable/exec/expr_eval/expr_eval_node.py,sha256=aYupmD1Trc9O11JgrA5g1yvk2QtdNhjB4jymvQzjsTo,19870
@@ -47,7 +47,7 @@ pixeltable/exec/expr_eval/globals.py,sha256=NQp4f7adjkR1zaFS8oBJWlLszEn8d1ionUNl
47
47
  pixeltable/exec/expr_eval/row_buffer.py,sha256=YY0thdlMNNReEOTyPp36xKPeMeXSZ0VrI9bJsXgo7sU,2744
48
48
  pixeltable/exec/expr_eval/schedulers.py,sha256=pNTHiwL8omHa_kodv61gynBHFbJnSg5CktvezrO_yc8,24337
49
49
  pixeltable/exprs/__init__.py,sha256=u8z3gv-uHt2Bz0F7heRPOVNa1r2OD1qqUDXnwEdSmlM,1113
50
- pixeltable/exprs/arithmetic_expr.py,sha256=4kH4HKBWH75WW8iXTpWU3aHTDz7RYWM9FrtHCiUyyT4,7420
50
+ pixeltable/exprs/arithmetic_expr.py,sha256=fMlr9bhpdDuaSm81o2R7ua-UG1QAUM3OoeFcAw2sW2Q,7901
51
51
  pixeltable/exprs/array_slice.py,sha256=C8O0cmGHdc-iVe2FFdW_2jRVR4Gwurzeot6ESEk6RTA,2167
52
52
  pixeltable/exprs/column_property_ref.py,sha256=GeDi0FQddyypOKkmlv1yJno8hy4xDDuhnF93gg5GL8E,4412
53
53
  pixeltable/exprs/column_ref.py,sha256=zcoQAflGGvzF4N7p9RMoAY7ZdGVwaU4GoemHGuGCmEk,15511
@@ -96,7 +96,7 @@ pixeltable/functions/fireworks.py,sha256=q7eWlYfiWbA0d9r3CB_NAe1fw3q-Z7qsw2gyGJN
96
96
  pixeltable/functions/gemini.py,sha256=Stpchxr7FfxbwCp3WsPR8zfd_GFdLMCWW1G7vt0DpNk,8924
97
97
  pixeltable/functions/globals.py,sha256=OyPJUJ4S6VWyzxstxIzk3xzYBGIEMwgk1RmSTWTZzdI,5106
98
98
  pixeltable/functions/groq.py,sha256=61XbgY4ItASomMw9t-q8HBuv8II_ssclthjA7sL6jik,3605
99
- pixeltable/functions/huggingface.py,sha256=Y-io3EungSs5ibr43vLEXs4dz_Ej20F1nglD0fyLrXA,20371
99
+ pixeltable/functions/huggingface.py,sha256=vN-Tp3Qrue1aYqgGFPme6ZFyfU3ifi93Ury46lhH8xQ,60018
100
100
  pixeltable/functions/image.py,sha256=IKXljMma-uU88efptC3F4aywau7DYcD-Nqd3YpmRNRw,13971
101
101
  pixeltable/functions/json.py,sha256=d7-AvwytUQtQYF_JnWJkptT_Yq0NgMpWfVk-m3U6qTY,807
102
102
  pixeltable/functions/llama_cpp.py,sha256=7m0g_g3YxmyALDXfvqcbm-eCYWgDZhZfCFfj5PjkJVU,4318
@@ -110,7 +110,7 @@ pixeltable/functions/string.py,sha256=LdBNOna5PUSPmM5VlJ_qhmwzyFhumW0k6Dvx2rXSZt
110
110
  pixeltable/functions/timestamp.py,sha256=3GVCVIWdry96Qk5XXuvbJ58Tp30iY5snBibzl2CHjQc,9143
111
111
  pixeltable/functions/together.py,sha256=A8J19BXywyWQ6a2_n05-8uIG5jquOBGqPmW3mb-NrIc,8842
112
112
  pixeltable/functions/util.py,sha256=uQNkyBSkTVMe1wbUI2Q0nz-mM3qPVTF86yK8c9OFIcE,954
113
- pixeltable/functions/video.py,sha256=LQ-1KHoU6DjgCWlj0koBSVO6vH4JKvfl1lGIntWoSSI,30854
113
+ pixeltable/functions/video.py,sha256=wqEZ5X3wk3_L8Rp11hIIFUvgRxl6eA694i9l90xynl4,36036
114
114
  pixeltable/functions/vision.py,sha256=17h9bOm3NJyQzFMBwXDHMqnkcuCspyQJgHdBOXV1Ip8,15380
115
115
  pixeltable/functions/whisper.py,sha256=u2QcDU7JdtgLIImCkFPkzjWEjLTJIrlSkAWqeITyIJw,3103
116
116
  pixeltable/functions/whisperx.py,sha256=NapvBQlIR6FfYeUP328Kjv7a9zgFZPghiFtsvgzhKZk,7724
@@ -123,21 +123,21 @@ pixeltable/io/__init__.py,sha256=k8jlxi2IB_yA8yYTk9lf7qyuayxUbvs9xDuZcO77sFY,716
123
123
  pixeltable/io/datarows.py,sha256=s2fDQTttGxq7cS5JwKFEJRSKn6WsXTaGdmm9VJSl_2M,6154
124
124
  pixeltable/io/external_store.py,sha256=rOYBwTqcZZVU2toWxJ_9Iy2w2YO0DhuABrM2xGmqHSo,14787
125
125
  pixeltable/io/fiftyone.py,sha256=6KyOqJbRXJzF96Ob4B3yZzyU0yveLbvuf6thjfrZZwE,6891
126
- pixeltable/io/globals.py,sha256=mLFFPA91EjyX_ttvzFCLcaYQbG81DuRIyy6C2AcIZDY,11382
126
+ pixeltable/io/globals.py,sha256=fcGCkVMdUp4Q7sMHWLB7i_GDFvXQNEJ6KAi78rh5MdY,11378
127
127
  pixeltable/io/hf_datasets.py,sha256=5WfWfXoQppG1Bx_pS5n44KO1Vo_mEb_S82PLB8cLfAU,5606
128
128
  pixeltable/io/label_studio.py,sha256=PsKZbcko7OzxkNiay2rgpt8VoTK705k4M8AJ7AjCaew,31438
129
129
  pixeltable/io/lancedb.py,sha256=kNcYXptieMlJ6yxEIZHVFklEMOEB2mrSyp7XZmOw4qs,82
130
130
  pixeltable/io/pandas.py,sha256=xQmkwbqE9_fjbbPUgeG5yNICrbVVK73UHxDL-cgrQw0,9007
131
- pixeltable/io/parquet.py,sha256=qVvg9nixJnK9gXYxZocD8HE13SznyLrgW9IsehtT4j4,4101
132
- pixeltable/io/table_data_conduit.py,sha256=PBTj54jP64PK5CAZvnX0_dkCRw6mG74tl65wC8Ey4AI,22939
131
+ pixeltable/io/parquet.py,sha256=iKdYRAx8knYyZ1smfJlexCUoer2rI1pC-E8L0OnNY2E,4085
132
+ pixeltable/io/table_data_conduit.py,sha256=eb5yCfCePzTjRijBcRGAqSJqhkb1p68zNCGCMkI7LsM,22909
133
133
  pixeltable/io/utils.py,sha256=qzBTmqdIawXMt2bfXQOraYnEstL69eC2Z33nl8RrwJk,4244
134
134
  pixeltable/iterators/__init__.py,sha256=hbQhrz0LShLGOPcT1SnWl1s1nBUzAjWino64CfFT_UA,537
135
135
  pixeltable/iterators/audio.py,sha256=khW4M4P_J5twz1Eu3nuDP_73C9iWeCYZ5K_zQysvYxI,9671
136
136
  pixeltable/iterators/base.py,sha256=ZC0ZvXL4iw6AmT8cu-Mdx-T2UG9nmJYV1C6LK4efAfw,1669
137
- pixeltable/iterators/document.py,sha256=UMmLeLQxyNfbhI8p3rBrE-sYrnJhpEUVaMLM50Iq-e8,19972
137
+ pixeltable/iterators/document.py,sha256=qOOGSkuBKGh2dKUDvwJ0PA_Du1S32xleM6McZuKvIJI,22310
138
138
  pixeltable/iterators/image.py,sha256=RrFdf5cnFIQzWKJk4uYi1m1p2qAiz909THYhRQ27DbY,3603
139
139
  pixeltable/iterators/string.py,sha256=URj5edWp-CsorjN_8nnfWGvtIFs_Zh4VPm6htlJbFkU,1257
140
- pixeltable/iterators/video.py,sha256=8xjoelWoSsP0YDr9YGdugseXviGmqoytkgz4ESXC3iw,16105
140
+ pixeltable/iterators/video.py,sha256=L241Oz8OOM07t2SdWYPCRIE-0ntsrEtHZx5CHD_Pv7I,21626
141
141
  pixeltable/metadata/__init__.py,sha256=8ytwPwl2GkaS8JaBLneqT8jxxRDbsKaO52bRip8SpcI,3289
142
142
  pixeltable/metadata/notes.py,sha256=heoQFFkn_vo-vPO6K2_6gcE2LpL8Ca_2wjsUNcN7_0E,1598
143
143
  pixeltable/metadata/schema.py,sha256=CL877NmO5ZOusqhURKkMjCoh00alW199p4onXab3iVg,13824
@@ -176,11 +176,11 @@ pixeltable/metadata/converters/util.py,sha256=QUBOj2F_6rCAdIo0lgD1IVgAM15Vmq7ikQ
176
176
  pixeltable/mypy/__init__.py,sha256=cD_oHXClR_bDM8qVNIfaOAgRhQjPfcWvLcinz79ua6o,54
177
177
  pixeltable/mypy/mypy_plugin.py,sha256=KCjzKOeKW5CBqJOq9Ch7ZJ25ICPc4nlTB49DxtC6oDM,5460
178
178
  pixeltable/share/__init__.py,sha256=PTX1mw61Ss4acEOI-sUlu0HaoVsosLqwDfh0ldn8Hkg,84
179
- pixeltable/share/packager.py,sha256=UjpEv7wU_R4BKstMYw7PPULrSa4szN9KP8wwM4NU1-g,31563
179
+ pixeltable/share/packager.py,sha256=aPyFj2lB8876CpEPpRgSWazPiwDEe_p-5FuUqluo9DY,38537
180
180
  pixeltable/share/publish.py,sha256=Cpbn10duCXoe5k0RaB2WpJjbeMhXd5DXEV7OLQpmtJA,10899
181
181
  pixeltable/utils/__init__.py,sha256=45qEM20L2VuIe-Cc3BTKWFqQb-S7A8qDtmmgl77zYK0,1728
182
- pixeltable/utils/arrow.py,sha256=U7vb_ffPCR7zv-phyBMPMDosPdKN6LK4IVMpfm2mRy8,10424
183
- pixeltable/utils/av.py,sha256=omJufz62dzaTTwlR7quKfcT7apf8KkBLJ9cQ9240dt0,4016
182
+ pixeltable/utils/arrow.py,sha256=jVW5I8AEqyR7uVcjHkM8QA14LO3qIuj09Fl1coif1nI,10335
183
+ pixeltable/utils/av.py,sha256=IhfwYWV5UYLIU_fDdFPukpGE1lxiykswI6thqKVUC14,6586
184
184
  pixeltable/utils/coco.py,sha256=Y1DWVYguZD4VhKyf7JruYfHWvhkJLq39fzbiSm5cdyY,7304
185
185
  pixeltable/utils/code.py,sha256=3CZMVJm69JIG5sxmd56mjB4Fo4L-s0_Y8YvQeJIj0F0,1280
186
186
  pixeltable/utils/console_output.py,sha256=Xodh5K3bI_2WsL6ySTVHXM7S3FZKi7RLwIqFIxip-mg,1232
@@ -198,14 +198,14 @@ pixeltable/utils/image.py,sha256=3KwtA106LT0pxtPV8EiCvpkfeNBVpjfvzkoC5PBOD74,262
198
198
  pixeltable/utils/lancedb.py,sha256=Otr-t47YACRo0Cq9-FyelcUuan1Kgs4gxCOpLOckj3s,2988
199
199
  pixeltable/utils/local_store.py,sha256=HwxgkjW0r4Uc50XqLjMFpLecWnFeUIU0GPcIp_V5cig,13529
200
200
  pixeltable/utils/misc.py,sha256=HxTAxPVrZGtPPDGefXzzprYlT8TGiZa4mZkfHNsfdWs,137
201
- pixeltable/utils/object_stores.py,sha256=KUWYYm8g5HIPnwL4h1VgGQnGcDESX9ZQ65PaCxmfum4,21407
201
+ pixeltable/utils/object_stores.py,sha256=JvDfUfShAP-qmlEH9ml-qvWVx9fuZXpYdLx0-YdQzWw,21983
202
202
  pixeltable/utils/pydantic.py,sha256=-ztUsuRXA7B6bywb5Yy1h5pNQ2DnsT1d0oHMxqtK3WY,2011
203
203
  pixeltable/utils/pytorch.py,sha256=77x2g4N6dkfYvqbxjYi_rBRiNnMMZAb2cNtBw0hOCHg,3582
204
- pixeltable/utils/s3_store.py,sha256=l6X6vakjxtryUBJMsFYk7PUJLsMdmrVcUkF7LwZXdk0,14714
204
+ pixeltable/utils/s3_store.py,sha256=ZLKyChX3SPOJSWVULwS7b8E2nBQiKOamEGGbdrkrGdo,16454
205
205
  pixeltable/utils/sql.py,sha256=Sa4Lh-VGe8GToU5W7DRiWf2lMl9B6saPqemiT0ZdHEc,806
206
206
  pixeltable/utils/transactional_directory.py,sha256=OFKmu90oP7KwBAljwjnzP_w8euGdAXob3y4Nx9SCNHA,1357
207
- pixeltable-0.4.16.dist-info/METADATA,sha256=AnEEb0cErbH6MWtihutW63f3Cg9GUJiDiv1XjMXGysM,25659
208
- pixeltable-0.4.16.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
209
- pixeltable-0.4.16.dist-info/entry_points.txt,sha256=rrKugZmxDtGnXCnEQ5UJMaaSYY7-g1cLjUZ4W1moIhM,98
210
- pixeltable-0.4.16.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
211
- pixeltable-0.4.16.dist-info/RECORD,,
207
+ pixeltable-0.4.18.dist-info/METADATA,sha256=27tYtJQXfoEhLJS6aS3QoBGJdca0FwF75FqddXjJLHk,25521
208
+ pixeltable-0.4.18.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
209
+ pixeltable-0.4.18.dist-info/entry_points.txt,sha256=rrKugZmxDtGnXCnEQ5UJMaaSYY7-g1cLjUZ4W1moIhM,98
210
+ pixeltable-0.4.18.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
211
+ pixeltable-0.4.18.dist-info/RECORD,,