TypeDAL 5.0.2__tar.gz → 5.0.4__tar.gz
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.
- {typedal-5.0.2 → typedal-5.0.4}/PKG-INFO +1 -1
- {typedal-5.0.2 → typedal-5.0.4}/pyproject.toml +1 -1
- {typedal-5.0.2 → typedal-5.0.4}/pyproject.toml.orig +1 -1
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/cli.py +1 -1
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/fields.py +1 -1
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/tables.py +1 -1
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/types.py +20 -5
- {typedal-5.0.2 → typedal-5.0.4}/README.md +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/__about__.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/__init__.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/asynchronous.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/caching.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/config.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/constants.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/core.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/define.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/enum_helpers.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/for_py4web.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/for_web2py.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/helpers.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/mixins.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/py.typed +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/query_builder.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/relationships.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/rows.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/serializers/as_json.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/serializers/typescript.py +0 -0
- {typedal-5.0.2 → typedal-5.0.4}/src/typedal/web2py_py4web_shared.py +0 -0
|
@@ -226,7 +226,7 @@ def setup(
|
|
|
226
226
|
data.pop("connection", None)
|
|
227
227
|
|
|
228
228
|
# ignore any None:
|
|
229
|
-
old_contents["tool"]["typedal"] = {k: v for k, v in data.items() if v is not None}
|
|
229
|
+
old_contents["tool"]["typedal"] = {k: v for k, v in data.items() if v is not None}
|
|
230
230
|
|
|
231
231
|
with toml_path.open("w") as f:
|
|
232
232
|
tomlkit.dump(old_contents, f)
|
|
@@ -198,7 +198,7 @@ class TypedField[T_Value](Expression): # pragma: no cover
|
|
|
198
198
|
self._field = t.cast(Field, field)
|
|
199
199
|
|
|
200
200
|
def unbind(self) -> None:
|
|
201
|
-
"""Remove references to the pydal objects created during
|
|
201
|
+
"""Remove references to the pydal objects created during `bind`."""
|
|
202
202
|
if getattr(self, "requires", None):
|
|
203
203
|
if isinstance(self.requires, list):
|
|
204
204
|
self.requires.clear()
|
|
@@ -126,7 +126,7 @@ class TableMeta(type):
|
|
|
126
126
|
self._permissions = merge_permissions(permissions)
|
|
127
127
|
|
|
128
128
|
def unbind(self) -> None:
|
|
129
|
-
"""Remove the database bindings created by
|
|
129
|
+
"""Remove the database bindings created by `db.define`."""
|
|
130
130
|
for value in self.__dict__.values():
|
|
131
131
|
if isinstance(value, TypedField):
|
|
132
132
|
value.unbind()
|
|
@@ -104,9 +104,9 @@ class TableProtocol(t.Protocol): # pragma: no cover
|
|
|
104
104
|
Type checkers cannot infer the owning table from a relationship's
|
|
105
105
|
class-body assignment, and forward references can also obscure the
|
|
106
106
|
related table. PyDAL exposes table fields dynamically, so arbitrary
|
|
107
|
-
field access must remain permissive here. Because
|
|
108
|
-
returns
|
|
109
|
-
relationship callbacks; for example,
|
|
107
|
+
field access must remain permissive here. Because `__getattr__`
|
|
108
|
+
returns `Any`, type checkers do not validate field names in
|
|
109
|
+
relationship callbacks; for example, `self.fakefield` is accepted
|
|
110
110
|
even when no such field exists.
|
|
111
111
|
"""
|
|
112
112
|
|
|
@@ -203,6 +203,18 @@ class Field(_Field):
|
|
|
203
203
|
|
|
204
204
|
_rname: str
|
|
205
205
|
|
|
206
|
+
def __eq__(self, other: t.Any) -> Query: # type: ignore[override]
|
|
207
|
+
"""Comparing fields produces a PyDAL query."""
|
|
208
|
+
return t.cast(Query, super().__eq__(other))
|
|
209
|
+
|
|
210
|
+
def __ne__(self, other: t.Any) -> Query: # type: ignore[override]
|
|
211
|
+
"""Comparing fields produces a PyDAL query."""
|
|
212
|
+
return t.cast(Query, super().__ne__(other))
|
|
213
|
+
|
|
214
|
+
def __hash__(self) -> int:
|
|
215
|
+
"""Keep fields hashable after overriding equality."""
|
|
216
|
+
return super().__hash__()
|
|
217
|
+
|
|
206
218
|
|
|
207
219
|
class Rows(_Rows):
|
|
208
220
|
"""Pydal Rows object. Make mypy happy."""
|
|
@@ -418,9 +430,12 @@ type P_Table = TableProtocol
|
|
|
418
430
|
|
|
419
431
|
type QueryLike = Query | _Query | bool
|
|
420
432
|
|
|
421
|
-
type Condition = t.
|
|
433
|
+
type Condition = t.Callable[[type["TypedTable"], type["TypedTable"]], QueryLike] | None
|
|
422
434
|
|
|
423
|
-
|
|
435
|
+
# An `on` callback can include an alias binding for later join expressions.
|
|
436
|
+
# QueryBuilder ignores table entries when it constructs the actual joins.
|
|
437
|
+
type OnQueryItem = Expression | _Expression | t.Type["TypedTable"]
|
|
438
|
+
type OnQuery = t.Callable[[P_Table, P_Table], t.Sequence[OnQueryItem]] | None
|
|
424
439
|
|
|
425
440
|
type CacheModel = t.Callable[[str, CacheFn, int], Rows]
|
|
426
441
|
type CacheTuple = tuple[CacheModel, int]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|