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

@@ -689,9 +689,6 @@ class AbstractDBMetastore(AbstractMetastore):
689
689
  return self._projects.select()
690
690
  return select(*columns)
691
691
 
692
- def _projects_update(self) -> "Update":
693
- return self._projects.update()
694
-
695
692
  def _projects_delete(self) -> "Delete":
696
693
  return self._projects.delete()
697
694
 
@@ -839,6 +836,16 @@ class AbstractDBMetastore(AbstractMetastore):
839
836
 
840
837
  return self.get_project(name, namespace.name)
841
838
 
839
+ def _projects_base_query(self) -> "Select":
840
+ n = self._namespaces
841
+ p = self._projects
842
+
843
+ query = self._projects_select(
844
+ *(getattr(n.c, f) for f in self._namespaces_fields),
845
+ *(getattr(p.c, f) for f in self._projects_fields),
846
+ )
847
+ return query.select_from(n.join(p, n.c.id == p.c.namespace_id))
848
+
842
849
  def get_project(
843
850
  self, name: str, namespace_name: str, create: bool = False, conn=None
844
851
  ) -> Project:
@@ -854,11 +861,7 @@ class AbstractDBMetastore(AbstractMetastore):
854
861
  create = True
855
862
  validate = False
856
863
 
857
- query = self._projects_select(
858
- *(getattr(n.c, f) for f in self._namespaces_fields),
859
- *(getattr(p.c, f) for f in self._projects_fields),
860
- )
861
- query = query.select_from(n.join(p, n.c.id == p.c.namespace_id)).where(
864
+ query = self._projects_base_query().where(
862
865
  p.c.name == name, n.c.name == namespace_name
863
866
  )
864
867
 
@@ -873,16 +876,9 @@ class AbstractDBMetastore(AbstractMetastore):
873
876
 
874
877
  def get_project_by_id(self, project_id: int, conn=None) -> Project:
875
878
  """Gets a single project by id"""
876
- n = self._namespaces
877
879
  p = self._projects
878
880
 
879
- query = self._projects_select(
880
- *(getattr(n.c, f) for f in self._namespaces_fields),
881
- *(getattr(p.c, f) for f in self._projects_fields),
882
- )
883
- query = query.select_from(n.join(p, n.c.id == p.c.namespace_id)).where(
884
- p.c.id == project_id
885
- )
881
+ query = self._projects_base_query().where(p.c.id == project_id)
886
882
 
887
883
  rows = list(self.db.execute(query, conn=conn))
888
884
  if not rows:
@@ -891,7 +887,8 @@ class AbstractDBMetastore(AbstractMetastore):
891
887
 
892
888
  def count_projects(self, namespace_id: Optional[int] = None) -> int:
893
889
  p = self._projects
894
- query = self._projects_select()
890
+
891
+ query = self._projects_base_query()
895
892
  if namespace_id:
896
893
  query = query.where(p.c.namespace_id == namespace_id)
897
894
 
@@ -917,17 +914,12 @@ class AbstractDBMetastore(AbstractMetastore):
917
914
  """
918
915
  Gets a list of projects inside some namespace, or in all namespaces
919
916
  """
920
- n = self._namespaces
921
917
  p = self._projects
922
918
 
923
- query = self._projects_select(
924
- *(getattr(n.c, f) for f in self._namespaces_fields),
925
- *(getattr(p.c, f) for f in self._projects_fields),
926
- )
927
- query = query.select_from(n.join(p, n.c.id == p.c.namespace_id))
919
+ query = self._projects_base_query()
928
920
 
929
921
  if namespace_id:
930
- query = query.where(n.c.id == namespace_id)
922
+ query = query.where(p.c.namespace_id == namespace_id)
931
923
 
932
924
  rows = list(self.db.execute(query, conn=conn))
933
925
 
datachain/lib/file.py CHANGED
@@ -332,7 +332,10 @@ class File(DataModel):
332
332
 
333
333
  @classmethod
334
334
  def upload(
335
- cls, data: bytes, path: str, catalog: Optional["Catalog"] = None
335
+ cls,
336
+ data: bytes,
337
+ path: Union[str, os.PathLike[str]],
338
+ catalog: Optional["Catalog"] = None,
336
339
  ) -> "Self":
337
340
  if catalog is None:
338
341
  from datachain.catalog.loader import get_catalog
@@ -340,8 +343,10 @@ class File(DataModel):
340
343
  catalog = get_catalog()
341
344
  from datachain.client.fsspec import Client
342
345
 
343
- client_cls = Client.get_implementation(path)
344
- source, rel_path = client_cls.split_url(path)
346
+ path_str = stringify_path(path)
347
+
348
+ client_cls = Client.get_implementation(path_str)
349
+ source, rel_path = client_cls.split_url(path_str)
345
350
 
346
351
  client = catalog.get_client(client_cls.get_uri(source))
347
352
  file = client.upload(data, rel_path)
@@ -351,7 +356,9 @@ class File(DataModel):
351
356
  return file
352
357
 
353
358
  @classmethod
354
- def at(cls, uri: str, session: Optional["Session"] = None) -> "Self":
359
+ def at(
360
+ cls, uri: Union[str, os.PathLike[str]], session: Optional["Session"] = None
361
+ ) -> "Self":
355
362
  """Construct a File from a full URI in one call.
356
363
 
357
364
  Example:
@@ -364,9 +371,10 @@ class File(DataModel):
364
371
  if session is None:
365
372
  session = Session.get()
366
373
  catalog = session.catalog
374
+ uri_str = stringify_path(uri)
367
375
 
368
- client_cls = Client.get_implementation(uri)
369
- source, rel_path = client_cls.split_url(uri)
376
+ client_cls = Client.get_implementation(uri_str)
377
+ source, rel_path = client_cls.split_url(uri_str)
370
378
  file = cls(source=client_cls.get_uri(source), path=rel_path)
371
379
  file._set_stream(catalog)
372
380
  return file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datachain
3
- Version: 0.32.2
3
+ Version: 0.32.3
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
@@ -49,7 +49,7 @@ datachain/client/s3.py,sha256=6DNVGLg-woPS1DVlYVX2rIlunNblsuxyOnI1rSzhW3k,7515
49
49
  datachain/data_storage/__init__.py,sha256=9Wit-oe5P46V7CJQTD0BJ5MhOa2Y9h3ddJ4VWTe-Lec,273
50
50
  datachain/data_storage/db_engine.py,sha256=n8ojCbvVMPY2e3SG8fUaaD0b9GkVfpl_Naa_6EiHfWg,3788
51
51
  datachain/data_storage/job.py,sha256=ZkeXCNUj_VCkoKYx29hqB4AcfVUielnRjY-GYUcUxt4,426
52
- datachain/data_storage/metastore.py,sha256=2-FNdrhV-UoE6ztzdVea2MLpjr80Mvf3M3kbDfd3jSs,56222
52
+ datachain/data_storage/metastore.py,sha256=SrcMeHAjzwTbX8A3WEZ3zzQzVW1n7uamrGDtQXqucyE,55810
53
53
  datachain/data_storage/schema.py,sha256=o3JbURKXRg3IJyIVA4QjHHkn6byRuz7avbydU2FlvNY,9897
54
54
  datachain/data_storage/serializer.py,sha256=6G2YtOFqqDzJf1KbvZraKGXl2XHZyVml2krunWUum5o,927
55
55
  datachain/data_storage/sqlite.py,sha256=1fIeIhmB3O8oQVzP8dDKap0KUIgI0n2TdBQSyv0R8J4,30345
@@ -75,7 +75,7 @@ datachain/lib/audio.py,sha256=fQmIBq-9hrUZtkgeJdPHYA_D8Wfe9D4cQZk4_ijxpNc,7580
75
75
  datachain/lib/clip.py,sha256=ae6uoiymOl53rBXwIfqJkbHrk_IA21R1uJwXo5454C4,6145
76
76
  datachain/lib/data_model.py,sha256=Rjah76GHwIV6AZQk4rsdg6JLre5D8Kb9T4PS5SXzsPA,3740
77
77
  datachain/lib/dataset_info.py,sha256=7w-DoKOyIVoOtWGCgciMLcP5CiAWJB3rVI-vUDF80k0,3311
78
- datachain/lib/file.py,sha256=gCtF1J1wYXpIZem5sd-ENVtuWip_znE7EQOkV51uFkQ,47321
78
+ datachain/lib/file.py,sha256=FNM9XBn5uxOwaRedlL-aCYQ1CXboFaeQh5WzJXU3WhA,47505
79
79
  datachain/lib/hf.py,sha256=3xdvPQPilnJiGv3H4S4bTGqvrGGlZgZmqjE1n_SMJZg,7293
80
80
  datachain/lib/image.py,sha256=erWvZW5M3emnbl6_fGAOPyKm-1EKbt3vOdWPfe3Oo7U,3265
81
81
  datachain/lib/listing.py,sha256=U-2stsTEwEsq4Y80dqGfktGzkmB5-ZntnL1_rzXlH0k,7089
@@ -161,9 +161,9 @@ datachain/sql/sqlite/vector.py,sha256=ncW4eu2FlJhrP_CIpsvtkUabZlQdl2D5Lgwy_cbfqR
161
161
  datachain/toolkit/__init__.py,sha256=eQ58Q5Yf_Fgv1ZG0IO5dpB4jmP90rk8YxUWmPc1M2Bo,68
162
162
  datachain/toolkit/split.py,sha256=ktGWzY4kyzjWyR86dhvzw-Zhl0lVk_LOX3NciTac6qo,2914
163
163
  datachain/torch/__init__.py,sha256=gIS74PoEPy4TB3X6vx9nLO0Y3sLJzsA8ckn8pRWihJM,579
164
- datachain-0.32.2.dist-info/licenses/LICENSE,sha256=8DnqK5yoPI_E50bEg_zsHKZHY2HqPy4rYN338BHQaRA,11344
165
- datachain-0.32.2.dist-info/METADATA,sha256=S_VstbtQSTQyz-Ac0c1X_giCWOOFU9zJ4CWbvkw7E_o,13607
166
- datachain-0.32.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
167
- datachain-0.32.2.dist-info/entry_points.txt,sha256=0GMJS6B_KWq0m3VT98vQI2YZodAMkn4uReZ_okga9R4,49
168
- datachain-0.32.2.dist-info/top_level.txt,sha256=lZPpdU_2jJABLNIg2kvEOBi8PtsYikbN1OdMLHk8bTg,10
169
- datachain-0.32.2.dist-info/RECORD,,
164
+ datachain-0.32.3.dist-info/licenses/LICENSE,sha256=8DnqK5yoPI_E50bEg_zsHKZHY2HqPy4rYN338BHQaRA,11344
165
+ datachain-0.32.3.dist-info/METADATA,sha256=MJCn0xaCu7eOuQl8AXKTFX4HTvPqtBPY93rCvcUcoBg,13607
166
+ datachain-0.32.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
167
+ datachain-0.32.3.dist-info/entry_points.txt,sha256=0GMJS6B_KWq0m3VT98vQI2YZodAMkn4uReZ_okga9R4,49
168
+ datachain-0.32.3.dist-info/top_level.txt,sha256=lZPpdU_2jJABLNIg2kvEOBi8PtsYikbN1OdMLHk8bTg,10
169
+ datachain-0.32.3.dist-info/RECORD,,