datachain 0.2.13__py3-none-any.whl → 0.2.15__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/data_storage/metastore.py +0 -4
- datachain/data_storage/schema.py +7 -3
- datachain/data_storage/sqlite.py +22 -4
- datachain/data_storage/warehouse.py +25 -26
- datachain/lib/arrow.py +27 -8
- datachain/lib/convert/flatten.py +10 -5
- datachain/lib/convert/python_to_sql.py +1 -1
- datachain/lib/convert/values_to_tuples.py +4 -1
- datachain/lib/data_model.py +6 -1
- datachain/lib/dc.py +206 -29
- datachain/lib/file.py +6 -11
- datachain/lib/meta_formats.py +12 -11
- datachain/lib/settings.py +1 -17
- datachain/lib/udf.py +18 -10
- datachain/query/dataset.py +24 -65
- datachain/sql/sqlite/base.py +3 -3
- datachain/sql/sqlite/types.py +5 -13
- datachain/sql/types.py +5 -1
- {datachain-0.2.13.dist-info → datachain-0.2.15.dist-info}/METADATA +2 -3
- {datachain-0.2.13.dist-info → datachain-0.2.15.dist-info}/RECORD +24 -24
- {datachain-0.2.13.dist-info → datachain-0.2.15.dist-info}/WHEEL +1 -1
- {datachain-0.2.13.dist-info → datachain-0.2.15.dist-info}/LICENSE +0 -0
- {datachain-0.2.13.dist-info → datachain-0.2.15.dist-info}/entry_points.txt +0 -0
- {datachain-0.2.13.dist-info → datachain-0.2.15.dist-info}/top_level.txt +0 -0
datachain/query/dataset.py
CHANGED
|
@@ -25,6 +25,7 @@ from typing import (
|
|
|
25
25
|
|
|
26
26
|
import attrs
|
|
27
27
|
import sqlalchemy
|
|
28
|
+
import sqlalchemy as sa
|
|
28
29
|
from attrs import frozen
|
|
29
30
|
from fsspec.callbacks import DEFAULT_CALLBACK, Callback, TqdmCallback
|
|
30
31
|
from sqlalchemy import Column
|
|
@@ -250,7 +251,7 @@ class DatasetDiffOperation(Step):
|
|
|
250
251
|
self,
|
|
251
252
|
source_query: Select,
|
|
252
253
|
target_query: Select,
|
|
253
|
-
) ->
|
|
254
|
+
) -> sa.Selectable:
|
|
254
255
|
"""
|
|
255
256
|
Should return select query that calculates desired diff between dataset queries
|
|
256
257
|
"""
|
|
@@ -261,14 +262,12 @@ class DatasetDiffOperation(Step):
|
|
|
261
262
|
temp_tables.extend(self.dq.temp_table_names)
|
|
262
263
|
|
|
263
264
|
# creating temp table that will hold subtract results
|
|
264
|
-
temp_table_name = self.catalog.warehouse.
|
|
265
|
-
6
|
|
266
|
-
)
|
|
265
|
+
temp_table_name = self.catalog.warehouse.temp_table_name()
|
|
267
266
|
temp_tables.append(temp_table_name)
|
|
268
267
|
|
|
269
268
|
columns = [
|
|
270
269
|
c if isinstance(c, Column) else Column(c.name, c.type)
|
|
271
|
-
for c in source_query.
|
|
270
|
+
for c in source_query.selected_columns
|
|
272
271
|
]
|
|
273
272
|
temp_table = self.catalog.warehouse.create_dataset_rows_table(
|
|
274
273
|
temp_table_name,
|
|
@@ -292,23 +291,16 @@ class DatasetDiffOperation(Step):
|
|
|
292
291
|
|
|
293
292
|
@frozen
|
|
294
293
|
class Subtract(DatasetDiffOperation):
|
|
295
|
-
|
|
296
|
-
Calculates rows that are in a source query but are not in target query (diff)
|
|
297
|
-
This can be used to do delta updates (calculate UDF only on newly added rows)
|
|
298
|
-
Example:
|
|
299
|
-
>>> ds = DatasetQuery(name="dogs_cats") # some older dataset with embeddings
|
|
300
|
-
>>> ds_updated = (
|
|
301
|
-
DatasetQuery("gs://dvcx-datalakes/dogs-and-cats")
|
|
302
|
-
.filter(C.size > 1000) # we can also filter out source query
|
|
303
|
-
.subtract(ds)
|
|
304
|
-
.add_signals(calc_embeddings) # calculae embeddings only on new rows
|
|
305
|
-
.union(ds) # union with old dataset that's missing new rows
|
|
306
|
-
.save("dogs_cats_updated")
|
|
307
|
-
)
|
|
308
|
-
"""
|
|
294
|
+
on: Sequence[str]
|
|
309
295
|
|
|
310
|
-
def query(self, source_query: Select, target_query: Select) ->
|
|
311
|
-
|
|
296
|
+
def query(self, source_query: Select, target_query: Select) -> sa.Selectable:
|
|
297
|
+
sq = source_query.alias("source_query")
|
|
298
|
+
tq = target_query.alias("target_query")
|
|
299
|
+
where_clause = sa.and_(
|
|
300
|
+
getattr(sq.c, col_name).is_not_distinct_from(getattr(tq.c, col_name))
|
|
301
|
+
for col_name in self.on
|
|
302
|
+
) # type: ignore[arg-type]
|
|
303
|
+
return sq.select().except_(sq.select().where(where_clause))
|
|
312
304
|
|
|
313
305
|
|
|
314
306
|
@frozen
|
|
@@ -454,9 +446,6 @@ class UDFStep(Step, ABC):
|
|
|
454
446
|
to select
|
|
455
447
|
"""
|
|
456
448
|
|
|
457
|
-
def udf_table_name(self) -> str:
|
|
458
|
-
return self.catalog.warehouse.UDF_TABLE_NAME_PREFIX + _random_string(6)
|
|
459
|
-
|
|
460
449
|
def populate_udf_table(self, udf_table: "Table", query: Select) -> None:
|
|
461
450
|
use_partitioning = self.partition_by is not None
|
|
462
451
|
batching = self.udf.properties.get_batching(use_partitioning)
|
|
@@ -580,9 +569,7 @@ class UDFStep(Step, ABC):
|
|
|
580
569
|
list_partition_by = [self.partition_by]
|
|
581
570
|
|
|
582
571
|
# create table with partitions
|
|
583
|
-
tbl = self.catalog.warehouse.create_udf_table(
|
|
584
|
-
self.udf_table_name(), partition_columns()
|
|
585
|
-
)
|
|
572
|
+
tbl = self.catalog.warehouse.create_udf_table(partition_columns())
|
|
586
573
|
|
|
587
574
|
# fill table with partitions
|
|
588
575
|
cols = [
|
|
@@ -644,37 +631,12 @@ class UDFSignal(UDFStep):
|
|
|
644
631
|
for (col_name, col_type) in self.udf.output.items()
|
|
645
632
|
]
|
|
646
633
|
|
|
647
|
-
return self.catalog.warehouse.create_udf_table(
|
|
648
|
-
self.udf_table_name(), udf_output_columns
|
|
649
|
-
)
|
|
650
|
-
|
|
651
|
-
def create_pre_udf_table(self, query: Select) -> "Table":
|
|
652
|
-
columns = [
|
|
653
|
-
sqlalchemy.Column(c.name, c.type)
|
|
654
|
-
for c in query.selected_columns
|
|
655
|
-
if c.name != "sys__id"
|
|
656
|
-
]
|
|
657
|
-
table = self.catalog.warehouse.create_udf_table(self.udf_table_name(), columns)
|
|
658
|
-
select_q = query.with_only_columns(
|
|
659
|
-
*[c for c in query.selected_columns if c.name != "sys__id"]
|
|
660
|
-
)
|
|
661
|
-
|
|
662
|
-
# if there is order by clause we need row_number to preserve order
|
|
663
|
-
# if there is no order by clause we still need row_number to generate
|
|
664
|
-
# unique ids as uniqueness is important for this table
|
|
665
|
-
select_q = select_q.add_columns(
|
|
666
|
-
f.row_number().over(order_by=select_q._order_by_clauses).label("sys__id")
|
|
667
|
-
)
|
|
668
|
-
|
|
669
|
-
self.catalog.warehouse.db.execute(
|
|
670
|
-
table.insert().from_select(list(select_q.selected_columns), select_q)
|
|
671
|
-
)
|
|
672
|
-
return table
|
|
634
|
+
return self.catalog.warehouse.create_udf_table(udf_output_columns)
|
|
673
635
|
|
|
674
636
|
def process_input_query(self, query: Select) -> tuple[Select, list["Table"]]:
|
|
675
637
|
if os.getenv("DATACHAIN_DISABLE_QUERY_CACHE", "") not in ("", "0"):
|
|
676
638
|
return query, []
|
|
677
|
-
table = self.create_pre_udf_table(query)
|
|
639
|
+
table = self.catalog.warehouse.create_pre_udf_table(query)
|
|
678
640
|
q: Select = sqlalchemy.select(*table.c)
|
|
679
641
|
if query._order_by_clauses:
|
|
680
642
|
# we are adding ordering only if it's explicitly added by user in
|
|
@@ -738,7 +700,7 @@ class RowGenerator(UDFStep):
|
|
|
738
700
|
def create_udf_table(self, query: Select) -> "Table":
|
|
739
701
|
warehouse = self.catalog.warehouse
|
|
740
702
|
|
|
741
|
-
table_name = self.udf_table_name()
|
|
703
|
+
table_name = self.catalog.warehouse.udf_table_name()
|
|
742
704
|
columns: tuple[Column, ...] = tuple(
|
|
743
705
|
Column(name, typ) for name, typ in self.udf.output.items()
|
|
744
706
|
)
|
|
@@ -1260,7 +1222,7 @@ class DatasetQuery:
|
|
|
1260
1222
|
def as_iterable(self, **kwargs) -> Iterator[ResultIter]:
|
|
1261
1223
|
try:
|
|
1262
1224
|
query = self.apply_steps().select()
|
|
1263
|
-
selected_columns = [c.name for c in query.
|
|
1225
|
+
selected_columns = [c.name for c in query.selected_columns]
|
|
1264
1226
|
yield ResultIter(
|
|
1265
1227
|
self.catalog.warehouse.dataset_rows_select(query, **kwargs),
|
|
1266
1228
|
selected_columns,
|
|
@@ -1564,8 +1526,12 @@ class DatasetQuery:
|
|
|
1564
1526
|
|
|
1565
1527
|
@detach
|
|
1566
1528
|
def subtract(self, dq: "DatasetQuery") -> "Self":
|
|
1529
|
+
return self._subtract(dq, on=["source", "parent", "name"])
|
|
1530
|
+
|
|
1531
|
+
@detach
|
|
1532
|
+
def _subtract(self, dq: "DatasetQuery", on: Sequence[str]) -> "Self":
|
|
1567
1533
|
query = self.clone()
|
|
1568
|
-
query.steps.append(Subtract(dq, self.catalog))
|
|
1534
|
+
query.steps.append(Subtract(dq, self.catalog, on=on))
|
|
1569
1535
|
return query
|
|
1570
1536
|
|
|
1571
1537
|
@detach
|
|
@@ -1684,7 +1650,7 @@ class DatasetQuery:
|
|
|
1684
1650
|
f.row_number().over(order_by=q._order_by_clauses).label("sys__id")
|
|
1685
1651
|
)
|
|
1686
1652
|
|
|
1687
|
-
cols = tuple(c.name for c in q.
|
|
1653
|
+
cols = tuple(c.name for c in q.selected_columns)
|
|
1688
1654
|
insert_q = sqlalchemy.insert(dr.get_table()).from_select(cols, q)
|
|
1689
1655
|
self.catalog.warehouse.db.execute(insert_q, **kwargs)
|
|
1690
1656
|
self.catalog.metastore.update_dataset_status(
|
|
@@ -1804,10 +1770,3 @@ def query_wrapper(dataset_query: DatasetQuery) -> DatasetQuery:
|
|
|
1804
1770
|
|
|
1805
1771
|
_send_result(dataset_query)
|
|
1806
1772
|
return dataset_query
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
def _random_string(length: int) -> str:
|
|
1810
|
-
return "".join(
|
|
1811
|
-
random.choice(string.ascii_letters + string.digits) # noqa: S311
|
|
1812
|
-
for i in range(length)
|
|
1813
|
-
)
|
datachain/sql/sqlite/base.py
CHANGED
|
@@ -5,8 +5,8 @@ from datetime import MAXYEAR, MINYEAR, datetime, timezone
|
|
|
5
5
|
from types import MappingProxyType
|
|
6
6
|
from typing import Callable, Optional
|
|
7
7
|
|
|
8
|
+
import orjson
|
|
8
9
|
import sqlalchemy as sa
|
|
9
|
-
import ujson
|
|
10
10
|
from sqlalchemy.dialects import sqlite
|
|
11
11
|
from sqlalchemy.ext.compiler import compiles
|
|
12
12
|
from sqlalchemy.sql.elements import literal
|
|
@@ -149,7 +149,7 @@ def missing_vector_function(name, exc):
|
|
|
149
149
|
|
|
150
150
|
|
|
151
151
|
def sqlite_string_split(string: str, sep: str, maxsplit: int = -1) -> str:
|
|
152
|
-
return
|
|
152
|
+
return orjson.dumps(string.split(sep, maxsplit)).decode("utf-8")
|
|
153
153
|
|
|
154
154
|
|
|
155
155
|
def register_user_defined_sql_functions() -> None:
|
|
@@ -274,7 +274,7 @@ def compile_euclidean_distance(element, compiler, **kwargs):
|
|
|
274
274
|
|
|
275
275
|
|
|
276
276
|
def py_json_array_length(arr):
|
|
277
|
-
return len(
|
|
277
|
+
return len(orjson.loads(arr))
|
|
278
278
|
|
|
279
279
|
|
|
280
280
|
def compile_array_length(element, compiler, **kwargs):
|
datachain/sql/sqlite/types.py
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import json
|
|
2
1
|
import sqlite3
|
|
3
2
|
|
|
4
|
-
import
|
|
3
|
+
import orjson
|
|
5
4
|
from sqlalchemy import types
|
|
6
5
|
|
|
7
6
|
from datachain.sql.types import TypeConverter, TypeReadConverter
|
|
@@ -29,22 +28,15 @@ class Array(types.UserDefinedType):
|
|
|
29
28
|
|
|
30
29
|
|
|
31
30
|
def adapt_array(arr):
|
|
32
|
-
return
|
|
31
|
+
return orjson.dumps(arr).decode("utf-8")
|
|
33
32
|
|
|
34
33
|
|
|
35
34
|
def convert_array(arr):
|
|
36
|
-
return
|
|
35
|
+
return orjson.loads(arr)
|
|
37
36
|
|
|
38
37
|
|
|
39
38
|
def adapt_np_array(arr):
|
|
40
|
-
|
|
41
|
-
if isinstance(obj, np.ndarray):
|
|
42
|
-
return obj.tolist()
|
|
43
|
-
return obj
|
|
44
|
-
|
|
45
|
-
if np.issubdtype(arr.dtype, np.object_):
|
|
46
|
-
return json.dumps(arr.tolist(), default=_json_serialize)
|
|
47
|
-
return ujson.dumps(arr.tolist())
|
|
39
|
+
return orjson.dumps(arr, option=orjson.OPT_SERIALIZE_NUMPY).decode("utf-8")
|
|
48
40
|
|
|
49
41
|
|
|
50
42
|
def adapt_np_generic(val):
|
|
@@ -70,5 +62,5 @@ class SQLiteTypeConverter(TypeConverter):
|
|
|
70
62
|
class SQLiteTypeReadConverter(TypeReadConverter):
|
|
71
63
|
def array(self, value, item_type, dialect):
|
|
72
64
|
if isinstance(value, str):
|
|
73
|
-
value =
|
|
65
|
+
value = orjson.loads(value)
|
|
74
66
|
return super().array(value, item_type, dialect)
|
datachain/sql/types.py
CHANGED
|
@@ -12,6 +12,7 @@ for sqlite we can use `sqlite.register_converter`
|
|
|
12
12
|
( https://docs.python.org/3/library/sqlite3.html#sqlite3.register_converter )
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
|
+
import json
|
|
15
16
|
from datetime import datetime
|
|
16
17
|
from types import MappingProxyType
|
|
17
18
|
from typing import Any, Union
|
|
@@ -247,7 +248,10 @@ class Array(SQLType):
|
|
|
247
248
|
return type_defaults(dialect).array()
|
|
248
249
|
|
|
249
250
|
def on_read_convert(self, value, dialect):
|
|
250
|
-
|
|
251
|
+
r = read_converter(dialect).array(value, self.item_type, dialect)
|
|
252
|
+
if isinstance(self.item_type, JSON):
|
|
253
|
+
r = [json.loads(item) if isinstance(item, str) else item for item in r]
|
|
254
|
+
return r
|
|
251
255
|
|
|
252
256
|
|
|
253
257
|
class JSON(SQLType):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: datachain
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.15
|
|
4
4
|
Summary: Wrangle unstructured AI data at scale
|
|
5
5
|
Author-email: Dmitry Petrov <support@dvc.org>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -35,7 +35,7 @@ Requires-Dist: sqlalchemy >=2
|
|
|
35
35
|
Requires-Dist: multiprocess ==0.70.16
|
|
36
36
|
Requires-Dist: dill ==0.3.8
|
|
37
37
|
Requires-Dist: cloudpickle
|
|
38
|
-
Requires-Dist:
|
|
38
|
+
Requires-Dist: orjson >=3.10.5
|
|
39
39
|
Requires-Dist: pydantic <3,>=2
|
|
40
40
|
Requires-Dist: jmespath >=1.0
|
|
41
41
|
Requires-Dist: datamodel-code-generator >=0.25
|
|
@@ -48,7 +48,6 @@ Requires-Dist: types-python-dateutil ; extra == 'dev'
|
|
|
48
48
|
Requires-Dist: types-pytz ; extra == 'dev'
|
|
49
49
|
Requires-Dist: types-PyYAML ; extra == 'dev'
|
|
50
50
|
Requires-Dist: types-requests ; extra == 'dev'
|
|
51
|
-
Requires-Dist: types-ujson ; extra == 'dev'
|
|
52
51
|
Provides-Extra: docs
|
|
53
52
|
Requires-Dist: mkdocs >=1.5.2 ; extra == 'docs'
|
|
54
53
|
Requires-Dist: mkdocs-gen-files >=0.5.0 ; extra == 'docs'
|
|
@@ -32,41 +32,41 @@ datachain/data_storage/__init__.py,sha256=cEOJpyu1JDZtfUupYucCDNFI6e5Wmp_Oyzq6rZ
|
|
|
32
32
|
datachain/data_storage/db_engine.py,sha256=rgBuqJ-M1j5QyqiUQuJRewctuvRRj8LBDL54-aPEFxE,3287
|
|
33
33
|
datachain/data_storage/id_generator.py,sha256=VlDALKijggegAnNMJwuMETJgnLoPYxpkrkld5DNTPQw,3839
|
|
34
34
|
datachain/data_storage/job.py,sha256=w-7spowjkOa1P5fUVtJou3OltT0L48P0RYWZ9rSJ9-s,383
|
|
35
|
-
datachain/data_storage/metastore.py,sha256=
|
|
36
|
-
datachain/data_storage/schema.py,sha256=
|
|
35
|
+
datachain/data_storage/metastore.py,sha256=wVcT8MiSH_paWEXN6eZ8Z3msrHY6vWtVFTH5kwHteRE,54852
|
|
36
|
+
datachain/data_storage/schema.py,sha256=FQvt5MUMSnI5ZAE7Nthae4aaJpt8JC4nH8KiWDuhJkk,8135
|
|
37
37
|
datachain/data_storage/serializer.py,sha256=6G2YtOFqqDzJf1KbvZraKGXl2XHZyVml2krunWUum5o,927
|
|
38
|
-
datachain/data_storage/sqlite.py,sha256=
|
|
39
|
-
datachain/data_storage/warehouse.py,sha256=
|
|
38
|
+
datachain/data_storage/sqlite.py,sha256=w0d_cZ2u9LpQYFFXll22mnxHaxPOoJdHlsKAZmONQpA,25605
|
|
39
|
+
datachain/data_storage/warehouse.py,sha256=WGHWBuBmNmK-qHwhvMfAwtXZ-fQKwk8w1dadN_4dugA,33293
|
|
40
40
|
datachain/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
|
-
datachain/lib/arrow.py,sha256=
|
|
41
|
+
datachain/lib/arrow.py,sha256=9C5AVH6tLo9hwzav-1tLLnmWP-3_SReYCOfcOC54pu0,4437
|
|
42
42
|
datachain/lib/clip.py,sha256=16u4b_y2Y15nUS2UN_8ximMo6r_-_4IQpmct2ol-e-g,5730
|
|
43
|
-
datachain/lib/data_model.py,sha256=
|
|
43
|
+
datachain/lib/data_model.py,sha256=qfTtQNncS5pt9SvXdMEa5kClniaT6XBGBfO7onEz2TI,1632
|
|
44
44
|
datachain/lib/dataset_info.py,sha256=lONGr71ozo1DS4CQEhnpKORaU4qFb6Ketv8Xm8CVm2U,2188
|
|
45
|
-
datachain/lib/dc.py,sha256=
|
|
46
|
-
datachain/lib/file.py,sha256=
|
|
45
|
+
datachain/lib/dc.py,sha256=alJwK7z5JoUmGc1Kj74dGtlH2MJ0jeSyS2dnInemnnA,56386
|
|
46
|
+
datachain/lib/file.py,sha256=n9GBmZ1CjzDjHkbUBsUrs8JOJrAoh3MV2Cc8hBkex20,11957
|
|
47
47
|
datachain/lib/image.py,sha256=TgYhRhzd4nkytfFMeykQkPyzqb5Le_-tU81unVMPn4Q,2328
|
|
48
|
-
datachain/lib/meta_formats.py,sha256=
|
|
48
|
+
datachain/lib/meta_formats.py,sha256=jlSYWRUeDMjun_YCsQ2JxyaDJpEpokzHDPmKUAoCXnU,7034
|
|
49
49
|
datachain/lib/model_store.py,sha256=c4USXsBBjrGH8VOh4seIgOiav-qHOwdoixtxfLgU63c,2409
|
|
50
50
|
datachain/lib/pytorch.py,sha256=9PsypKseyKfIimTmTQOgb-pbNXgeeAHLdlWx0qRPULY,5660
|
|
51
|
-
datachain/lib/settings.py,sha256=
|
|
51
|
+
datachain/lib/settings.py,sha256=39thOpYJw-zPirzeNO6pmRC2vPrQvt4eBsw1xLWDFsw,2344
|
|
52
52
|
datachain/lib/signal_schema.py,sha256=lKGlpRRUHOUFLcpk-pLQd9kGAJ8FPy0Q2bk--UlVemU,14559
|
|
53
53
|
datachain/lib/text.py,sha256=dVe2Ilc_gW2EV0kun0UwegiCkapWcd20cef7CgINWHU,1083
|
|
54
|
-
datachain/lib/udf.py,sha256=
|
|
54
|
+
datachain/lib/udf.py,sha256=IjuDt2B8E3xEHhcJnaK_ZhmivdrOYPXz5uf7ylpktws,11815
|
|
55
55
|
datachain/lib/udf_signature.py,sha256=gMStcEeYJka5M6cg50Z9orC6y6HzCAJ3MkFqqn1fjZg,7137
|
|
56
56
|
datachain/lib/utils.py,sha256=5-kJlAZE0D9nXXweAjo7-SP_AWGo28feaDByONYaooQ,463
|
|
57
57
|
datachain/lib/vfile.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
58
58
|
datachain/lib/webdataset.py,sha256=nIa6ubv94CwnATeeSdE7f_F9Zkz9LuBTfbXvFg3_-Ak,8295
|
|
59
59
|
datachain/lib/webdataset_laion.py,sha256=PQP6tQmUP7Xu9fPuAGK1JDBYA6T5UufYMUTGaxgspJA,2118
|
|
60
60
|
datachain/lib/convert/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
|
-
datachain/lib/convert/flatten.py,sha256=
|
|
62
|
-
datachain/lib/convert/python_to_sql.py,sha256=
|
|
61
|
+
datachain/lib/convert/flatten.py,sha256=YMoC00BqEy3zSpvCp6Q0DfxihuPmgjUJj1g2cesWGPs,1790
|
|
62
|
+
datachain/lib/convert/python_to_sql.py,sha256=4gplGlr_Kg-Z40OpJUzJiarDWj7pwbUOk-dPOYYCJ9Q,2629
|
|
63
63
|
datachain/lib/convert/sql_to_python.py,sha256=HK414fexSQ4Ur-OY7_pKvDKEGdtos1CeeAFa4RxH4nU,532
|
|
64
64
|
datachain/lib/convert/unflatten.py,sha256=Ogvh_5wg2f38_At_1lN0D_e2uZOOpYEvwvB2xdq56Tw,2012
|
|
65
|
-
datachain/lib/convert/values_to_tuples.py,sha256=
|
|
65
|
+
datachain/lib/convert/values_to_tuples.py,sha256=aVoHWMOUGLAiS6_BBwKJqVIne91VffOW6-dWyNE7oHg,3715
|
|
66
66
|
datachain/query/__init__.py,sha256=tv-spkjUCYamMN9ys_90scYrZ8kJ7C7d1MTYVmxGtk4,325
|
|
67
67
|
datachain/query/batch.py,sha256=j-_ZcuQra2Ro3Wj4crtqQCg-7xuv-p84hr4QHdvT7as,3479
|
|
68
68
|
datachain/query/builtins.py,sha256=ZKNs49t8Oa_OaboCBIEqtXZt7c1Qe9OR_C_HpoDriIU,2781
|
|
69
|
-
datachain/query/dataset.py,sha256=
|
|
69
|
+
datachain/query/dataset.py,sha256=PJFVasYhCU0XvF7OrbxlAHLdm_PnhIQBp3TUDVHNHVY,60054
|
|
70
70
|
datachain/query/dispatch.py,sha256=oGX9ZuoKWPB_EyqAZD_eULcO3OejY44_keSmFS6SHT0,13315
|
|
71
71
|
datachain/query/metrics.py,sha256=vsECqbZfoSDBnvC3GQlziKXmISVYDLgHP1fMPEOtKyo,640
|
|
72
72
|
datachain/query/params.py,sha256=O_j89mjYRLOwWNhYZl-z7mi-rkdP7WyFmaDufsdTryE,863
|
|
@@ -77,7 +77,7 @@ datachain/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
|
|
|
77
77
|
datachain/remote/studio.py,sha256=f5s6qSZ9uB4URGUoU_8_W1KZRRQQVSm6cgEBkBUEfuE,7226
|
|
78
78
|
datachain/sql/__init__.py,sha256=A2djrbQwSMUZZEIKGnm-mnRA-NDSbiDJNpAmmwGNyIo,303
|
|
79
79
|
datachain/sql/selectable.py,sha256=fBM-wS1TUA42kVEAAiwqGtibIevyZAEritwt8PZGyLQ,1589
|
|
80
|
-
datachain/sql/types.py,sha256=
|
|
80
|
+
datachain/sql/types.py,sha256=SShudhdIpdfTKDxWDDqOajYRkTCkIgQbilA94g4i-4E,10389
|
|
81
81
|
datachain/sql/utils.py,sha256=rzlJw08etivdrcuQPqNVvVWhuVSyUPUQEEc6DOhu258,818
|
|
82
82
|
datachain/sql/default/__init__.py,sha256=XQ2cEZpzWiABqjV-6yYHUBGI9vN_UHxbxZENESmVAWw,45
|
|
83
83
|
datachain/sql/default/base.py,sha256=h44005q3qtMc9cjWmRufWwcBr5CfK_dnvG4IrcSQs_8,536
|
|
@@ -88,13 +88,13 @@ datachain/sql/functions/path.py,sha256=zixpERotTFP6LZ7I4TiGtyRA8kXOoZmH1yzH9oRW0
|
|
|
88
88
|
datachain/sql/functions/random.py,sha256=vBwEEj98VH4LjWixUCygQ5Bz1mv1nohsCG0-ZTELlVg,271
|
|
89
89
|
datachain/sql/functions/string.py,sha256=hIrF1fTvlPamDtm8UMnWDcnGfbbjCsHxZXS30U2Rzxo,651
|
|
90
90
|
datachain/sql/sqlite/__init__.py,sha256=TAdJX0Bg28XdqPO-QwUVKy8rg78cgMileHvMNot7d04,166
|
|
91
|
-
datachain/sql/sqlite/base.py,sha256=
|
|
92
|
-
datachain/sql/sqlite/types.py,sha256=
|
|
91
|
+
datachain/sql/sqlite/base.py,sha256=Jb1csbIARjEvwbylnvgNA7ChozSyoL3CQzOGBUf8QAw,12067
|
|
92
|
+
datachain/sql/sqlite/types.py,sha256=yzvp0sXSEoEYXs6zaYC_2YubarQoZH-MiUNXcpuEP4s,1573
|
|
93
93
|
datachain/sql/sqlite/vector.py,sha256=ncW4eu2FlJhrP_CIpsvtkUabZlQdl2D5Lgwy_cbfqR0,469
|
|
94
94
|
datachain/torch/__init__.py,sha256=gIS74PoEPy4TB3X6vx9nLO0Y3sLJzsA8ckn8pRWihJM,579
|
|
95
|
-
datachain-0.2.
|
|
96
|
-
datachain-0.2.
|
|
97
|
-
datachain-0.2.
|
|
98
|
-
datachain-0.2.
|
|
99
|
-
datachain-0.2.
|
|
100
|
-
datachain-0.2.
|
|
95
|
+
datachain-0.2.15.dist-info/LICENSE,sha256=8DnqK5yoPI_E50bEg_zsHKZHY2HqPy4rYN338BHQaRA,11344
|
|
96
|
+
datachain-0.2.15.dist-info/METADATA,sha256=kKdEsDFle6KQ55q9RlWsAd6DUTgAg40A8L5YWE9fbMg,14577
|
|
97
|
+
datachain-0.2.15.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
|
98
|
+
datachain-0.2.15.dist-info/entry_points.txt,sha256=0GMJS6B_KWq0m3VT98vQI2YZodAMkn4uReZ_okga9R4,49
|
|
99
|
+
datachain-0.2.15.dist-info/top_level.txt,sha256=lZPpdU_2jJABLNIg2kvEOBi8PtsYikbN1OdMLHk8bTg,10
|
|
100
|
+
datachain-0.2.15.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|