datachain 0.18.8__py3-none-any.whl → 0.18.10__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.

datachain/cache.py CHANGED
@@ -76,9 +76,9 @@ class Cache:
76
76
  async def download(
77
77
  self, file: "File", client: "Client", callback: Optional[Callback] = None
78
78
  ) -> None:
79
+ from_path = f"{file.source}/{file.path}"
79
80
  from dvc_objects.fs.utils import tmp_fname
80
81
 
81
- from_path = file.get_uri()
82
82
  odb_fs = self.odb.fs
83
83
  tmp_info = odb_fs.join(self.odb.tmp_dir, tmp_fname()) # type: ignore[arg-type]
84
84
  size = file.size
@@ -207,14 +207,13 @@ class Client(ABC):
207
207
  )
208
208
 
209
209
  async def get_current_etag(self, file: "File") -> str:
210
- file_path = file.get_path_normalized()
211
210
  kwargs = {}
212
211
  if self._is_version_aware():
213
212
  kwargs["version_id"] = file.version
214
213
  info = await self.fs._info(
215
- self.get_full_path(file_path, file.version), **kwargs
214
+ self.get_full_path(file.path, file.version), **kwargs
216
215
  )
217
- return self.info_to_file(info, file_path).etag
216
+ return self.info_to_file(info, file.path).etag
218
217
 
219
218
  def get_file_info(self, path: str, version_id: Optional[str] = None) -> "File":
220
219
  info = self.fs.info(self.get_full_path(path, version_id), version_id=version_id)
@@ -386,8 +385,7 @@ class Client(ABC):
386
385
  return open(cache_path, mode="rb")
387
386
  assert not file.location
388
387
  return FileWrapper(
389
- self.fs.open(self.get_full_path(file.get_path_normalized(), file.version)),
390
- cb,
388
+ self.fs.open(self.get_full_path(file.path, file.version)), cb
391
389
  ) # type: ignore[return-value]
392
390
 
393
391
  def upload(self, data: bytes, path: str) -> "File":
datachain/client/local.py CHANGED
@@ -99,7 +99,7 @@ class FileClient(Client):
99
99
  )
100
100
 
101
101
  async def get_current_etag(self, file: "File") -> str:
102
- info = self.fs.info(self.get_full_path(file.get_path_normalized()))
102
+ info = self.fs.info(self.get_full_path(file.path))
103
103
  return self.info_to_file(info, "").etag
104
104
 
105
105
  async def get_size(self, path: str, version_id: Optional[str] = None) -> int:
@@ -138,8 +138,8 @@ class FileClient(Client):
138
138
  if not self.use_symlinks:
139
139
  super().fetch_nodes(nodes, shared_progress_bar)
140
140
 
141
- def do_instantiate_object(self, file: File, dst: str) -> None:
141
+ def do_instantiate_object(self, uid, dst):
142
142
  if self.use_symlinks:
143
- os.symlink(Path(self.name, file.path), dst)
143
+ os.symlink(Path(self.name, uid.path), dst)
144
144
  else:
145
- super().do_instantiate_object(file, dst)
145
+ super().do_instantiate_object(uid, dst)
@@ -17,6 +17,8 @@ from datachain.client import Client
17
17
  from datachain.data_storage.schema import convert_rows_custom_column_types
18
18
  from datachain.data_storage.serializer import Serializable
19
19
  from datachain.dataset import DatasetRecord, StorageURI
20
+ from datachain.lib.file import File
21
+ from datachain.lib.signal_schema import SignalSchema
20
22
  from datachain.node import DirType, DirTypeGroup, Node, NodeWithPath, get_path
21
23
  from datachain.query.batch import RowsOutput
22
24
  from datachain.query.utils import get_query_id_column
@@ -35,7 +37,6 @@ if TYPE_CHECKING:
35
37
  from datachain.data_storage import schema
36
38
  from datachain.data_storage.db_engine import DatabaseEngine
37
39
  from datachain.data_storage.schema import DataTable
38
- from datachain.lib.file import File
39
40
 
40
41
 
41
42
  logger = logging.getLogger("datachain")
@@ -370,14 +371,18 @@ class AbstractWarehouse(ABC, Serializable):
370
371
  if not (self.db.has_table(self.dataset_table_name(dataset.name, version))):
371
372
  return None, None
372
373
 
374
+ file_signals = list(
375
+ SignalSchema.deserialize(dataset.feature_schema).get_signals(File)
376
+ )
377
+
373
378
  dr = self.dataset_rows(dataset, version)
374
379
  table = dr.get_table()
375
380
  expressions: tuple[_ColumnsClauseArgument[Any], ...] = (
376
381
  sa.func.count(table.c.sys__id),
377
382
  )
378
- size_columns = [
379
- c for c in table.columns if c.name == "size" or c.name.endswith("__size")
380
- ]
383
+ size_column_names = [s.replace(".", "__") + "__size" for s in file_signals]
384
+ size_columns = [c for c in table.columns if c.name in size_column_names]
385
+
381
386
  if size_columns:
382
387
  expressions = (*expressions, sa.func.sum(sum(size_columns)))
383
388
  query = sa.select(*expressions)
datachain/lib/arrow.py CHANGED
@@ -76,7 +76,7 @@ class ArrowGenerator(Generator):
76
76
  fs_path = file.path
77
77
  fs = ReferenceFileSystem({fs_path: [cache_path]})
78
78
  else:
79
- fs, fs_path = file.get_fs(), file.get_fs_path()
79
+ fs, fs_path = file.get_fs(), file.get_path()
80
80
 
81
81
  kwargs = self.kwargs
82
82
  if format := kwargs.get("format"):
@@ -161,7 +161,7 @@ def infer_schema(chain: "DataChain", **kwargs) -> pa.Schema:
161
161
 
162
162
  schemas = []
163
163
  for file in chain.collect("file"):
164
- ds = dataset(file.get_fs_path(), filesystem=file.get_fs(), **kwargs) # type: ignore[union-attr]
164
+ ds = dataset(file.get_path(), filesystem=file.get_fs(), **kwargs) # type: ignore[union-attr]
165
165
  schemas.append(ds.schema)
166
166
  if not schemas:
167
167
  raise ValueError(
datachain/lib/dc/json.py CHANGED
@@ -1,18 +1,13 @@
1
1
  import os
2
2
  import os.path
3
3
  import re
4
- from typing import (
5
- TYPE_CHECKING,
6
- Optional,
7
- Union,
8
- )
4
+ from typing import TYPE_CHECKING, Optional, Union
9
5
 
6
+ import cloudpickle
7
+
8
+ from datachain.lib import meta_formats
10
9
  from datachain.lib.data_model import DataType
11
- from datachain.lib.file import (
12
- File,
13
- FileType,
14
- )
15
- from datachain.lib.meta_formats import read_meta
10
+ from datachain.lib.file import File, FileType
16
11
 
17
12
  if TYPE_CHECKING:
18
13
  from typing_extensions import ParamSpec
@@ -76,7 +71,7 @@ def read_json(
76
71
  column = format
77
72
  chain = read_storage(uri=path, type=type, **kwargs)
78
73
  signal_dict = {
79
- column: read_meta(
74
+ column: meta_formats.read_meta(
80
75
  schema_from=schema_from,
81
76
  format=format,
82
77
  spec=spec,
@@ -88,4 +83,7 @@ def read_json(
88
83
  }
89
84
  # disable prefetch if nrows is set
90
85
  settings = {"prefetch": 0} if nrows else {}
86
+
87
+ cloudpickle.register_pickle_by_value(meta_formats)
88
+
91
89
  return chain.settings(**settings).gen(**signal_dict) # type: ignore[misc, arg-type]
datachain/lib/file.py CHANGED
@@ -5,14 +5,13 @@ import json
5
5
  import logging
6
6
  import os
7
7
  import posixpath
8
- import warnings
9
8
  from abc import ABC, abstractmethod
10
9
  from collections.abc import Iterator
11
10
  from contextlib import contextmanager
12
11
  from datetime import datetime
13
12
  from functools import partial
14
13
  from io import BytesIO
15
- from pathlib import Path, PurePath, PurePosixPath
14
+ from pathlib import Path, PurePosixPath
16
15
  from typing import TYPE_CHECKING, Any, ClassVar, Literal, Optional, Union
17
16
  from urllib.parse import unquote, urlparse
18
17
  from urllib.request import url2pathname
@@ -70,7 +69,7 @@ class FileExporter(NodesThreadPool):
70
69
  for task in done:
71
70
  task.result()
72
71
 
73
- def do_task(self, file: "File"):
72
+ def do_task(self, file):
74
73
  file.export(
75
74
  self.output,
76
75
  self.placement,
@@ -257,8 +256,8 @@ class File(DataModel):
257
256
 
258
257
  @field_validator("path", mode="before")
259
258
  @classmethod
260
- def validate_path(cls, path: str) -> str:
261
- return PurePath(path).as_posix() if path else ""
259
+ def validate_path(cls, path):
260
+ return Path(path).as_posix() if path else ""
262
261
 
263
262
  def model_dump_custom(self):
264
263
  res = self.model_dump()
@@ -320,11 +319,11 @@ class File(DataModel):
320
319
  return cls(**{key: row[key] for key in cls._datachain_column_types})
321
320
 
322
321
  @property
323
- def name(self) -> str:
322
+ def name(self):
324
323
  return PurePosixPath(self.path).name
325
324
 
326
325
  @property
327
- def parent(self) -> str:
326
+ def parent(self):
328
327
  return str(PurePosixPath(self.path).parent)
329
328
 
330
329
  @contextmanager
@@ -367,7 +366,7 @@ class File(DataModel):
367
366
 
368
367
  client.upload(self.read(), destination)
369
368
 
370
- def _symlink_to(self, destination: str) -> None:
369
+ def _symlink_to(self, destination: str):
371
370
  if self.location:
372
371
  raise OSError(errno.ENOTSUP, "Symlinking virtual file is not supported")
373
372
 
@@ -376,7 +375,7 @@ class File(DataModel):
376
375
  source = self.get_local_path()
377
376
  assert source, "File was not cached"
378
377
  elif self.source.startswith("file://"):
379
- source = self.get_fs_path()
378
+ source = self.get_path()
380
379
  else:
381
380
  raise OSError(errno.EXDEV, "can't link across filesystems")
382
381
 
@@ -453,62 +452,27 @@ class File(DataModel):
453
452
 
454
453
  def get_file_ext(self):
455
454
  """Returns last part of file name without `.`."""
456
- return PurePosixPath(self.path).suffix.lstrip(".")
455
+ return PurePosixPath(self.path).suffix.strip(".")
457
456
 
458
457
  def get_file_stem(self):
459
458
  """Returns file name without extension."""
460
459
  return PurePosixPath(self.path).stem
461
460
 
462
461
  def get_full_name(self):
463
- """
464
- [DEPRECATED] Use `file.path` directly instead.
465
-
466
- Returns name with parent directories.
467
- """
468
- warnings.warn(
469
- "file.get_full_name() is deprecated and will be removed "
470
- "in a future version. Use `file.path` directly.",
471
- DeprecationWarning,
472
- stacklevel=2,
473
- )
462
+ """Returns name with parent directories."""
474
463
  return self.path
475
464
 
476
- def get_path_normalized(self) -> str:
477
- if not self.path:
478
- raise FileError("path must not be empty", self.source, self.path)
479
-
480
- if self.path.endswith("/"):
481
- raise FileError("path must not be a directory", self.source, self.path)
482
-
483
- normpath = os.path.normpath(self.path)
484
- normpath = PurePath(normpath).as_posix()
485
-
486
- if normpath == ".":
487
- raise FileError("path must not be a directory", self.source, self.path)
488
-
489
- if any(part == ".." for part in PurePath(normpath).parts):
490
- raise FileError("path must not contain '..'", self.source, self.path)
491
-
492
- return normpath
493
-
494
- def get_uri(self) -> str:
465
+ def get_uri(self):
495
466
  """Returns file URI."""
496
- return f"{self.source}/{self.get_path_normalized()}"
497
-
498
- def get_fs_path(self) -> str:
499
- """
500
- Returns file path with respect to the filescheme.
501
-
502
- If `normalize` is True, the path is normalized to remove any redundant
503
- separators and up-level references.
467
+ return f"{self.source}/{self.get_full_name()}"
504
468
 
505
- If the file scheme is "file", the path is converted to a local file path
506
- using `url2pathname`. Otherwise, the original path with scheme is returned.
507
- """
469
+ def get_path(self) -> str:
470
+ """Returns file path."""
508
471
  path = unquote(self.get_uri())
509
- path_parsed = urlparse(path)
510
- if path_parsed.scheme == "file":
511
- path = url2pathname(path_parsed.path)
472
+ source = urlparse(self.source)
473
+ if source.scheme == "file":
474
+ path = urlparse(path).path
475
+ path = url2pathname(path)
512
476
  return path
513
477
 
514
478
  def get_destination_path(
@@ -523,7 +487,7 @@ class File(DataModel):
523
487
  elif placement == "etag":
524
488
  path = f"{self.etag}{self.get_file_suffix()}"
525
489
  elif placement == "fullpath":
526
- path = unquote(self.get_path_normalized())
490
+ path = unquote(self.get_full_name())
527
491
  source = urlparse(self.source)
528
492
  if source.scheme and source.scheme != "file":
529
493
  path = posixpath.join(source.netloc, path)
@@ -561,9 +525,8 @@ class File(DataModel):
561
525
  ) from e
562
526
 
563
527
  try:
564
- normalized_path = self.get_path_normalized()
565
- info = client.fs.info(client.get_full_path(normalized_path))
566
- converted_info = client.info_to_file(info, normalized_path)
528
+ info = client.fs.info(client.get_full_path(self.path))
529
+ converted_info = client.info_to_file(info, self.path)
567
530
  return type(self)(
568
531
  path=self.path,
569
532
  source=self.source,
@@ -574,17 +537,8 @@ class File(DataModel):
574
537
  last_modified=converted_info.last_modified,
575
538
  location=self.location,
576
539
  )
577
- except FileError as e:
578
- logger.warning(
579
- "File error when resolving %s/%s: %s", self.source, self.path, str(e)
580
- )
581
540
  except (FileNotFoundError, PermissionError, OSError) as e:
582
- logger.warning(
583
- "File system error when resolving %s/%s: %s",
584
- self.source,
585
- self.path,
586
- str(e),
587
- )
541
+ logger.warning("File system error when resolving %s: %s", self.path, str(e))
588
542
 
589
543
  return type(self)(
590
544
  path=self.path,
@@ -600,8 +554,6 @@ class File(DataModel):
600
554
 
601
555
  def resolve(file: File) -> File:
602
556
  """
603
- [DEPRECATED] Use `file.resolve()` directly instead.
604
-
605
557
  Resolve a File object by checking its existence and updating its metadata.
606
558
 
607
559
  This function is a wrapper around the File.resolve() method, designed to be
@@ -617,12 +569,6 @@ def resolve(file: File) -> File:
617
569
  RuntimeError: If the file's catalog is not set or if
618
570
  the file source protocol is unsupported.
619
571
  """
620
- warnings.warn(
621
- "resolve() is deprecated and will be removed "
622
- "in a future version. Use file.resolve() directly.",
623
- DeprecationWarning,
624
- stacklevel=2,
625
- )
626
572
  return file.resolve()
627
573
 
628
574
 
@@ -970,7 +916,7 @@ class ArrowRow(DataModel):
970
916
  ds = dataset(path, **self.kwargs)
971
917
 
972
918
  else:
973
- path = self.file.get_fs_path()
919
+ path = self.file.get_path()
974
920
  ds = dataset(path, filesystem=self.file.get_fs(), **self.kwargs)
975
921
 
976
922
  return ds.take([self.index]).to_reader()
datachain/lib/tar.py CHANGED
@@ -6,11 +6,12 @@ from datachain.lib.file import File, TarVFile
6
6
 
7
7
 
8
8
  def build_tar_member(parent: File, info: tarfile.TarInfo) -> File:
9
+ new_parent = parent.get_full_name()
9
10
  etag_string = "-".join([parent.etag, info.name, str(info.mtime)])
10
11
  etag = hashlib.md5(etag_string.encode(), usedforsecurity=False).hexdigest()
11
12
  return File(
12
13
  source=parent.source,
13
- path=f"{parent.name}/{info.name}",
14
+ path=f"{new_parent}/{info.name}",
14
15
  version=parent.version,
15
16
  size=info.size,
16
17
  etag=etag,
@@ -35,7 +35,7 @@ warnings.filterwarnings(
35
35
 
36
36
  class WDSError(DataChainError):
37
37
  def __init__(self, tar_stream, message: str):
38
- super().__init__(f"WebDataset error '{tar_stream.name}': {message}")
38
+ super().__init__(f"WebDataset error '{tar_stream.get_full_name()}': {message}")
39
39
 
40
40
 
41
41
  class CoreFileDuplicationError(WDSError):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datachain
3
- Version: 0.18.8
3
+ Version: 0.18.10
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
@@ -1,7 +1,7 @@
1
1
  datachain/__init__.py,sha256=Dx_Dw6AuvC_CZtXxfRv0Z-ND6ieC4Cz-tZkMW-Rvmz4,1496
2
2
  datachain/__main__.py,sha256=hG3Y4ARGEqe1AWwNMd259rBlqtphx1Wk39YbueQ0yV8,91
3
3
  datachain/asyn.py,sha256=RH_jFwJcTXxhEFomaI9yL6S3Onau6NZ6FSKfKFGtrJE,9689
4
- datachain/cache.py,sha256=3GWMvF2LMpz2l5lWbtbpmzSB-92eGCCtujeWlFa3r14,3609
4
+ datachain/cache.py,sha256=yQblPhOh_Mq74Ma7xT1CL1idLJ0HgrQxpGVYvRy_9Eg,3623
5
5
  datachain/config.py,sha256=g8qbNV0vW2VEKpX-dGZ9pAn0DAz6G2ZFcr7SAV3PoSM,4272
6
6
  datachain/dataset.py,sha256=XUZ-kSBL1y6juFqlSWXXbattGS1E53lXpyhc0Ip1_AA,20527
7
7
  datachain/delta.py,sha256=q-ritPMxgsTh53qJYd2N1TqZ3Inxc7GJ9JED9rE-Z1M,3994
@@ -39,10 +39,10 @@ datachain/cli/parser/utils.py,sha256=rETdD-9Hq9A4OolgfT7jQw4aoawtbfmkdtH6E7nkhpI
39
39
  datachain/client/__init__.py,sha256=1kDpCPoibMXi1gExR4lTLc5pi-k6M5TANiwtXkPoLhU,49
40
40
  datachain/client/azure.py,sha256=7yyAgANHfu9Kfh187MKNTT1guvu9Q-WYsi4vYoY3aew,3270
41
41
  datachain/client/fileslice.py,sha256=bT7TYco1Qe3bqoc8aUkUZcPdPofJDHlryL5BsTn9xsY,3021
42
- datachain/client/fsspec.py,sha256=SSKhvl7x2IzECYUsJ_4hYxvy46AiU0wpsfPduE9alFI,13995
42
+ datachain/client/fsspec.py,sha256=c8oRBUMo31k8bMB_mIA60PDfna4nYTdslzHqmqL2Uvg,13918
43
43
  datachain/client/gcs.py,sha256=8hcFhEHp8qGRsJoyfCoawfuwb1Et-MSkyQoM9AnNuXI,5204
44
44
  datachain/client/hf.py,sha256=posnI5WOKOMG1yY_ZiV9Orcd24QsUPKZlOXgJVLxxrM,1558
45
- datachain/client/local.py,sha256=0J52Wzvw25hSucVlzBvLuMRAZwrAHZAYDvD1mNBqf4c,4607
45
+ datachain/client/local.py,sha256=cGoCYflribzexiOe-Y1qbaE2fJRh-_EgQrfCSa0yK_E,4568
46
46
  datachain/client/s3.py,sha256=6DNVGLg-woPS1DVlYVX2rIlunNblsuxyOnI1rSzhW3k,7515
47
47
  datachain/data_storage/__init__.py,sha256=9Wit-oe5P46V7CJQTD0BJ5MhOa2Y9h3ddJ4VWTe-Lec,273
48
48
  datachain/data_storage/db_engine.py,sha256=n8ojCbvVMPY2e3SG8fUaaD0b9GkVfpl_Naa_6EiHfWg,3788
@@ -51,7 +51,7 @@ datachain/data_storage/metastore.py,sha256=1PaRTQbL7kjcU1BVjiLjXJLrrLzQtUvpqLmm0
51
51
  datachain/data_storage/schema.py,sha256=asZYz1cg_WKfe2Q-k5W51E2z2CzHU5B4QEDZDMFr8yo,9346
52
52
  datachain/data_storage/serializer.py,sha256=6G2YtOFqqDzJf1KbvZraKGXl2XHZyVml2krunWUum5o,927
53
53
  datachain/data_storage/sqlite.py,sha256=bwZAB_NUMT2WMv5tPQnnLFA0P-PiQtxzSaQ1q6xDxOU,24590
54
- datachain/data_storage/warehouse.py,sha256=RkdX1cunfmpDkRYRdOGNy0kLw7RekIokVl3Dd0i-hrA,31534
54
+ datachain/data_storage/warehouse.py,sha256=imPm4R2V7TkqgGNSO2FGnKu03axU9UVLMfdUPfpwgHE,31747
55
55
  datachain/diff/__init__.py,sha256=-OFZzgOplqO84iWgGY7kfe60NXaWR9JRIh9T-uJboAM,9668
56
56
  datachain/fs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
57
  datachain/fs/reference.py,sha256=A8McpXF0CqbXPqanXuvpKu50YLB3a2ZXA3YAPxtBXSM,914
@@ -68,11 +68,11 @@ datachain/func/random.py,sha256=t7jwXsI8-hy0qAdvjAntgzy-AHtTAfozlZ1CpKR-QZE,458
68
68
  datachain/func/string.py,sha256=X9u4ip97U63RCaKRhMddoze7HgPiY3LbPRn9G06UWWo,7311
69
69
  datachain/func/window.py,sha256=ImyRpc1QI8QUSPO7KdD60e_DPVo7Ja0G5kcm6BlyMcw,1584
70
70
  datachain/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
- datachain/lib/arrow.py,sha256=K8djofgt4HEgxnkwqZZChccAqeIQ_1D2urGyqti-1-4,10259
71
+ datachain/lib/arrow.py,sha256=mFO_6wRqzpEzBhXf7Xn1aeLUvaiHcC6XQ-8as9sbcgY,10253
72
72
  datachain/lib/clip.py,sha256=lm5CzVi4Cj1jVLEKvERKArb-egb9j1Ls-fwTItT6vlI,6150
73
73
  datachain/lib/data_model.py,sha256=ZwBXELtqROEdLL4DmxTipnwUZmhQvMz_UVDzyf7nQ9Y,2899
74
74
  datachain/lib/dataset_info.py,sha256=d-jz6zeDU5DEgYtyeSF5nK0MU-40FV5km_iOCh4pXzo,3179
75
- datachain/lib/file.py,sha256=-Y0ccgfQt-2jOnNhOH5j5fTQpCsS9z2ja97umDUHbmA,33054
75
+ datachain/lib/file.py,sha256=mzc7_fpHAkVhs4z3jBUhFQzPEbODdXJpzjVfby2IkC4,31117
76
76
  datachain/lib/hf.py,sha256=gjxuStZBlKtNk3-4yYSlWZDv9zBGblOdvEy_Lwap5hA,5882
77
77
  datachain/lib/image.py,sha256=erWvZW5M3emnbl6_fGAOPyKm-1EKbt3vOdWPfe3Oo7U,3265
78
78
  datachain/lib/listing.py,sha256=5_GoATtIwCtd1JMqlorPB_vQDxndOQZpiWjNOG3NMw4,7007
@@ -82,13 +82,13 @@ datachain/lib/model_store.py,sha256=DNIv8Y6Jtk1_idNLzIpsThOsdW2BMAudyUCbPUcgcxk,
82
82
  datachain/lib/pytorch.py,sha256=elrmJ4YUDC2LZ9yXM1KwImVBOYIBJf6k0ZR7eSe6Aao,7712
83
83
  datachain/lib/settings.py,sha256=ZELRCTLbi5vzRPiDX6cQ9LLg9TefJ_A05gIGni0lll8,2535
84
84
  datachain/lib/signal_schema.py,sha256=Zhg8qThFDf9eoNWFH6KGeYB-sIGys7A_ybq2CUBG7Dg,36127
85
- datachain/lib/tar.py,sha256=k8RFnF72H1jxbMghQQbmoGL-UsA1im8gRLXBM1GJAYI,999
85
+ datachain/lib/tar.py,sha256=3WIzao6yD5fbLqXLTt9GhPGNonbFIs_fDRu-9vgLgsA,1038
86
86
  datachain/lib/text.py,sha256=UNHm8fhidk7wdrWqacEWaA6I9ykfYqarQ2URby7jc7M,1261
87
87
  datachain/lib/udf.py,sha256=FWqA476ygdk4MU-0qehYKxvnt8Tekh21Cyf3RgddD1k,16674
88
88
  datachain/lib/udf_signature.py,sha256=2EtsOPDNSPqcOlYwqbCdy6RF5MldI-7smii8aLy8p7Y,7543
89
89
  datachain/lib/utils.py,sha256=rG2y7NwTqZOuomZZRmrA-Q-ANM_j1cToQYqDJoOeGyU,1480
90
90
  datachain/lib/video.py,sha256=u6fLJWj5G6QqsVkpfHnKGklBNpG3BRRg6v3izngnNcU,6767
91
- datachain/lib/webdataset.py,sha256=hZWar13LoZ1TAidFW_sl9rUO-KtMJQY3OFmbnPkJw_A,6913
91
+ datachain/lib/webdataset.py,sha256=o7SHk5HOUWsZ5Ln04xOM04eQqiBHiJNO7xLgyVBrwo8,6924
92
92
  datachain/lib/webdataset_laion.py,sha256=xvT6m_r5y0KbOx14BUe7UC5mOgrktJq53Mh-H0EVlUE,2525
93
93
  datachain/lib/convert/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
94
  datachain/lib/convert/flatten.py,sha256=IZFiUYbgXSxXhPSG5Cqf5IjnJ4ZDZKXMr4o_yCR1NY4,1505
@@ -102,7 +102,7 @@ datachain/lib/dc/database.py,sha256=g5M6NjYR1T0vKte-abV-3Ejnm-HqxTIMir5cRi_SziE,
102
102
  datachain/lib/dc/datachain.py,sha256=5rR_QqG4vesq-x545ZTSFJDSb6Oc5CW4-ziQYD6DpW4,80993
103
103
  datachain/lib/dc/datasets.py,sha256=G65leCuo_3bItmvjoV1wK0pzj7a2IQqe3xRsflpF3xM,10794
104
104
  datachain/lib/dc/hf.py,sha256=PJl2wiLjdRsMz0SYbLT-6H8b-D5i2WjeH7li8HHOk_0,2145
105
- datachain/lib/dc/json.py,sha256=ZUThPDAaP2gBFIL5vsQTwKBcuN_dhvC_O44wdDv0jEc,2683
105
+ datachain/lib/dc/json.py,sha256=dNijfJ-H92vU3soyR7X1IiDrWhm6yZIGG3bSnZkPdAE,2733
106
106
  datachain/lib/dc/listings.py,sha256=2na9v63xO1vPUNaoBSzA-TSN49V7zQAb-4iS1wOPLFE,1029
107
107
  datachain/lib/dc/pandas.py,sha256=ObueUXDUFKJGu380GmazdG02ARpKAHPhSaymfmOH13E,1489
108
108
  datachain/lib/dc/parquet.py,sha256=zYcSgrWwyEDW9UxGUSVdIVsCu15IGEf0xL8KfWQqK94,1782
@@ -153,9 +153,9 @@ datachain/sql/sqlite/vector.py,sha256=ncW4eu2FlJhrP_CIpsvtkUabZlQdl2D5Lgwy_cbfqR
153
153
  datachain/toolkit/__init__.py,sha256=eQ58Q5Yf_Fgv1ZG0IO5dpB4jmP90rk8YxUWmPc1M2Bo,68
154
154
  datachain/toolkit/split.py,sha256=ktGWzY4kyzjWyR86dhvzw-Zhl0lVk_LOX3NciTac6qo,2914
155
155
  datachain/torch/__init__.py,sha256=gIS74PoEPy4TB3X6vx9nLO0Y3sLJzsA8ckn8pRWihJM,579
156
- datachain-0.18.8.dist-info/licenses/LICENSE,sha256=8DnqK5yoPI_E50bEg_zsHKZHY2HqPy4rYN338BHQaRA,11344
157
- datachain-0.18.8.dist-info/METADATA,sha256=7_EQNrTrI5u-hjaGNfJOamf3LW-qljTmCuELCFkA2yE,11319
158
- datachain-0.18.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
159
- datachain-0.18.8.dist-info/entry_points.txt,sha256=0GMJS6B_KWq0m3VT98vQI2YZodAMkn4uReZ_okga9R4,49
160
- datachain-0.18.8.dist-info/top_level.txt,sha256=lZPpdU_2jJABLNIg2kvEOBi8PtsYikbN1OdMLHk8bTg,10
161
- datachain-0.18.8.dist-info/RECORD,,
156
+ datachain-0.18.10.dist-info/licenses/LICENSE,sha256=8DnqK5yoPI_E50bEg_zsHKZHY2HqPy4rYN338BHQaRA,11344
157
+ datachain-0.18.10.dist-info/METADATA,sha256=Vjkb16V4J8lNJphVuqD2DZ_V_7BLIf8YPRlvJNtsLaM,11320
158
+ datachain-0.18.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
159
+ datachain-0.18.10.dist-info/entry_points.txt,sha256=0GMJS6B_KWq0m3VT98vQI2YZodAMkn4uReZ_okga9R4,49
160
+ datachain-0.18.10.dist-info/top_level.txt,sha256=lZPpdU_2jJABLNIg2kvEOBi8PtsYikbN1OdMLHk8bTg,10
161
+ datachain-0.18.10.dist-info/RECORD,,