TypeDAL 3.15.0__tar.gz → 3.15.1__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.
Potentially problematic release.
This version of TypeDAL might be problematic. Click here for more details.
- {typedal-3.15.0 → typedal-3.15.1}/CHANGELOG.md +6 -0
- {typedal-3.15.0 → typedal-3.15.1}/PKG-INFO +1 -1
- {typedal-3.15.0 → typedal-3.15.1}/src/typedal/__about__.py +1 -1
- {typedal-3.15.0 → typedal-3.15.1}/src/typedal/core.py +9 -3
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_main.py +4 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_query_builder.py +6 -2
- {typedal-3.15.0 → typedal-3.15.1}/.github/workflows/su6.yml +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/.gitignore +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/.readthedocs.yml +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/README.md +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/coverage.svg +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/docs/1_getting_started.md +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/docs/2_defining_tables.md +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/docs/3_building_queries.md +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/docs/4_relationships.md +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/docs/5_py4web.md +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/docs/6_migrations.md +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/docs/7_mixins.md +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/docs/css/code_blocks.css +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/docs/index.md +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/docs/requirements.txt +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/example_new.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/example_old.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/mkdocs.yml +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/pyproject.toml +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/src/typedal/__init__.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/src/typedal/caching.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/src/typedal/cli.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/src/typedal/config.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/src/typedal/fields.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/src/typedal/for_py4web.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/src/typedal/for_web2py.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/src/typedal/helpers.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/src/typedal/mixins.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/src/typedal/py.typed +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/src/typedal/serializers/as_json.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/src/typedal/types.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/src/typedal/web2py_py4web_shared.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/__init__.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/configs/simple.toml +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/configs/valid.env +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/configs/valid.toml +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_cli.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_config.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_docs_examples.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_helpers.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_json.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_mixins.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_mypy.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_orm.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_py4web.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_relationships.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_row.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_stats.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_table.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_web2py.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/test_xx_others.py +0 -0
- {typedal-3.15.0 → typedal-3.15.1}/tests/timings.py +0 -0
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
<!--next-version-placeholder-->
|
|
4
4
|
|
|
5
|
+
## v3.15.1 (2025-07-14)
|
|
6
|
+
|
|
7
|
+
### Fix
|
|
8
|
+
|
|
9
|
+
* **find_model:** Map both name and rname ([`e402d66`](https://github.com/trialandsuccess/TypeDAL/commit/e402d6659516d119fd3bd3fc28cea32b360aa068))
|
|
10
|
+
|
|
5
11
|
## v3.15.0 (2025-06-23)
|
|
6
12
|
|
|
7
13
|
### Feature
|
|
@@ -120,7 +120,8 @@ OnQuery: typing.TypeAlias = typing.Optional[
|
|
|
120
120
|
]
|
|
121
121
|
]
|
|
122
122
|
|
|
123
|
-
To_Type = typing.TypeVar("To_Type", type[Any], Type[Any], str)
|
|
123
|
+
# To_Type = typing.TypeVar("To_Type", type[Any], Type[Any], str)
|
|
124
|
+
To_Type = typing.TypeVar("To_Type")
|
|
124
125
|
|
|
125
126
|
|
|
126
127
|
class Relationship(typing.Generic[To_Type]):
|
|
@@ -201,6 +202,7 @@ class Relationship(typing.Generic[To_Type]):
|
|
|
201
202
|
Get the table this relationship is bound to.
|
|
202
203
|
"""
|
|
203
204
|
table = self.table # can be a string because db wasn't available yet
|
|
205
|
+
|
|
204
206
|
if isinstance(table, str):
|
|
205
207
|
if mapped := db._class_map.get(table):
|
|
206
208
|
# yay
|
|
@@ -249,7 +251,9 @@ class Relationship(typing.Generic[To_Type]):
|
|
|
249
251
|
return None
|
|
250
252
|
|
|
251
253
|
|
|
252
|
-
def relationship(
|
|
254
|
+
def relationship(
|
|
255
|
+
_type: typing.Type[To_Type], condition: Condition = None, join: JOIN_OPTIONS = None, on: OnQuery = None
|
|
256
|
+
) -> To_Type:
|
|
253
257
|
"""
|
|
254
258
|
Define a relationship to another table, when its id is not stored in the current table.
|
|
255
259
|
|
|
@@ -584,7 +588,9 @@ class TypeDAL(pydal.DAL): # type: ignore
|
|
|
584
588
|
# by now, all relationships should be instances!
|
|
585
589
|
relationships=typing.cast(dict[str, Relationship[Any]], relationships),
|
|
586
590
|
)
|
|
591
|
+
# map both name and rname:
|
|
587
592
|
self._class_map[str(table)] = cls
|
|
593
|
+
self._class_map[table._rname] = cls
|
|
588
594
|
cls.__on_define__(self)
|
|
589
595
|
else:
|
|
590
596
|
warnings.warn("db.define used without inheriting TypedTable. This could lead to strange problems!")
|
|
@@ -713,7 +719,7 @@ class TypeDAL(pydal.DAL): # type: ignore
|
|
|
713
719
|
table class matches the input name.
|
|
714
720
|
|
|
715
721
|
Args:
|
|
716
|
-
table_name: The
|
|
722
|
+
table_name: The rname of the table to retrieve the mapped class for.
|
|
717
723
|
|
|
718
724
|
Returns:
|
|
719
725
|
The mapped table class if it exists, otherwise None.
|
|
@@ -171,6 +171,10 @@ def test_mixed_defines(capsys):
|
|
|
171
171
|
assert db.find_model("first_new_syntax") is FirstNewSyntax
|
|
172
172
|
assert db.find_model("second_new_syntax") is SecondNewSyntax
|
|
173
173
|
|
|
174
|
+
assert db.find_model(db.old_syntax._rname) is None
|
|
175
|
+
assert db.find_model(FirstNewSyntax._rname) is FirstNewSyntax
|
|
176
|
+
assert db.find_model(SecondNewSyntax._rname) is SecondNewSyntax
|
|
177
|
+
|
|
174
178
|
|
|
175
179
|
def test_dont_allow_bool_in_query():
|
|
176
180
|
with pytest.raises(ValueError):
|
|
@@ -222,8 +222,12 @@ def test_select():
|
|
|
222
222
|
assert not partial.number
|
|
223
223
|
assert not partial.yet_another
|
|
224
224
|
|
|
225
|
-
|
|
226
|
-
|
|
225
|
+
other = partial.relations[0]
|
|
226
|
+
|
|
227
|
+
assert isinstance(other, TestRelationship)
|
|
228
|
+
|
|
229
|
+
assert not other.name
|
|
230
|
+
assert other.value
|
|
227
231
|
|
|
228
232
|
|
|
229
233
|
def test_paginate():
|
|
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
|
|
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
|
|
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
|