datachain 0.26.0__py3-none-any.whl → 0.26.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of datachain might be problematic. Click here for more details.

@@ -18,6 +18,7 @@ WAREHOUSE_IMPORT_PATH = "DATACHAIN_WAREHOUSE"
18
18
  WAREHOUSE_ARG_PREFIX = "DATACHAIN_WAREHOUSE_ARG_"
19
19
  DISTRIBUTED_IMPORT_PYTHONPATH = "DATACHAIN_DISTRIBUTED_PYTHONPATH"
20
20
  DISTRIBUTED_IMPORT_PATH = "DATACHAIN_DISTRIBUTED"
21
+ DISTRIBUTED_DISABLED = "DATACHAIN_DISTRIBUTED_DISABLED"
21
22
 
22
23
  IN_MEMORY_ERROR_MESSAGE = "In-memory is only supported on SQLite"
23
24
 
@@ -103,6 +104,9 @@ def get_warehouse(in_memory: bool = False) -> "AbstractWarehouse":
103
104
 
104
105
 
105
106
  def get_udf_distributor_class() -> Optional[type["AbstractUDFDistributor"]]:
107
+ if os.environ.get(DISTRIBUTED_DISABLED) == "True":
108
+ return None
109
+
106
110
  if not (distributed_import_path := os.environ.get(DISTRIBUTED_IMPORT_PATH)):
107
111
  return None
108
112
 
@@ -16,7 +16,7 @@ from .aggregate import (
16
16
  sum,
17
17
  )
18
18
  from .array import contains, cosine_distance, euclidean_distance, length, sip_hash_64
19
- from .conditional import and_, case, greatest, ifelse, isnone, least, or_
19
+ from .conditional import and_, case, greatest, ifelse, isnone, least, not_, or_
20
20
  from .numeric import bit_and, bit_hamming_distance, bit_or, bit_xor, int_hash_64
21
21
  from .path import file_ext, file_stem, name, parent
22
22
  from .random import rand
@@ -54,6 +54,7 @@ __all__ = [
54
54
  "max",
55
55
  "min",
56
56
  "name",
57
+ "not_",
57
58
  "or_",
58
59
  "parent",
59
60
  "path",
@@ -3,6 +3,7 @@ from typing import Optional, Union
3
3
  from sqlalchemy import ColumnElement
4
4
  from sqlalchemy import and_ as sql_and
5
5
  from sqlalchemy import case as sql_case
6
+ from sqlalchemy import not_ as sql_not
6
7
  from sqlalchemy import or_ as sql_or
7
8
 
8
9
  from datachain.lib.utils import DataChainParamsError
@@ -288,3 +289,36 @@ def and_(*args: Union[ColumnElement, Func]) -> Func:
288
289
  func_args.append(arg)
289
290
 
290
291
  return Func("and", inner=sql_and, cols=cols, args=func_args, result_type=bool)
292
+
293
+
294
+ def not_(arg: Union[ColumnElement, Func]) -> Func:
295
+ """
296
+ Returns the function that produces NOT of the given expressions.
297
+
298
+ Args:
299
+ arg (ColumnElement | Func): The expression for NOT statement.
300
+ If a string is provided, it is assumed to be the name of the column.
301
+ If a Column is provided, it is assumed to be a column in the dataset.
302
+ If a Func is provided, it is assumed to be a function returning a value.
303
+
304
+ Returns:
305
+ Func: A `Func` object that represents the NOT function.
306
+
307
+ Example:
308
+ ```py
309
+ dc.mutate(
310
+ test=not_(C("value") == 5)
311
+ )
312
+ ```
313
+
314
+ Notes:
315
+ - The result column will always be of type bool.
316
+ """
317
+ cols, func_args = [], []
318
+
319
+ if isinstance(arg, (str, Func)):
320
+ cols.append(arg)
321
+ else:
322
+ func_args.append(arg)
323
+
324
+ return Func("not", inner=sql_not, cols=cols, args=func_args, result_type=bool)
@@ -33,7 +33,13 @@ from datachain.func import literal
33
33
  from datachain.func.base import Function
34
34
  from datachain.func.func import Func
35
35
  from datachain.lib.convert.python_to_sql import python_to_sql
36
- from datachain.lib.data_model import DataModel, DataType, DataValue, dict_to_data_model
36
+ from datachain.lib.data_model import (
37
+ DataModel,
38
+ DataType,
39
+ DataValue,
40
+ StandardType,
41
+ dict_to_data_model,
42
+ )
37
43
  from datachain.lib.file import (
38
44
  EXPORT_FILES_MAX_THREADS,
39
45
  ArrowRow,
@@ -360,14 +366,6 @@ class DataChain:
360
366
  self._settings = settings if settings else Settings()
361
367
  return self
362
368
 
363
- def reset_schema(self, signals_schema: SignalSchema) -> "Self":
364
- self.signals_schema = signals_schema
365
- return self
366
-
367
- def add_schema(self, signals_schema: SignalSchema) -> "Self":
368
- self.signals_schema |= signals_schema
369
- return self
370
-
371
369
  @classmethod
372
370
  def from_storage(
373
371
  cls,
@@ -958,7 +956,7 @@ class DataChain:
958
956
  query_func = getattr(self._query, method_name)
959
957
 
960
958
  new_schema = self.signals_schema.resolve(*args)
961
- columns = [C(col) for col in new_schema.db_signals()]
959
+ columns = new_schema.db_signals(as_columns=True)
962
960
  return query_func(*columns, **kwargs)
963
961
 
964
962
  @resolve_columns
@@ -1445,10 +1443,6 @@ class DataChain:
1445
1443
  remove_prefetched=remove_prefetched,
1446
1444
  )
1447
1445
 
1448
- def remove_file_signals(self) -> "Self":
1449
- schema = self.signals_schema.clone_without_file_signals()
1450
- return self.select(*schema.values.keys())
1451
-
1452
1446
  @delta_disabled
1453
1447
  def merge(
1454
1448
  self,
@@ -1803,12 +1797,19 @@ class DataChain:
1803
1797
  )
1804
1798
  return read_pandas(*args, **kwargs)
1805
1799
 
1806
- def to_pandas(self, flatten=False, include_hidden=True) -> "pd.DataFrame":
1800
+ def to_pandas(
1801
+ self,
1802
+ flatten: bool = False,
1803
+ include_hidden: bool = True,
1804
+ ) -> "pd.DataFrame":
1807
1805
  """Return a pandas DataFrame from the chain.
1808
1806
 
1809
1807
  Parameters:
1810
- flatten : Whether to use a multiindex or flatten column names.
1811
- include_hidden : Whether to include hidden columns.
1808
+ flatten: Whether to use a multiindex or flatten column names.
1809
+ include_hidden: Whether to include hidden columns.
1810
+
1811
+ Returns:
1812
+ pd.DataFrame: A pandas DataFrame representation of the chain.
1812
1813
  """
1813
1814
  import pandas as pd
1814
1815
 
@@ -1826,19 +1827,19 @@ class DataChain:
1826
1827
  def show(
1827
1828
  self,
1828
1829
  limit: int = 20,
1829
- flatten=False,
1830
- transpose=False,
1831
- truncate=True,
1832
- include_hidden=False,
1830
+ flatten: bool = False,
1831
+ transpose: bool = False,
1832
+ truncate: bool = True,
1833
+ include_hidden: bool = False,
1833
1834
  ) -> None:
1834
1835
  """Show a preview of the chain results.
1835
1836
 
1836
1837
  Parameters:
1837
- limit : How many rows to show.
1838
- flatten : Whether to use a multiindex or flatten column names.
1839
- transpose : Whether to transpose rows and columns.
1840
- truncate : Whether or not to truncate the contents of columns.
1841
- include_hidden : Whether to include hidden columns.
1838
+ limit: How many rows to show.
1839
+ flatten: Whether to use a multiindex or flatten column names.
1840
+ transpose: Whether to transpose rows and columns.
1841
+ truncate: Whether or not to truncate the contents of columns.
1842
+ include_hidden: Whether to include hidden columns.
1842
1843
  """
1843
1844
  import pandas as pd
1844
1845
 
@@ -2268,21 +2269,73 @@ class DataChain:
2268
2269
  )
2269
2270
  return read_records(*args, **kwargs)
2270
2271
 
2271
- def sum(self, fr: DataType): # type: ignore[override]
2272
- """Compute the sum of a column."""
2273
- return self._extend_to_data_model("sum", fr)
2272
+ def sum(self, col: str) -> StandardType: # type: ignore[override]
2273
+ """Compute the sum of a column.
2274
+
2275
+ Parameters:
2276
+ col: The column to compute the sum for.
2277
+
2278
+ Returns:
2279
+ The sum of the column values.
2280
+
2281
+ Example:
2282
+ ```py
2283
+ total_size = chain.sum("file.size")
2284
+ print(f"Total size: {total_size}")
2285
+ ```
2286
+ """
2287
+ return self._extend_to_data_model("sum", col)
2288
+
2289
+ def avg(self, col: str) -> StandardType: # type: ignore[override]
2290
+ """Compute the average of a column.
2291
+
2292
+ Parameters:
2293
+ col: The column to compute the average for.
2294
+
2295
+ Returns:
2296
+ The average of the column values.
2297
+
2298
+ Example:
2299
+ ```py
2300
+ average_size = chain.avg("file.size")
2301
+ print(f"Average size: {average_size}")
2302
+ ```
2303
+ """
2304
+ return self._extend_to_data_model("avg", col)
2305
+
2306
+ def min(self, col: str) -> StandardType: # type: ignore[override]
2307
+ """Compute the minimum of a column.
2308
+
2309
+ Parameters:
2310
+ col: The column to compute the minimum for.
2311
+
2312
+ Returns:
2313
+ The minimum value in the column.
2314
+
2315
+ Example:
2316
+ ```py
2317
+ min_size = chain.min("file.size")
2318
+ print(f"Minimum size: {min_size}")
2319
+ ```
2320
+ """
2321
+ return self._extend_to_data_model("min", col)
2322
+
2323
+ def max(self, col: str) -> StandardType: # type: ignore[override]
2324
+ """Compute the maximum of a column.
2274
2325
 
2275
- def avg(self, fr: DataType): # type: ignore[override]
2276
- """Compute the average of a column."""
2277
- return self._extend_to_data_model("avg", fr)
2326
+ Parameters:
2327
+ col: The column to compute the maximum for.
2278
2328
 
2279
- def min(self, fr: DataType): # type: ignore[override]
2280
- """Compute the minimum of a column."""
2281
- return self._extend_to_data_model("min", fr)
2329
+ Returns:
2330
+ The maximum value in the column.
2282
2331
 
2283
- def max(self, fr: DataType): # type: ignore[override]
2284
- """Compute the maximum of a column."""
2285
- return self._extend_to_data_model("max", fr)
2332
+ Example:
2333
+ ```py
2334
+ max_size = chain.max("file.size")
2335
+ print(f"Maximum size: {max_size}")
2336
+ ```
2337
+ """
2338
+ return self._extend_to_data_model("max", col)
2286
2339
 
2287
2340
  def setup(self, **kwargs) -> "Self":
2288
2341
  """Setup variables to pass to UDF functions.
@@ -2393,14 +2446,15 @@ class DataChain:
2393
2446
  """Shuffle the rows of the chain deterministically."""
2394
2447
  return self.order_by("sys.rand")
2395
2448
 
2396
- def sample(self, n) -> "Self":
2449
+ def sample(self, n: int) -> "Self":
2397
2450
  """Return a random sample from the chain.
2398
2451
 
2399
2452
  Parameters:
2400
- n (int): Number of samples to draw.
2453
+ n: Number of samples to draw.
2401
2454
 
2402
- NOTE: Samples are not deterministic, and streamed/paginated queries or
2403
- multiple workers will draw samples with replacement.
2455
+ Note:
2456
+ Samples are not deterministic, and streamed/paginated queries or
2457
+ multiple workers will draw samples with replacement.
2404
2458
  """
2405
2459
  return self._evolve(query=self._query.sample(n))
2406
2460
 
@@ -2507,6 +2561,10 @@ class DataChain:
2507
2561
  def chunk(self, index: int, total: int) -> "Self":
2508
2562
  """Split a chain into smaller chunks for e.g. parallelization.
2509
2563
 
2564
+ Parameters:
2565
+ index: The index of the chunk (0-indexed).
2566
+ total: The total number of chunks.
2567
+
2510
2568
  Example:
2511
2569
  ```py
2512
2570
  import datachain as dc
@@ -2526,7 +2584,7 @@ class DataChain:
2526
2584
  """Returns a list of rows of values, optionally limited to the specified
2527
2585
  columns.
2528
2586
 
2529
- Args:
2587
+ Parameters:
2530
2588
  *cols: Limit to the specified columns. By default, all columns are selected.
2531
2589
 
2532
2590
  Returns:
@@ -2556,7 +2614,7 @@ class DataChain:
2556
2614
  def to_values(self, col: str) -> list[DataValue]:
2557
2615
  """Returns a flat list of values from a single column.
2558
2616
 
2559
- Args:
2617
+ Parameters:
2560
2618
  col: The name of the column to extract values from.
2561
2619
 
2562
2620
  Returns:
datachain/lib/pytorch.py CHANGED
@@ -125,7 +125,10 @@ class PytorchDataset(IterableDataset):
125
125
  ds = read_dataset(
126
126
  name=self.name, version=self.version, session=session
127
127
  ).settings(cache=self.cache, prefetch=self.prefetch)
128
- ds = ds.remove_file_signals()
128
+
129
+ # remove file signals from dataset
130
+ schema = ds.signals_schema.clone_without_file_signals()
131
+ ds = ds.select(*schema.values.keys())
129
132
 
130
133
  if self.num_samples > 0:
131
134
  ds = ds.sample(self.num_samples)
@@ -610,20 +610,25 @@ class SignalSchema:
610
610
  return SignalSchema(schema)
611
611
 
612
612
  def _find_in_tree(self, path: list[str]) -> DataType:
613
+ if val := self.tree.get(".".join(path)):
614
+ # If the path is a single string, we can directly access it
615
+ # without traversing the tree.
616
+ return val[0]
617
+
613
618
  curr_tree = self.tree
614
619
  curr_type = None
615
620
  i = 0
616
621
  while curr_tree is not None and i < len(path):
617
622
  if val := curr_tree.get(path[i]):
618
623
  curr_type, curr_tree = val
619
- elif i == 0 and len(path) > 1 and (val := curr_tree.get(".".join(path))):
620
- curr_type, curr_tree = val
621
- break
622
624
  else:
623
625
  curr_type = None
626
+ break
624
627
  i += 1
625
628
 
626
- if curr_type is None:
629
+ if curr_type is None or i < len(path):
630
+ # If we reached the end of the path and didn't find a type,
631
+ # or if we didn't traverse the entire path, raise an error.
627
632
  raise SignalResolvingError(path, "is not found")
628
633
 
629
634
  return curr_type
@@ -559,7 +559,13 @@ class UDFStep(Step, ABC):
559
559
  """
560
560
  Create temporary table with group by partitions.
561
561
  """
562
+ # Check if partition_by is set, we need it to create partitions.
562
563
  assert self.partition_by is not None
564
+ # Check if sys__id is in the query, we need it to be able to join
565
+ # the partition table with the udf table later.
566
+ assert any(c.name == "sys__id" for c in query.selected_columns), (
567
+ "Query must have sys__id column to use partitioning."
568
+ )
563
569
 
564
570
  if isinstance(self.partition_by, (list, tuple, GeneratorType)):
565
571
  list_partition_by = list(self.partition_by)
@@ -606,6 +612,22 @@ class UDFStep(Step, ABC):
606
612
 
607
613
  # Apply partitioning if needed.
608
614
  if self.partition_by is not None:
615
+ if not any(c.name == "sys__id" for c in query.selected_columns):
616
+ # If sys__id is not in the query, we need to create a temp table
617
+ # to hold the query results, so we can join it with the
618
+ # partition table later.
619
+ columns = [
620
+ c if isinstance(c, Column) else Column(c.name, c.type)
621
+ for c in query.subquery().columns
622
+ ]
623
+ temp_table = self.catalog.warehouse.create_dataset_rows_table(
624
+ self.catalog.warehouse.temp_table_name(),
625
+ columns=columns,
626
+ )
627
+ temp_tables.append(temp_table.name)
628
+ self.catalog.warehouse.copy_table(temp_table, query)
629
+ _query = query = temp_table.select()
630
+
609
631
  partition_tbl = self.create_partitions_table(query)
610
632
  temp_tables.append(partition_tbl.name)
611
633
  query = query.outerjoin(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datachain
3
- Version: 0.26.0
3
+ Version: 0.26.1
4
4
  Summary: Wrangle unstructured AI data at scale
5
5
  Author-email: Dmitry Petrov <support@dvc.org>
6
6
  License-Expression: Apache-2.0
@@ -23,7 +23,7 @@ datachain/utils.py,sha256=DNqOi-Ydb7InyWvD9m7_yailxz6-YGpZzh00biQaHNo,15305
23
23
  datachain/catalog/__init__.py,sha256=cMZzSz3VoUi-6qXSVaHYN-agxQuAcz2XSqnEPZ55crE,353
24
24
  datachain/catalog/catalog.py,sha256=QTWCXy75iWo-0MCXyfV_WbsKeZ1fpLpvL8d60rxn1ws,65528
25
25
  datachain/catalog/datasource.py,sha256=IkGMh0Ttg6Q-9DWfU_H05WUnZepbGa28HYleECi6K7I,1353
26
- datachain/catalog/loader.py,sha256=UXjYD6BNRoupPvkiz3-b04jepXhtLHCA4gzKFnXxOtQ,5987
26
+ datachain/catalog/loader.py,sha256=B2cps5coFE4MBttM-j8cs7JgNVPjnHKF4Gx1s2fJrxw,6119
27
27
  datachain/cli/__init__.py,sha256=WvBqnwjG8Wp9xGCn-4eqfoZ3n7Sj1HJemCi4MayJh_c,8221
28
28
  datachain/cli/utils.py,sha256=wrLnAh7Wx8O_ojZE8AE4Lxn5WoxHbOj7as8NWlLAA74,3036
29
29
  datachain/cli/commands/__init__.py,sha256=zp3bYIioO60x_X04A4-IpZqSYVnpwOa1AdERQaRlIhI,493
@@ -58,11 +58,11 @@ datachain/diff/__init__.py,sha256=-OFZzgOplqO84iWgGY7kfe60NXaWR9JRIh9T-uJboAM,96
58
58
  datachain/fs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
59
  datachain/fs/reference.py,sha256=A8McpXF0CqbXPqanXuvpKu50YLB3a2ZXA3YAPxtBXSM,914
60
60
  datachain/fs/utils.py,sha256=s-FkTOCGBk-b6TT3toQH51s9608pofoFjUSTc1yy7oE,825
61
- datachain/func/__init__.py,sha256=CjNLHfJkepdXdRZ6HjJBjNSIjOeFMuMkwPDaPUrM75g,1270
61
+ datachain/func/__init__.py,sha256=9K2MEC1NclY_zWuqevfEUOcrSE26cXDVnGqhNTj4lF8,1288
62
62
  datachain/func/aggregate.py,sha256=fmVEKf3MUR29dEgllGdtl6nG7Lwz-SiyA5X1EyRRNUk,12456
63
63
  datachain/func/array.py,sha256=fz5NUIPkp_KZ7tadCqJQSSJwWMYXEfYn60QkG2epC3k,13627
64
64
  datachain/func/base.py,sha256=wA0sBQAVyN9LPxoo7Ox83peS0zUVnyuKxukwAcjGLfY,534
65
- datachain/func/conditional.py,sha256=bzIZRSpVpe-lrHoWPTCA7bzZ-AHtR44BVM82hqD1pY0,9188
65
+ datachain/func/conditional.py,sha256=9YYurD_PBMyf5rR9dj2gLv-Lo7UhYfHW6EtrUErVpz8,10165
66
66
  datachain/func/func.py,sha256=fpslnn4edr0dH3mD8BSTndRFJiiVZvbJoBJV6HkHMqw,17400
67
67
  datachain/func/numeric.py,sha256=J6FgzuIAcS6B02Cm1qPnJdB6ut21jyBDVXSBrkZNZaQ,6978
68
68
  datachain/func/path.py,sha256=9Jas35QhEtRai4l54hMqVvuJsqxHvOx88oo4vym1H_I,4077
@@ -84,9 +84,9 @@ datachain/lib/meta_formats.py,sha256=zdyg6XLk3QIsSk3I7s0Ez5kaCJSlE3uq7JiGxf7UwtU
84
84
  datachain/lib/model_store.py,sha256=dkL2rcT5ag-kbgkhQPL_byEs-TCYr29qvdltroL5NxM,2734
85
85
  datachain/lib/namespaces.py,sha256=it52UbbwB8dzhesO2pMs_nThXiPQ1Ph9sD9I3GQkg5s,2099
86
86
  datachain/lib/projects.py,sha256=8lN0qV8czX1LGtWURCUvRlSJk-RpO9w9Rra_pOZus6g,2595
87
- datachain/lib/pytorch.py,sha256=oBBd6cxYrcwaFz7IQajKqhGqDdNnwUZWs0wJPRizrjk,7712
87
+ datachain/lib/pytorch.py,sha256=S-st2SAczYut13KMf6eSqP_OQ8otWI5TRmzhK5fN3k0,7828
88
88
  datachain/lib/settings.py,sha256=9wi0FoHxRxNiyn99pR28IYsMkoo47jQxeXuObQr2Ar0,2929
89
- datachain/lib/signal_schema.py,sha256=UGbjG6yJKIU2i4B6z9AK1rqaPWtxRjsPnCV6GYbNqGg,38329
89
+ datachain/lib/signal_schema.py,sha256=tOWcWEG0ZwiU0qxywEYs3qkTexQQHmzg28wZ1CJGyEI,38552
90
90
  datachain/lib/tar.py,sha256=MLcVjzIgBqRuJacCNpZ6kwSZNq1i2tLyROc8PVprHsA,999
91
91
  datachain/lib/text.py,sha256=UNHm8fhidk7wdrWqacEWaA6I9ykfYqarQ2URby7jc7M,1261
92
92
  datachain/lib/udf.py,sha256=nkcB3HNtSteUspwsGmOKyy3mH2F-Sfo6iW64-Ep47-I,17299
@@ -104,7 +104,7 @@ datachain/lib/convert/values_to_tuples.py,sha256=j5yZMrVUH6W7b-7yUvdCTGI7JCUAYUO
104
104
  datachain/lib/dc/__init__.py,sha256=TFci5HTvYGjBesNUxDAnXaX36PnzPEUSn5a6JxB9o0U,872
105
105
  datachain/lib/dc/csv.py,sha256=q6a9BpapGwP6nwy6c5cklxQumep2fUp9l2LAjtTJr6s,4411
106
106
  datachain/lib/dc/database.py,sha256=g5M6NjYR1T0vKte-abV-3Ejnm-HqxTIMir5cRi_SziE,6051
107
- datachain/lib/dc/datachain.py,sha256=YJYHp94yTWjd_ZmBXEUOHVeEvOb5jOhjIxgtqu1dnW4,91746
107
+ datachain/lib/dc/datachain.py,sha256=ap54lcuj71tvp0zX1jiFFiEWvA5UPeyYJRJkd2APmlI,92897
108
108
  datachain/lib/dc/datasets.py,sha256=P6CIJizD2IYFwOQG5D3VbQRjDmUiRH0ysdtb551Xdm8,15098
109
109
  datachain/lib/dc/hf.py,sha256=PJl2wiLjdRsMz0SYbLT-6H8b-D5i2WjeH7li8HHOk_0,2145
110
110
  datachain/lib/dc/json.py,sha256=dNijfJ-H92vU3soyR7X1IiDrWhm6yZIGG3bSnZkPdAE,2733
@@ -126,7 +126,7 @@ datachain/model/ultralytics/pose.py,sha256=pBlmt63Qe68FKmexHimUGlNbNOoOlMHXG4fzX
126
126
  datachain/model/ultralytics/segment.py,sha256=63bDCj43E6iZ0hFI5J6uQfksdCmjEp6sEm1XzVaE8pw,2986
127
127
  datachain/query/__init__.py,sha256=7DhEIjAA8uZJfejruAVMZVcGFmvUpffuZJwgRqNwe-c,263
128
128
  datachain/query/batch.py,sha256=-goxLpE0EUvaDHu66rstj53UnfHpYfBUGux8GSpJ93k,4306
129
- datachain/query/dataset.py,sha256=bhJpm53tNLQzGECuR1nC1tg2Vd6foq6AKST5h1rb41U,61606
129
+ datachain/query/dataset.py,sha256=cYNrg1QyrZpO-oup3mqmSYHUvgEYBKe8RgkVbyQa6p0,62777
130
130
  datachain/query/dispatch.py,sha256=A0nPxn6mEN5d9dDo6S8m16Ji_9IvJLXrgF2kqXdi4fs,15546
131
131
  datachain/query/metrics.py,sha256=DOK5HdNVaRugYPjl8qnBONvTkwjMloLqAr7Mi3TjCO0,858
132
132
  datachain/query/params.py,sha256=O_j89mjYRLOwWNhYZl-z7mi-rkdP7WyFmaDufsdTryE,863
@@ -158,9 +158,9 @@ datachain/sql/sqlite/vector.py,sha256=ncW4eu2FlJhrP_CIpsvtkUabZlQdl2D5Lgwy_cbfqR
158
158
  datachain/toolkit/__init__.py,sha256=eQ58Q5Yf_Fgv1ZG0IO5dpB4jmP90rk8YxUWmPc1M2Bo,68
159
159
  datachain/toolkit/split.py,sha256=ktGWzY4kyzjWyR86dhvzw-Zhl0lVk_LOX3NciTac6qo,2914
160
160
  datachain/torch/__init__.py,sha256=gIS74PoEPy4TB3X6vx9nLO0Y3sLJzsA8ckn8pRWihJM,579
161
- datachain-0.26.0.dist-info/licenses/LICENSE,sha256=8DnqK5yoPI_E50bEg_zsHKZHY2HqPy4rYN338BHQaRA,11344
162
- datachain-0.26.0.dist-info/METADATA,sha256=4-DhUSU6ciIc8iUiB4UAh1ZKyFczvN5rHZnvd1x2Y9U,13543
163
- datachain-0.26.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
164
- datachain-0.26.0.dist-info/entry_points.txt,sha256=0GMJS6B_KWq0m3VT98vQI2YZodAMkn4uReZ_okga9R4,49
165
- datachain-0.26.0.dist-info/top_level.txt,sha256=lZPpdU_2jJABLNIg2kvEOBi8PtsYikbN1OdMLHk8bTg,10
166
- datachain-0.26.0.dist-info/RECORD,,
161
+ datachain-0.26.1.dist-info/licenses/LICENSE,sha256=8DnqK5yoPI_E50bEg_zsHKZHY2HqPy4rYN338BHQaRA,11344
162
+ datachain-0.26.1.dist-info/METADATA,sha256=C0Pb9d9IcJ6oOPXihcyEhTc_Rf7Fe4pP_anKhC3JfeU,13543
163
+ datachain-0.26.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
164
+ datachain-0.26.1.dist-info/entry_points.txt,sha256=0GMJS6B_KWq0m3VT98vQI2YZodAMkn4uReZ_okga9R4,49
165
+ datachain-0.26.1.dist-info/top_level.txt,sha256=lZPpdU_2jJABLNIg2kvEOBi8PtsYikbN1OdMLHk8bTg,10
166
+ datachain-0.26.1.dist-info/RECORD,,