lamindb 0.49.3__py3-none-any.whl → 0.50.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.
@@ -3,8 +3,8 @@ from typing import Optional
3
3
  from django.db import models
4
4
 
5
5
 
6
- class Manager(models.Manager):
7
- """Extension of Django Manager.
6
+ class QueryManager(models.Manager):
7
+ """Manage queries through fields.
8
8
 
9
9
  See Also:
10
10
 
@@ -44,9 +44,12 @@ class Manager(models.Manager):
44
44
  return [item for item in self.values_list(field, flat=True)]
45
45
 
46
46
  def df(self, **kwargs):
47
- """Convert to DataFrame."""
47
+ """Convert to DataFrame.
48
+
49
+ For `**kwargs`, see :meth:`lamindb.dev.QuerySet.df`.
50
+ """
48
51
  return self.all().df(**kwargs)
49
52
 
50
53
 
51
- setattr(models.Manager, "list", Manager.list)
52
- setattr(models.Manager, "df", Manager.df)
54
+ setattr(models.Manager, "list", QueryManager.list)
55
+ setattr(models.Manager, "df", QueryManager.df)
@@ -4,7 +4,7 @@ from typing import Iterable, List, NamedTuple, Optional
4
4
  import pandas as pd
5
5
  from django.db import models
6
6
  from lamindb_setup.dev._docs import doc_args
7
- from lnschema_core import ORM
7
+ from lnschema_core.models import Registry, SynonymsAware, ValidationAware
8
8
  from lnschema_core.types import ListLike, StrField
9
9
 
10
10
 
@@ -23,12 +23,7 @@ def format_and_convert_to_local_time(series: pd.Series):
23
23
 
24
24
 
25
25
  class QuerySet(models.QuerySet):
26
- """Extension of Django QuerySet.
27
-
28
- This brings some of the SQLAlchemy/SQLModel/SQL-inspired calls.
29
-
30
- As LaminDB was based on SQLAlchemy/SQLModel in the beginning, and might
31
- support it again in the future, these calls will be supported longtime.
26
+ """Lazily loaded queried records returned by queries.
32
27
 
33
28
  See Also:
34
29
 
@@ -114,20 +109,20 @@ class QuerySet(models.QuerySet):
114
109
  lookup_str = "__".join(split[1:])
115
110
  else:
116
111
  lookup_str = "id"
117
- ORM = self.model
118
- field = getattr(ORM, field_name)
112
+ Registry = self.model
113
+ field = getattr(Registry, field_name)
119
114
  if not isinstance(field.field, models.ManyToManyField):
120
115
  raise ValueError("Only many-to-many fields are allowed here.")
121
116
  related_ORM = (
122
117
  field.field.model
123
- if field.field.model != ORM
118
+ if field.field.model != Registry
124
119
  else field.field.related_model
125
120
  )
126
- if ORM == related_ORM:
127
- left_side_link_model = f"from_{ORM.__name__.lower()}"
128
- values_expression = f"to_{ORM.__name__.lower()}__{lookup_str}"
121
+ if Registry == related_ORM:
122
+ left_side_link_model = f"from_{Registry.__name__.lower()}"
123
+ values_expression = f"to_{Registry.__name__.lower()}__{lookup_str}"
129
124
  else:
130
- left_side_link_model = f"{ORM.__name__.lower()}"
125
+ left_side_link_model = f"{Registry.__name__.lower()}"
131
126
  values_expression = f"{related_ORM.__name__.lower()}__{lookup_str}"
132
127
  link_df = pd.DataFrame(
133
128
  field.through.objects.values(
@@ -141,7 +136,7 @@ class QuerySet(models.QuerySet):
141
136
  df.rename(columns={values_expression: expression}, inplace=True)
142
137
  return df
143
138
 
144
- def list(self, field: Optional[str] = None) -> List[ORM]:
139
+ def list(self, field: Optional[str] = None) -> List[Registry]:
145
140
  """Populate a list with the results.
146
141
 
147
142
  Examples:
@@ -160,7 +155,7 @@ class QuerySet(models.QuerySet):
160
155
  else:
161
156
  return [item for item in self.values_list(field, flat=True)]
162
157
 
163
- def first(self) -> Optional[ORM]:
158
+ def first(self) -> Optional[Registry]:
164
159
  """If non-empty, the first result in the query set, otherwise None.
165
160
 
166
161
  Examples:
@@ -173,7 +168,7 @@ class QuerySet(models.QuerySet):
173
168
  return None
174
169
  return self[0]
175
170
 
176
- def one(self) -> ORM:
171
+ def one(self) -> Registry:
177
172
  """Exactly one result. Throws error if there are more or none.
178
173
 
179
174
  Examples:
@@ -188,7 +183,7 @@ class QuerySet(models.QuerySet):
188
183
  else:
189
184
  return self[0]
190
185
 
191
- def one_or_none(self) -> Optional[ORM]:
186
+ def one_or_none(self) -> Optional[Registry]:
192
187
  """At most one result. Returns it if there is one, otherwise returns None.
193
188
 
194
189
  Examples:
@@ -205,31 +200,38 @@ class QuerySet(models.QuerySet):
205
200
  else:
206
201
  raise MultipleResultsFound
207
202
 
208
- @doc_args(ORM.search.__doc__)
203
+ @doc_args(Registry.search.__doc__)
209
204
  def search(self, string: str, **kwargs):
210
205
  """{}"""
211
- from ._orm import _search
206
+ from ._registry import _search
212
207
 
213
208
  return _search(cls=self, string=string, **kwargs)
214
209
 
215
- @doc_args(ORM.lookup.__doc__)
210
+ @doc_args(Registry.lookup.__doc__)
216
211
  def lookup(self, field: Optional[StrField] = None) -> NamedTuple:
217
212
  """{}"""
218
- from ._orm import _lookup
213
+ from ._registry import _lookup
219
214
 
220
215
  return _lookup(cls=self, field=field)
221
216
 
222
- @doc_args(ORM.inspect.__doc__)
223
- def inspect(self, identifiers: ListLike, field: StrField, **kwargs):
217
+ @doc_args(ValidationAware.validate.__doc__)
218
+ def validate(self, values: ListLike, field: StrField, **kwargs):
219
+ """{}"""
220
+ from ._validate import _validate
221
+
222
+ return _validate(cls=self, values=values, field=field, **kwargs)
223
+
224
+ @doc_args(ValidationAware.inspect.__doc__)
225
+ def inspect(self, values: ListLike, field: StrField, **kwargs):
224
226
  """{}"""
225
- from ._orm import _inspect
227
+ from ._validate import _inspect
226
228
 
227
- return _inspect(cls=self, identifiers=identifiers, field=field, **kwargs)
229
+ return _inspect(cls=self, values=values, field=field, **kwargs)
228
230
 
229
- @doc_args(ORM.map_synonyms.__doc__)
231
+ @doc_args(SynonymsAware.map_synonyms.__doc__)
230
232
  def map_synonyms(self, synonyms: Iterable, **kwargs):
231
233
  """{}"""
232
- from ._orm import _map_synonyms
234
+ from ._synonym import _map_synonyms
233
235
 
234
236
  return _map_synonyms(cls=self, synonyms=synonyms, **kwargs)
235
237
 
@@ -241,5 +243,6 @@ setattr(models.QuerySet, "one", QuerySet.one)
241
243
  setattr(models.QuerySet, "one_or_none", QuerySet.one_or_none)
242
244
  setattr(models.QuerySet, "search", QuerySet.search)
243
245
  setattr(models.QuerySet, "lookup", QuerySet.lookup)
246
+ setattr(models.QuerySet, "validate", QuerySet.validate)
244
247
  setattr(models.QuerySet, "inspect", QuerySet.inspect)
245
248
  setattr(models.QuerySet, "map_synonyms", QuerySet.map_synonyms)