pixeltable 0.2.4__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 (56) hide show
  1. pixeltable/catalog/column.py +25 -48
  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 +0 -4
  7. pixeltable/dataframe.py +65 -21
  8. pixeltable/env.py +16 -1
  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 +8 -8
  23. pixeltable/functions/eval.py +7 -8
  24. pixeltable/functions/huggingface.py +47 -19
  25. pixeltable/functions/openai.py +2 -2
  26. pixeltable/functions/util.py +11 -0
  27. pixeltable/index/__init__.py +2 -0
  28. pixeltable/index/base.py +49 -0
  29. pixeltable/index/embedding_index.py +95 -0
  30. pixeltable/metadata/schema.py +45 -22
  31. pixeltable/plan.py +15 -34
  32. pixeltable/store.py +38 -41
  33. pixeltable/tests/conftest.py +5 -11
  34. pixeltable/tests/ext/test_yolox.py +21 -0
  35. pixeltable/tests/functions/test_fireworks.py +1 -0
  36. pixeltable/tests/functions/test_huggingface.py +2 -2
  37. pixeltable/tests/functions/test_openai.py +15 -5
  38. pixeltable/tests/functions/test_together.py +1 -0
  39. pixeltable/tests/test_component_view.py +14 -5
  40. pixeltable/tests/test_dataframe.py +19 -18
  41. pixeltable/tests/test_exprs.py +99 -102
  42. pixeltable/tests/test_function.py +51 -43
  43. pixeltable/tests/test_index.py +138 -0
  44. pixeltable/tests/test_migration.py +2 -1
  45. pixeltable/tests/test_snapshot.py +24 -1
  46. pixeltable/tests/test_table.py +101 -25
  47. pixeltable/tests/test_types.py +30 -0
  48. pixeltable/tests/test_video.py +16 -16
  49. pixeltable/tests/test_view.py +5 -0
  50. pixeltable/tests/utils.py +43 -9
  51. pixeltable/tool/create_test_db_dump.py +16 -0
  52. pixeltable/type_system.py +37 -45
  53. {pixeltable-0.2.4.dist-info → pixeltable-0.2.5.dist-info}/METADATA +5 -4
  54. {pixeltable-0.2.4.dist-info → pixeltable-0.2.5.dist-info}/RECORD +56 -49
  55. {pixeltable-0.2.4.dist-info → pixeltable-0.2.5.dist-info}/LICENSE +0 -0
  56. {pixeltable-0.2.4.dist-info → pixeltable-0.2.5.dist-info}/WHEEL +0 -0
pixeltable/type_system.py CHANGED
@@ -6,6 +6,8 @@ import enum
6
6
  import json
7
7
  import typing
8
8
  import urllib.parse
9
+ import urllib.request
10
+ from copy import copy
9
11
  from pathlib import Path
10
12
  from typing import Any, Optional, Tuple, Dict, Callable, List, Union, Sequence, Mapping
11
13
 
@@ -293,7 +295,7 @@ class ColumnType:
293
295
  parsed = urllib.parse.urlparse(val)
294
296
  if parsed.scheme != '' and parsed.scheme != 'file':
295
297
  return
296
- path = Path(urllib.parse.unquote(parsed.path))
298
+ path = Path(urllib.parse.unquote(urllib.request.url2pathname(parsed.path)))
297
299
  if not path.is_file():
298
300
  raise TypeError(f'File not found: {str(path)}')
299
301
  else:
@@ -376,30 +378,11 @@ class ColumnType:
376
378
  pass
377
379
 
378
380
  @abc.abstractmethod
379
- def to_sa_type(self) -> Any:
381
+ def to_sa_type(self) -> sql.types.TypeEngine:
380
382
  """
381
383
  Return corresponding SQLAlchemy type.
382
- return type Any: there doesn't appear to be a superclass for the sqlalchemy types
383
384
  """
384
- assert self._type != self.Type.INVALID
385
- if self._type == self.Type.STRING:
386
- return sql.String
387
- if self._type == self.Type.INT:
388
- return sql.Integer
389
- if self._type == self.Type.FLOAT:
390
- return sql.Float
391
- if self._type == self.Type.BOOL:
392
- return sql.Boolean
393
- if self._type == self.Type.TIMESTAMP:
394
- return sql.TIMESTAMP
395
- if self._type == self.Type.IMAGE:
396
- # the URL
397
- return sql.String
398
- if self._type == self.Type.JSON:
399
- return sql.dialects.postgresql.JSONB
400
- if self._type == self.Type.ARRAY:
401
- return sql.VARBINARY
402
- assert False
385
+ pass
403
386
 
404
387
  @staticmethod
405
388
  def no_conversion(v: Any) -> Any:
@@ -424,7 +407,7 @@ class InvalidType(ColumnType):
424
407
  def to_sql(self) -> str:
425
408
  assert False
426
409
 
427
- def to_sa_type(self) -> Any:
410
+ def to_sa_type(self) -> sql.types.TypeEngine:
428
411
  assert False
429
412
 
430
413
  def print_value(self, val: Any) -> str:
@@ -433,6 +416,7 @@ class InvalidType(ColumnType):
433
416
  def _validate_literal(self, val: Any) -> None:
434
417
  assert False
435
418
 
419
+
436
420
  class StringType(ColumnType):
437
421
  def __init__(self, nullable: bool = False):
438
422
  super().__init__(self.Type.STRING, nullable=nullable)
@@ -451,8 +435,8 @@ class StringType(ColumnType):
451
435
  def to_sql(self) -> str:
452
436
  return 'VARCHAR'
453
437
 
454
- def to_sa_type(self) -> str:
455
- return sql.String
438
+ def to_sa_type(self) -> sql.types.TypeEngine:
439
+ return sql.String()
456
440
 
457
441
  def print_value(self, val: Any) -> str:
458
442
  return f"'{val}'"
@@ -469,6 +453,7 @@ class StringType(ColumnType):
469
453
  return val.replace('\x00', ' ')
470
454
  return val
471
455
 
456
+
472
457
  class IntType(ColumnType):
473
458
  def __init__(self, nullable: bool = False):
474
459
  super().__init__(self.Type.INT, nullable=nullable)
@@ -476,8 +461,8 @@ class IntType(ColumnType):
476
461
  def to_sql(self) -> str:
477
462
  return 'BIGINT'
478
463
 
479
- def to_sa_type(self) -> str:
480
- return sql.BigInteger
464
+ def to_sa_type(self) -> sql.types.TypeEngine:
465
+ return sql.BigInteger()
481
466
 
482
467
  def _validate_literal(self, val: Any) -> None:
483
468
  if not isinstance(val, int):
@@ -491,8 +476,8 @@ class FloatType(ColumnType):
491
476
  def to_sql(self) -> str:
492
477
  return 'FLOAT'
493
478
 
494
- def to_sa_type(self) -> str:
495
- return sql.Float
479
+ def to_sa_type(self) -> sql.types.TypeEngine:
480
+ return sql.Float()
496
481
 
497
482
  def _validate_literal(self, val: Any) -> None:
498
483
  if not isinstance(val, float):
@@ -503,6 +488,7 @@ class FloatType(ColumnType):
503
488
  return float(val)
504
489
  return val
505
490
 
491
+
506
492
  class BoolType(ColumnType):
507
493
  def __init__(self, nullable: bool = False):
508
494
  super().__init__(self.Type.BOOL, nullable=nullable)
@@ -510,8 +496,8 @@ class BoolType(ColumnType):
510
496
  def to_sql(self) -> str:
511
497
  return 'BOOLEAN'
512
498
 
513
- def to_sa_type(self) -> str:
514
- return sql.Boolean
499
+ def to_sa_type(self) -> sql.types.TypeEngine:
500
+ return sql.Boolean()
515
501
 
516
502
  def _validate_literal(self, val: Any) -> None:
517
503
  if not isinstance(val, bool):
@@ -522,6 +508,7 @@ class BoolType(ColumnType):
522
508
  return bool(val)
523
509
  return val
524
510
 
511
+
525
512
  class TimestampType(ColumnType):
526
513
  def __init__(self, nullable: bool = False):
527
514
  super().__init__(self.Type.TIMESTAMP, nullable=nullable)
@@ -529,8 +516,8 @@ class TimestampType(ColumnType):
529
516
  def to_sql(self) -> str:
530
517
  return 'INTEGER'
531
518
 
532
- def to_sa_type(self) -> str:
533
- return sql.TIMESTAMP
519
+ def to_sa_type(self) -> sql.types.TypeEngine:
520
+ return sql.TIMESTAMP()
534
521
 
535
522
  def _validate_literal(self, val: Any) -> None:
536
523
  if not isinstance(val, datetime.datetime) and not isinstance(val, datetime.date):
@@ -541,6 +528,7 @@ class TimestampType(ColumnType):
541
528
  return datetime.datetime.fromisoformat(val)
542
529
  return val
543
530
 
531
+
544
532
  class JsonType(ColumnType):
545
533
  # TODO: type_spec also needs to be able to express lists
546
534
  def __init__(self, type_spec: Optional[Dict[str, ColumnType]] = None, nullable: bool = False):
@@ -566,8 +554,8 @@ class JsonType(ColumnType):
566
554
  def to_sql(self) -> str:
567
555
  return 'JSONB'
568
556
 
569
- def to_sa_type(self) -> str:
570
- return sql.dialects.postgresql.JSONB
557
+ def to_sa_type(self) -> sql.types.TypeEngine:
558
+ return sql.dialects.postgresql.JSONB()
571
559
 
572
560
  def print_value(self, val: Any) -> str:
573
561
  val_type = self.infer_literal_type(val)
@@ -588,6 +576,7 @@ class JsonType(ColumnType):
588
576
  val = list(val)
589
577
  return val
590
578
 
579
+
591
580
  class ArrayType(ColumnType):
592
581
  def __init__(
593
582
  self, shape: Tuple[Union[int, None], ...], dtype: ColumnType, nullable: bool = False):
@@ -671,8 +660,8 @@ class ArrayType(ColumnType):
671
660
  def to_sql(self) -> str:
672
661
  return 'BYTEA'
673
662
 
674
- def to_sa_type(self) -> str:
675
- return sql.LargeBinary
663
+ def to_sa_type(self) -> sql.types.TypeEngine:
664
+ return sql.LargeBinary()
676
665
 
677
666
  def numpy_dtype(self) -> np.dtype:
678
667
  if self.dtype == self.Type.INT:
@@ -776,8 +765,8 @@ class ImageType(ColumnType):
776
765
  def to_sql(self) -> str:
777
766
  return 'VARCHAR'
778
767
 
779
- def to_sa_type(self) -> str:
780
- return sql.String
768
+ def to_sa_type(self) -> sql.types.TypeEngine:
769
+ return sql.String()
781
770
 
782
771
  def _validate_literal(self, val: Any) -> None:
783
772
  if isinstance(val, PIL.Image.Image):
@@ -791,6 +780,7 @@ class ImageType(ColumnType):
791
780
  except PIL.UnidentifiedImageError:
792
781
  raise excs.Error(f'Not a valid image: {val}') from None
793
782
 
783
+
794
784
  class VideoType(ColumnType):
795
785
  def __init__(self, nullable: bool = False):
796
786
  super().__init__(self.Type.VIDEO, nullable=nullable)
@@ -799,8 +789,8 @@ class VideoType(ColumnType):
799
789
  # stored as a file path
800
790
  return 'VARCHAR'
801
791
 
802
- def to_sa_type(self) -> str:
803
- return sql.String
792
+ def to_sa_type(self) -> sql.types.TypeEngine:
793
+ return sql.String()
804
794
 
805
795
  def _validate_literal(self, val: Any) -> None:
806
796
  self._validate_file_path(val)
@@ -825,6 +815,7 @@ class VideoType(ColumnType):
825
815
  except av.AVError:
826
816
  raise excs.Error(f'Not a valid video: {val}') from None
827
817
 
818
+
828
819
  class AudioType(ColumnType):
829
820
  def __init__(self, nullable: bool = False):
830
821
  super().__init__(self.Type.AUDIO, nullable=nullable)
@@ -833,8 +824,8 @@ class AudioType(ColumnType):
833
824
  # stored as a file path
834
825
  return 'VARCHAR'
835
826
 
836
- def to_sa_type(self) -> str:
837
- return sql.String
827
+ def to_sa_type(self) -> sql.types.TypeEngine:
828
+ return sql.String()
838
829
 
839
830
  def _validate_literal(self, val: Any) -> None:
840
831
  self._validate_file_path(val)
@@ -854,6 +845,7 @@ class AudioType(ColumnType):
854
845
  except av.AVError as e:
855
846
  raise excs.Error(f'Not a valid audio file: {val}\n{e}') from None
856
847
 
848
+
857
849
  class DocumentType(ColumnType):
858
850
  @enum.unique
859
851
  class DocumentFormat(enum.Enum):
@@ -876,8 +868,8 @@ class DocumentType(ColumnType):
876
868
  # stored as a file path
877
869
  return 'VARCHAR'
878
870
 
879
- def to_sa_type(self) -> str:
880
- return sql.String
871
+ def to_sa_type(self) -> sql.types.TypeEngine:
872
+ return sql.String()
881
873
 
882
874
  def _validate_literal(self, val: Any) -> None:
883
875
  self._validate_file_path(val)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pixeltable
3
- Version: 0.2.4
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
@@ -18,7 +18,7 @@ Requires-Dist: jmespath (>=1.0.1,<2.0.0)
18
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.1.0)
21
+ Requires-Dist: pgserver (==0.1.2)
22
22
  Requires-Dist: pgvector (>=0.2.1,<0.3.0)
23
23
  Requires-Dist: pillow (>=10.0)
24
24
  Requires-Dist: psutil (>=5.9.5,<6.0.0)
@@ -60,11 +60,12 @@ Learn the basics of Pixeltable through interactive examples. View the notebooks
60
60
  ### Pixeltable Basics
61
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.
62
62
 
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>
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>
64
65
 
65
66
 
66
67
  ## 💾 Installation
67
- Pixeltable works with Python 3.9, 3.10, or 3.11 running on Linux or MacOS.
68
+ Pixeltable works with Python 3.9, 3.10, 3.11, or 3.12 running on Linux, MacOS, or Windows.
68
69
 
69
70
  ```
70
71
  pip install pixeltable
@@ -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=rlWhKh_k9zLXus0Slcrxzsl6tJpyOxylu2qfUk0waVI,8663
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=RweoJoUGap_uzAcrhSwU6yOH7j_fsSM-VgyKSCYGvv8,23616
17
- pixeltable/dataframe.py,sha256=vBc4T-QU-lTTtnljqDbBFTHwm2CecLHIjJumEv8lQ0s,28339
18
- pixeltable/env.py,sha256=A38md5r-hE6i-6Og1Nptlzo0ci3Oyn62ogPs6hlNLZE,15744
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,71 +47,78 @@ 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=T8FZuE9YSh4KeRg7tBgOEdg8LLyvn89xWLIRylpiP-I,3390
69
- pixeltable/functions/eval.py,sha256=qLc_55VTwi_IDnAJFq79Hy7FLi7Gb26DxdykYiBTMrM,8453
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
70
72
  pixeltable/functions/fireworks.py,sha256=e_rCITg18yNndNI8TJPXRSN6DR0hYWT-_dUavoPuyfc,908
71
- pixeltable/functions/huggingface.py,sha256=Wg8AgCsoGFx8AX3AThko66L7uSg9cUEjL8_QxKoA4dg,4804
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=xh40TvNanhXPXWGte_ZKxuyD6TYWzmC_1G3qRNDkNv8,6861
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
78
  pixeltable/functions/together.py,sha256=sG23nLMScmp4wRA4K1EIJDY9peqE1IPgxlK3fhNrbgw,3423
77
- pixeltable/functions/util.py,sha256=v094FgixHchzKMj4YvfHExDRGIVhCL2D-NL3pl-92oo,1596
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=qTfWzGHH35gSkHPOaCAzdDtWWJDEktNIPprLh1wjHwU,6684
89
- pixeltable/tests/functions/test_fireworks.py,sha256=G-54dABoRbmXApyjWZKKrKKooIp7sWcpAT6rJWVESWk,1666
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
90
96
  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
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
94
100
  pixeltable/tests/test_audio.py,sha256=92PMPrMtYzLoaLiW92MupEfWPEcfoLlYlZKlxmWQXdI,3186
95
101
  pixeltable/tests/test_catalog.py,sha256=Npxt72g5aZkfg1fqE-19L8rGilzicAiTC0ithIy3woI,1189
96
102
  pixeltable/tests/test_client.py,sha256=9acrjElh1YVX8WXWO04VQ-S6mNx9ZtqAHoh4uBc81y4,531
97
- pixeltable/tests/test_component_view.py,sha256=VfcBgdG1QKeo0AOnHmO21J3qdm_8-06RljB7kkTeTok,17732
98
- pixeltable/tests/test_dataframe.py,sha256=KytKHjsyHluB9DmxmI0g3YPC7UTvbnv5YhysaUMfVzA,17975
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
99
105
  pixeltable/tests/test_dirs.py,sha256=WuWGOcpUFPCl1PGZgOMcU5bpzv1ClUqZ5AxavrDeCic,3611
100
106
  pixeltable/tests/test_document.py,sha256=5G52cMbkkX2lk5SwyYQ1KYjQjgUfVhjcsjPtL9xjGXU,5810
101
- pixeltable/tests/test_exprs.py,sha256=ZwImlJpTu9YQ2AnAplurjxDmabYqG7rB7aU6TxQAJdI,32743
102
- pixeltable/tests/test_function.py,sha256=6sA_3Oe1p4sUhL5L5hYyW-mG1TPGfFDmW1BPVPnGXek,12817
103
- 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
104
111
  pixeltable/tests/test_nos.py,sha256=ITE7FNEaNreJ_XTz4wYLWuidFSUQMFp3ShuHTz05OrE,2649
105
- pixeltable/tests/test_snapshot.py,sha256=J8wepLOaOrJkqDWq1dkou8MIR5Hf1DEseAqlUrb7BFg,9297
106
- pixeltable/tests/test_table.py,sha256=zthAzzO9DGmOSsnFD2Xuy40t4-_1ZzchAMKg9JXs1kY,53303
112
+ pixeltable/tests/test_snapshot.py,sha256=uTTxnBNZODhhbH2pAxtzKdGrNmbiozKmya-LvK8OQ6g,10331
113
+ pixeltable/tests/test_table.py,sha256=a7BCBsSzlLmIEXtmrLiIFP6B4KoG4B9MuHm_JIwFEic,56557
107
114
  pixeltable/tests/test_transactional_directory.py,sha256=Jx55PZgrkHTI0Eli09puwMckvwfCM9arPTQUT9g6Tbg,1308
108
- pixeltable/tests/test_types.py,sha256=4_LR5Poc8Fa5fOpRBaAc_qAN21SsVxFP54Npq_6n9G8,970
109
- pixeltable/tests/test_video.py,sha256=j9vgxp9f2WdH0rCoMXqhgTW3XG-czTBU4rrnuR95y8E,7782
110
- pixeltable/tests/test_view.py,sha256=vbKEk9kWF5U6B78uNLSQsGw46s2oOOhHnJy8p9NmNTo,21859
111
- pixeltable/tests/utils.py,sha256=OY8r6SM9MAEiXehqBymF8BkHYmlAd7-D09nfzTZMCsA,14359
112
- 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
113
120
  pixeltable/tool/create_test_video.py,sha256=OLfccymYReIpzE8osZn4rQvLXxxiPC_l0vc06U74hVM,2899
114
- pixeltable/type_system.py,sha256=oUrqqux-YJrzNpPFp_3WkSdI3lHm7AcZByTCnWa97VQ,30374
121
+ pixeltable/type_system.py,sha256=VXVxgclkW3_wX818qZ6NnST29M8R4fgQ9_LiEfVOo8k,29929
115
122
  pixeltable/utils/__init__.py,sha256=UYlrf6TIWJT0g-Hac0b34-dEk478B5Qx8dGco34YlIk,439
116
123
  pixeltable/utils/arrow.py,sha256=83_7aG5UR2qtTktw_otLkQs-RQbLk0VVM0JLJkbweNU,3692
117
124
  pixeltable/utils/clip.py,sha256=HXXWFBJXW9XysdMk9_3hP1V1S-3B8Hwd5rNMbJFjjnI,720
@@ -126,7 +133,7 @@ pixeltable/utils/pytorch.py,sha256=BR4tgfUWw-2rwWTOgzXj5qdMBpe1Arpp5SK4ax6jjpk,3
126
133
  pixeltable/utils/s3.py,sha256=rkanuhk9DWvSfmbOLQW1j1Iov4sl2KhxGGKN-AJ8LSE,432
127
134
  pixeltable/utils/sql.py,sha256=5n5_OmXAGtqFdL6z5XvgnU-vlx6Ba6f1WJrO1ZwUle8,765
128
135
  pixeltable/utils/transactional_directory.py,sha256=UGzCrGtLR3hEEf8sYGuWBzLVFAEQml3vdIavigWeTBM,1349
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,,
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,,