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

@@ -0,0 +1,128 @@
1
+ from collections.abc import Sequence
2
+ from functools import wraps
3
+ from typing import (
4
+ TYPE_CHECKING,
5
+ Callable,
6
+ Optional,
7
+ TypeVar,
8
+ Union,
9
+ )
10
+
11
+ import sqlalchemy
12
+ from sqlalchemy.sql.functions import GenericFunction
13
+
14
+ from datachain.func.base import Function
15
+ from datachain.lib.data_model import DataModel, DataType
16
+ from datachain.lib.utils import DataChainParamsError
17
+ from datachain.query.schema import DEFAULT_DELIMITER
18
+
19
+ if TYPE_CHECKING:
20
+ from typing_extensions import Concatenate, ParamSpec
21
+
22
+ from .datachain import DataChain
23
+
24
+ P = ParamSpec("P")
25
+
26
+ D = TypeVar("D", bound="DataChain")
27
+
28
+
29
+ def resolve_columns(
30
+ method: "Callable[Concatenate[D, P], D]",
31
+ ) -> "Callable[Concatenate[D, P], D]":
32
+ """Decorator that resolvs input column names to their actual DB names. This is
33
+ specially important for nested columns as user works with them by using dot
34
+ notation e.g (file.name) but are actually defined with default delimiter
35
+ in DB, e.g file__name.
36
+ If there are any sql functions in arguments, they will just be transferred as is
37
+ to a method.
38
+ """
39
+
40
+ @wraps(method)
41
+ def _inner(self: D, *args: "P.args", **kwargs: "P.kwargs") -> D:
42
+ resolved_args = self.signals_schema.resolve(
43
+ *[arg for arg in args if not isinstance(arg, GenericFunction)] # type: ignore[arg-type]
44
+ ).db_signals()
45
+
46
+ for idx, arg in enumerate(args):
47
+ if isinstance(arg, GenericFunction):
48
+ resolved_args.insert(idx, arg) # type: ignore[arg-type]
49
+
50
+ return method(self, *resolved_args, **kwargs)
51
+
52
+ return _inner
53
+
54
+
55
+ class DatasetPrepareError(DataChainParamsError):
56
+ def __init__(self, name, msg, output=None):
57
+ name = f" '{name}'" if name else ""
58
+ output = f" output '{output}'" if output else ""
59
+ super().__init__(f"Dataset{name}{output} processing prepare error: {msg}")
60
+
61
+
62
+ class DatasetFromValuesError(DataChainParamsError):
63
+ def __init__(self, name, msg):
64
+ name = f" '{name}'" if name else ""
65
+ super().__init__(f"Dataset{name} from values error: {msg}")
66
+
67
+
68
+ MergeColType = Union[str, Function, sqlalchemy.ColumnElement]
69
+
70
+
71
+ def _validate_merge_on(
72
+ on: Union[MergeColType, Sequence[MergeColType]],
73
+ ds: "DataChain",
74
+ ) -> Sequence[MergeColType]:
75
+ if isinstance(on, (str, sqlalchemy.ColumnElement)):
76
+ return [on]
77
+ if isinstance(on, Function):
78
+ return [on.get_column(table=ds._query.table)]
79
+ if isinstance(on, Sequence):
80
+ return [
81
+ c.get_column(table=ds._query.table) if isinstance(c, Function) else c
82
+ for c in on
83
+ ]
84
+
85
+
86
+ def _get_merge_error_str(col: MergeColType) -> str:
87
+ if isinstance(col, str):
88
+ return col
89
+ if isinstance(col, Function):
90
+ return f"{col.name}()"
91
+ if isinstance(col, sqlalchemy.Column):
92
+ return col.name.replace(DEFAULT_DELIMITER, ".")
93
+ if isinstance(col, sqlalchemy.ColumnElement) and hasattr(col, "name"):
94
+ return f"{col.name} expression"
95
+ return str(col)
96
+
97
+
98
+ class DatasetMergeError(DataChainParamsError):
99
+ def __init__(
100
+ self,
101
+ on: Union[MergeColType, Sequence[MergeColType]],
102
+ right_on: Optional[Union[MergeColType, Sequence[MergeColType]]],
103
+ msg: str,
104
+ ):
105
+ def _get_str(
106
+ on: Union[MergeColType, Sequence[MergeColType]],
107
+ ) -> str:
108
+ if not isinstance(on, Sequence):
109
+ return str(on) # type: ignore[unreachable]
110
+ return ", ".join([_get_merge_error_str(col) for col in on])
111
+
112
+ on_str = _get_str(on)
113
+ right_on_str = (
114
+ ", right_on='" + _get_str(right_on) + "'"
115
+ if right_on and isinstance(right_on, Sequence)
116
+ else ""
117
+ )
118
+ super().__init__(f"Merge error on='{on_str}'{right_on_str}: {msg}")
119
+
120
+
121
+ OutputType = Union[None, DataType, Sequence[str], dict[str, DataType]]
122
+
123
+
124
+ class Sys(DataModel):
125
+ """Model for internal DataChain signals `id` and `rand`."""
126
+
127
+ id: int
128
+ rand: int
@@ -0,0 +1,53 @@
1
+ from collections.abc import Iterator
2
+ from typing import (
3
+ TYPE_CHECKING,
4
+ Optional,
5
+ )
6
+
7
+ from datachain.lib.convert.values_to_tuples import values_to_tuples
8
+ from datachain.lib.data_model import dict_to_data_model
9
+ from datachain.lib.dc.records import from_records
10
+ from datachain.lib.dc.utils import OutputType
11
+ from datachain.query import Session
12
+
13
+ if TYPE_CHECKING:
14
+ from typing_extensions import ParamSpec
15
+
16
+ from .datachain import DataChain
17
+
18
+ P = ParamSpec("P")
19
+
20
+
21
+ def from_values(
22
+ ds_name: str = "",
23
+ session: Optional[Session] = None,
24
+ settings: Optional[dict] = None,
25
+ in_memory: bool = False,
26
+ output: OutputType = None,
27
+ object_name: str = "",
28
+ **fr_map,
29
+ ) -> "DataChain":
30
+ """Generate chain from list of values.
31
+
32
+ Example:
33
+ ```py
34
+ import datachain as dc
35
+ dc.from_values(fib=[1, 2, 3, 5, 8])
36
+ ```
37
+ """
38
+ from .datachain import DataChain
39
+
40
+ tuple_type, output, tuples = values_to_tuples(ds_name, output, **fr_map)
41
+
42
+ def _func_fr() -> Iterator[tuple_type]: # type: ignore[valid-type]
43
+ yield from tuples
44
+
45
+ chain = from_records(
46
+ DataChain.DEFAULT_FILE_RECORD,
47
+ session=session,
48
+ settings=settings,
49
+ in_memory=in_memory,
50
+ )
51
+ if object_name:
52
+ output = {object_name: dict_to_data_model(object_name, output)} # type: ignore[arg-type]
53
+ return chain.gen(_func_fr, output=output)
@@ -103,12 +103,10 @@ def read_meta( # noqa: C901
103
103
  model_name=None,
104
104
  nrows=None,
105
105
  ) -> Callable:
106
- from datachain.lib.dc import DataChain
106
+ from datachain import from_storage
107
107
 
108
108
  if schema_from:
109
- file = next(
110
- DataChain.from_storage(schema_from, type="text").limit(1).collect("file")
111
- )
109
+ file = next(from_storage(schema_from, type="text").limit(1).collect("file"))
112
110
  model_code = gen_datamodel_code(
113
111
  file, format=format, jmespath=jmespath, model_name=model_name
114
112
  )
datachain/lib/pytorch.py CHANGED
@@ -14,7 +14,7 @@ from torchvision.transforms import v2
14
14
  from datachain import Session
15
15
  from datachain.cache import get_temp_cache
16
16
  from datachain.catalog import Catalog, get_catalog
17
- from datachain.lib.dc import DataChain
17
+ from datachain.lib.dc.datasets import from_dataset
18
18
  from datachain.lib.settings import Settings
19
19
  from datachain.lib.text import convert_text
20
20
  from datachain.progress import CombinedDownloadCallback
@@ -122,7 +122,7 @@ class PytorchDataset(IterableDataset):
122
122
  ) -> Generator[tuple[Any, ...], None, None]:
123
123
  catalog = self._get_catalog()
124
124
  session = Session("PyTorch", catalog=catalog)
125
- ds = DataChain.from_dataset(
125
+ ds = from_dataset(
126
126
  name=self.name, version=self.version, session=session
127
127
  ).settings(cache=self.cache, prefetch=self.prefetch)
128
128
  ds = ds.remove_file_signals()
datachain/lib/udf.py CHANGED
@@ -123,10 +123,10 @@ class UDFBase(AbstractUDF):
123
123
 
124
124
  Example:
125
125
  ```py
126
- from datachain import C, DataChain, Mapper
126
+ import datachain as dc
127
127
  import open_clip
128
128
 
129
- class ImageEncoder(Mapper):
129
+ class ImageEncoder(dc.Mapper):
130
130
  def __init__(self, model_name: str, pretrained: str):
131
131
  self.model_name = model_name
132
132
  self.pretrained = pretrained
@@ -145,7 +145,7 @@ class UDFBase(AbstractUDF):
145
145
  return emb[0].tolist()
146
146
 
147
147
  (
148
- DataChain.from_storage(
148
+ dc.from_storage(
149
149
  "gs://datachain-demo/fashion-product-images/images", type="image"
150
150
  )
151
151
  .limit(5)
@@ -37,11 +37,11 @@ def train_test_split(
37
37
  Examples:
38
38
  Train-test split:
39
39
  ```python
40
- from datachain import DataChain
40
+ import datachain as dc
41
41
  from datachain.toolkit import train_test_split
42
42
 
43
43
  # Load a DataChain from a storage source (e.g., S3 bucket)
44
- dc = DataChain.from_storage("s3://bucket/dir/")
44
+ dc = dc.from_storage("s3://bucket/dir/")
45
45
 
46
46
  # Perform a 70/30 train-test split
47
47
  train, test = train_test_split(dc, [0.7, 0.3])
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: datachain
3
- Version: 0.13.0
3
+ Version: 0.14.0
4
4
  Summary: Wrangle unstructured AI data at scale
5
5
  Author-email: Dmitry Petrov <support@dvc.org>
6
6
  License: Apache-2.0
@@ -107,6 +107,7 @@ Requires-Dist: accelerate; extra == "examples"
107
107
  Requires-Dist: huggingface_hub[hf_transfer]; extra == "examples"
108
108
  Requires-Dist: ultralytics; extra == "examples"
109
109
  Requires-Dist: open_clip_torch; extra == "examples"
110
+ Dynamic: license-file
110
111
 
111
112
  ================
112
113
  |logo| DataChain
@@ -168,16 +169,16 @@ high confidence scores.
168
169
 
169
170
  .. code:: py
170
171
 
171
- from datachain import Column, DataChain
172
+ import datachain as dc
172
173
 
173
- meta = DataChain.from_json("gs://datachain-demo/dogs-and-cats/*json", object_name="meta", anon=True)
174
- images = DataChain.from_storage("gs://datachain-demo/dogs-and-cats/*jpg", anon=True)
174
+ meta = dc.from_json("gs://datachain-demo/dogs-and-cats/*json", object_name="meta", anon=True)
175
+ images = dc.from_storage("gs://datachain-demo/dogs-and-cats/*jpg", anon=True)
175
176
 
176
177
  images_id = images.map(id=lambda file: file.path.split('.')[-2])
177
178
  annotated = images_id.merge(meta, on="id", right_on="meta.id")
178
179
 
179
- likely_cats = annotated.filter((Column("meta.inference.confidence") > 0.93) \
180
- & (Column("meta.inference.class_") == "cat"))
180
+ likely_cats = annotated.filter((dc.Column("meta.inference.confidence") > 0.93) \
181
+ & (dc.Column("meta.inference.class_") == "cat"))
181
182
  likely_cats.to_storage("high-confidence-cats/", signal="file")
182
183
 
183
184
 
@@ -198,11 +199,11 @@ Python code:
198
199
 
199
200
  import os
200
201
  from mistralai import Mistral
201
- from datachain import File, DataChain, Column
202
+ import datachain as dc
202
203
 
203
204
  PROMPT = "Was this dialog successful? Answer in a single word: Success or Failure."
204
205
 
205
- def eval_dialogue(file: File) -> bool:
206
+ def eval_dialogue(file: dc.File) -> bool:
206
207
  client = Mistral(api_key = os.environ["MISTRAL_API_KEY"])
207
208
  response = client.chat.complete(
208
209
  model="open-mixtral-8x22b",
@@ -212,13 +213,13 @@ Python code:
212
213
  return result.lower().startswith("success")
213
214
 
214
215
  chain = (
215
- DataChain.from_storage("gs://datachain-demo/chatbot-KiT/", object_name="file", anon=True)
216
+ dc.from_storage("gs://datachain-demo/chatbot-KiT/", object_name="file", anon=True)
216
217
  .settings(parallel=4, cache=True)
217
218
  .map(is_success=eval_dialogue)
218
219
  .save("mistral_files")
219
220
  )
220
221
 
221
- successful_chain = chain.filter(Column("is_success") == True)
222
+ successful_chain = chain.filter(dc.Column("is_success") == True)
222
223
  successful_chain.to_storage("./output_mistral")
223
224
 
224
225
  print(f"{successful_chain.count()} files were exported")
@@ -1,4 +1,4 @@
1
- datachain/__init__.py,sha256=WfGQWOA05pz9haabxOjZYJMZBI1MXOEtIraDkjXaXBw,1019
1
+ datachain/__init__.py,sha256=M_0MfSBJqlWA9hI3z47Yu36fxkxsekbpvNa-LBa1e5Q,1414
2
2
  datachain/__main__.py,sha256=hG3Y4ARGEqe1AWwNMd259rBlqtphx1Wk39YbueQ0yV8,91
3
3
  datachain/asyn.py,sha256=RH_jFwJcTXxhEFomaI9yL6S3Onau6NZ6FSKfKFGtrJE,9689
4
4
  datachain/cache.py,sha256=yQblPhOh_Mq74Ma7xT1CL1idLJ0HgrQxpGVYvRy_9Eg,3623
@@ -17,7 +17,7 @@ datachain/studio.py,sha256=9MEpFPLKI3gG4isKklcfD5BMLeNsSXhtOUboOjW4Fdc,10017
17
17
  datachain/telemetry.py,sha256=0A4IOPPp9VlP5pyW9eBfaTK3YhHGzHl7dQudQjUAx9A,994
18
18
  datachain/utils.py,sha256=CLAYkI7iPbLYw3Pjh5EkWuc2UOs8wEbuXQnqIs4UyV8,14173
19
19
  datachain/catalog/__init__.py,sha256=cMZzSz3VoUi-6qXSVaHYN-agxQuAcz2XSqnEPZ55crE,353
20
- datachain/catalog/catalog.py,sha256=IJSTXHFf2jqkHq2zXLvKzSUwJE9-Tu5YpY_SvcGymgI,60401
20
+ datachain/catalog/catalog.py,sha256=6dDTbSom8JzxLD_cbFboKtsiYtGR5WIOEOQTtCQ5mws,60722
21
21
  datachain/catalog/datasource.py,sha256=IkGMh0Ttg6Q-9DWfU_H05WUnZepbGa28HYleECi6K7I,1353
22
22
  datachain/catalog/loader.py,sha256=AhSQR_-S-9lY3DcXn3PVZv9UtarHOMlDy2x75iDwUjo,6035
23
23
  datachain/cli/__init__.py,sha256=YPVkuQ7IezNhtzo5xrfca1hEIiZtFxOlJCOzAOEuxmA,8335
@@ -26,10 +26,10 @@ datachain/cli/commands/__init__.py,sha256=zp3bYIioO60x_X04A4-IpZqSYVnpwOa1AdERQa
26
26
  datachain/cli/commands/datasets.py,sha256=865ui6q4UVPbL_-jk18C-lYi_bGMlh7XhfRaHbbNyhk,5796
27
27
  datachain/cli/commands/du.py,sha256=9edEzDEs98K2VYk8Wf-ZMpUzALcgm9uD6YtoqbvtUGU,391
28
28
  datachain/cli/commands/index.py,sha256=eglNaIe1yyIadUHHumjtNbgIjht6kme7SS7xE3YHR88,198
29
- datachain/cli/commands/ls.py,sha256=7yVSRzhmocnnaAXgim4NzrzEymwpLTJjhXq5EATFwsU,5286
29
+ datachain/cli/commands/ls.py,sha256=dSD2_MHng4t9HRFJZWMOCjPL4XU3qaBV3piNl8UXP08,5275
30
30
  datachain/cli/commands/misc.py,sha256=c0DmkOLwcDI2YhA8ArOuLJk6aGzSMZCiKL_E2JGibVE,600
31
31
  datachain/cli/commands/query.py,sha256=2S7hQxialt1fkbocxi6JXZI6jS5QnFrD1aOjKgZkzfI,1471
32
- datachain/cli/commands/show.py,sha256=0ITkA7wvBPfEKM1K6uE0aage38WVsy1QXi6NS8VeSJw,1643
32
+ datachain/cli/commands/show.py,sha256=pn8jQ5HqUpzZE3KE-iydflp8LGgfVIKR8eKwVKv6A-8,1604
33
33
  datachain/cli/parser/__init__.py,sha256=rtjlqSsDd4LZH9WdgvluO27M4sID1wD7YkQ4cKhNXzw,15721
34
34
  datachain/cli/parser/job.py,sha256=kvQkSfieyUmvJpOK8p78UgS8sygHhQXztRlOtVcgtaU,3449
35
35
  datachain/cli/parser/studio.py,sha256=Y-1OlQGecLVi9QofvWUfSlPd2ISyaESf7QFGZqGsrdw,3609
@@ -50,7 +50,7 @@ datachain/data_storage/schema.py,sha256=qSukry2kINhVw8aj5lQrpe7N90DFeatKIKmDh6jA
50
50
  datachain/data_storage/serializer.py,sha256=6G2YtOFqqDzJf1KbvZraKGXl2XHZyVml2krunWUum5o,927
51
51
  datachain/data_storage/sqlite.py,sha256=KJ8hI0Hrwv9eAA-nLUlw2AYCQxiAAZ12a-ftUBtroNQ,24545
52
52
  datachain/data_storage/warehouse.py,sha256=GGtgHcOKjnvHN6CFkGGB8m4CFgPPJBo3f-KHEFEJmDc,30730
53
- datachain/diff/__init__.py,sha256=xSbJtmj-oawXQ2qfdGtfnVsfXV7KhdkQKC9bG_5lA2k,9256
53
+ datachain/diff/__init__.py,sha256=YkGdiDbZIMhAZ2SJ4eSe00HU67VP1P6SL2L_t0ODYMs,9425
54
54
  datachain/fs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
55
  datachain/fs/reference.py,sha256=A8McpXF0CqbXPqanXuvpKu50YLB3a2ZXA3YAPxtBXSM,914
56
56
  datachain/fs/utils.py,sha256=s-FkTOCGBk-b6TT3toQH51s9608pofoFjUSTc1yy7oE,825
@@ -70,20 +70,19 @@ datachain/lib/arrow.py,sha256=9UBCF-lftQaz0yxdsjbLKbyzVSmrF_QSWdhp2oBDPqs,9486
70
70
  datachain/lib/clip.py,sha256=lm5CzVi4Cj1jVLEKvERKArb-egb9j1Ls-fwTItT6vlI,6150
71
71
  datachain/lib/data_model.py,sha256=ZwBXELtqROEdLL4DmxTipnwUZmhQvMz_UVDzyf7nQ9Y,2899
72
72
  datachain/lib/dataset_info.py,sha256=IjdF1E0TQNOq9YyynfWiCFTeZpbyGfyJvxgJY4YN810,2493
73
- datachain/lib/dc.py,sha256=fNIVsAU5_uPbjQhIjoXfEDEF7eImh0cqtIl39CI5sKs,99457
74
73
  datachain/lib/file.py,sha256=HLQXS_WULm7Y-fkHMy0WpibVAcrkLPRS6CrZy6rwFe0,30450
75
74
  datachain/lib/hf.py,sha256=gjxuStZBlKtNk3-4yYSlWZDv9zBGblOdvEy_Lwap5hA,5882
76
75
  datachain/lib/image.py,sha256=butvUY_33PVEYPKX2nVCPeJjJVcBaptZwsE9REQsTS8,3247
77
76
  datachain/lib/listing.py,sha256=xrgsd1_YLLiA69LnwK56oZwe0RXTBCDicGzhavF_2AQ,6665
78
77
  datachain/lib/listing_info.py,sha256=9ua40Hw0aiQByUw3oAEeNzMavJYfW0Uhe8YdCTK-m_g,1110
79
- datachain/lib/meta_formats.py,sha256=xEYlfN6XgiOgrqhY2kVlvK3xlo5nT3nuVrH111XMOrg,6385
78
+ datachain/lib/meta_formats.py,sha256=f-irPQH_acIYT5gzjqoOvGrGOQrm-E_0wN-4lqZF_j8,6349
80
79
  datachain/lib/model_store.py,sha256=DNIv8Y6Jtk1_idNLzIpsThOsdW2BMAudyUCbPUcgcxk,2515
81
- datachain/lib/pytorch.py,sha256=QxXBhrn2-D0RiFA2rdxZ7wKMxyuQ0WWHKfiFEWAA760,7710
80
+ datachain/lib/pytorch.py,sha256=FFCZoVkoG_FY_vJ4v_DgzijEEcTozuddlPz1uAa5tyg,7712
82
81
  datachain/lib/settings.py,sha256=ZELRCTLbi5vzRPiDX6cQ9LLg9TefJ_A05gIGni0lll8,2535
83
82
  datachain/lib/signal_schema.py,sha256=DRatqSG7OVtCUCWyZvMXe4m7r7XFO6NCfzsJRDErMtg,35185
84
83
  datachain/lib/tar.py,sha256=3WIzao6yD5fbLqXLTt9GhPGNonbFIs_fDRu-9vgLgsA,1038
85
84
  datachain/lib/text.py,sha256=UNHm8fhidk7wdrWqacEWaA6I9ykfYqarQ2URby7jc7M,1261
86
- datachain/lib/udf.py,sha256=4_mdcWNkyukbDjqBNszlIrZLQyl_dPVQxhKwb_iDtQQ,16192
85
+ datachain/lib/udf.py,sha256=6ZCn9qIAVwQA4zEyWiTb1jaSLkpkBXeGeaH8EB7Im3I,16168
87
86
  datachain/lib/udf_signature.py,sha256=2EtsOPDNSPqcOlYwqbCdy6RF5MldI-7smii8aLy8p7Y,7543
88
87
  datachain/lib/utils.py,sha256=QrjVs_oLRXEotOPUYurBJypBFi_ReTJmxcnJeH4j2Uk,1596
89
88
  datachain/lib/video.py,sha256=suH_8Mi8VYk4-IVb1vjSduF_njs64ji1WGKHxDLnGYw,6629
@@ -95,6 +94,19 @@ datachain/lib/convert/python_to_sql.py,sha256=wg-O5FRKX3x3Wh8ZL1b9ntMlgf1zRO4djM
95
94
  datachain/lib/convert/sql_to_python.py,sha256=XXCBYDQFUXJIBNWkjEP944cnCfJ8GF2Tji0DLF3A_zQ,315
96
95
  datachain/lib/convert/unflatten.py,sha256=ysMkstwJzPMWUlnxn-Z-tXJR3wmhjHeSN_P-sDcLS6s,2010
97
96
  datachain/lib/convert/values_to_tuples.py,sha256=EFfIGBiVVltJQG8blzsQ1dGXneh4D3wdLfSUeoK10OI,3931
97
+ datachain/lib/dc/__init__.py,sha256=QKjTAYrigSoy74RQHmNS_86SEOisKk-BLDREYaJ_olY,743
98
+ datachain/lib/dc/csv.py,sha256=OaVHYnOZiYEfsUcispXuGcIYQKF03u4XrRf6Fgce6Kk,4401
99
+ datachain/lib/dc/datachain.py,sha256=NdGCRNk3NZCGQHs-sq0jiKkvsXiowiqDQTY_X4AbL6o,76390
100
+ datachain/lib/dc/datasets.py,sha256=0vdgNpA_xakFgnfm78I1yU98u2hvOawOXS872pg2F48,4329
101
+ datachain/lib/dc/hf.py,sha256=F_ME1IpUlQfhqVGe__Uz7jLwd-fp-O7pu50OLhkaG0w,2170
102
+ datachain/lib/dc/json.py,sha256=gVH69oP8b5FR1YX3c_4Z_G1nFsAQ_xFz6fBg0J-U9ak,2719
103
+ datachain/lib/dc/listings.py,sha256=c2ASPhwRhPDMbA5esYp3kMVw6sQ7vsWEflHWh9x7tkw,1044
104
+ datachain/lib/dc/pandas.py,sha256=eteVB6DqRGAU2tDF_Bep7JRU4nny3uyVPbGKOZ6PVq0,1249
105
+ datachain/lib/dc/parquet.py,sha256=tO0rDL3XZ24rqkUJYAYn_yAyZgIYV5N6r28MTlPE0Z0,1809
106
+ datachain/lib/dc/records.py,sha256=zV4vPJvCEd5mBv-E_q-VfrSXNjcfu74QY884z3QuftM,2524
107
+ datachain/lib/dc/storage.py,sha256=PIz6K2VOtrVV7XUNd3BESp3P5WovgaG1RgBYut0OBNA,3789
108
+ datachain/lib/dc/utils.py,sha256=Ct-0FqCaDhNWHx09gJFcCXJGPjMI-VZr4t-GJyqTi44,3984
109
+ datachain/lib/dc/values.py,sha256=PLBZew0BYO3mv7W3n8OF5Ad-5tp5eWPqlbiVxG5pJ30,1409
98
110
  datachain/model/__init__.py,sha256=R9faX5OHV1xh2EW-g2MPedwbtEqt3LodJRyluB-QylI,189
99
111
  datachain/model/bbox.py,sha256=cQNHuQuVsh6bW3n3Hj40F2Cc20cExQ9Lg_q7R2jxUMI,9324
100
112
  datachain/model/pose.py,sha256=rjquA6M-I-Y30Xm6YSkGv1OY52hJZmR2AuxbIpE5uD0,3865
@@ -136,11 +148,11 @@ datachain/sql/sqlite/base.py,sha256=N-cQT0Hpu9ROWe4OiKlkkn_YP1NKCRZZ3xSfTzpyaDA,
136
148
  datachain/sql/sqlite/types.py,sha256=cH6oge2E_YWFy22wY-txPJH8gxoQFSpCthtZR8PZjpo,1849
137
149
  datachain/sql/sqlite/vector.py,sha256=ncW4eu2FlJhrP_CIpsvtkUabZlQdl2D5Lgwy_cbfqR0,469
138
150
  datachain/toolkit/__init__.py,sha256=eQ58Q5Yf_Fgv1ZG0IO5dpB4jmP90rk8YxUWmPc1M2Bo,68
139
- datachain/toolkit/split.py,sha256=z3zRJNzjWrpPuRw-zgFbCOBKInyYxJew8ygrYQRQLNc,2930
151
+ datachain/toolkit/split.py,sha256=VdcP_zVLqAxuSrze3BaR-dBzTmyKkCUAiAremw3OEPU,2914
140
152
  datachain/torch/__init__.py,sha256=gIS74PoEPy4TB3X6vx9nLO0Y3sLJzsA8ckn8pRWihJM,579
141
- datachain-0.13.0.dist-info/LICENSE,sha256=8DnqK5yoPI_E50bEg_zsHKZHY2HqPy4rYN338BHQaRA,11344
142
- datachain-0.13.0.dist-info/METADATA,sha256=4pdyj_HTlLLYZXfamUuBrMipFviwUfZ3vjzAvEOI-10,11351
143
- datachain-0.13.0.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
144
- datachain-0.13.0.dist-info/entry_points.txt,sha256=0GMJS6B_KWq0m3VT98vQI2YZodAMkn4uReZ_okga9R4,49
145
- datachain-0.13.0.dist-info/top_level.txt,sha256=lZPpdU_2jJABLNIg2kvEOBi8PtsYikbN1OdMLHk8bTg,10
146
- datachain-0.13.0.dist-info/RECORD,,
153
+ datachain-0.14.0.dist-info/licenses/LICENSE,sha256=8DnqK5yoPI_E50bEg_zsHKZHY2HqPy4rYN338BHQaRA,11344
154
+ datachain-0.14.0.dist-info/METADATA,sha256=lC1I5lSWJX7a9oNpsRnEOM_L1W3hfnY8Op7iGWaNNcM,11324
155
+ datachain-0.14.0.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
156
+ datachain-0.14.0.dist-info/entry_points.txt,sha256=0GMJS6B_KWq0m3VT98vQI2YZodAMkn4uReZ_okga9R4,49
157
+ datachain-0.14.0.dist-info/top_level.txt,sha256=lZPpdU_2jJABLNIg2kvEOBi8PtsYikbN1OdMLHk8bTg,10
158
+ datachain-0.14.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (76.1.0)
2
+ Generator: setuptools (78.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5