TypeDAL 4.2.1__tar.gz → 4.2.2__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-4.2.1 → typedal-4.2.2}/CHANGELOG.md +6 -0
- {typedal-4.2.1 → typedal-4.2.2}/PKG-INFO +1 -1
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/__about__.py +1 -1
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/relationships.py +23 -0
- {typedal-4.2.1 → typedal-4.2.2}/.github/workflows/su6.yml +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/.gitignore +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/.readthedocs.yml +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/README.md +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/coverage.svg +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/docs/1_getting_started.md +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/docs/2_defining_tables.md +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/docs/3_building_queries.md +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/docs/4_relationships.md +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/docs/5_py4web.md +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/docs/6_migrations.md +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/docs/7_configuration.md +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/docs/8_mixins.md +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/docs/css/code_blocks.css +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/docs/index.md +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/docs/requirements.txt +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/example_new.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/example_old.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/mkdocs.yml +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/pyproject.toml +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/__init__.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/caching.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/cli.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/config.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/constants.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/core.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/define.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/fields.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/for_py4web.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/for_web2py.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/helpers.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/mixins.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/py.typed +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/query_builder.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/rows.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/serializers/as_json.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/tables.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/types.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/src/typedal/web2py_py4web_shared.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/__init__.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/configs/simple.toml +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/configs/valid.env +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/configs/valid.toml +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/py314_tests.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_cli.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_config.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_docs_examples.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_helpers.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_json.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_main.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_mixins.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_mypy.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_orm.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_py4web.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_query_builder.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_relationships.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_row.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_stats.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_table.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_web2py.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/test_xx_others.py +0 -0
- {typedal-4.2.1 → typedal-4.2.2}/tests/timings.py +0 -0
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
<!--next-version-placeholder-->
|
|
4
4
|
|
|
5
|
+
## v4.2.2 (2025-12-10)
|
|
6
|
+
|
|
7
|
+
### Fix
|
|
8
|
+
|
|
9
|
+
* Improved type hints for relationships (when join='inner') ([`e54cf91`](https://github.com/trialandsuccess/TypeDAL/commit/e54cf918461757b2fd146f1f3c7d9957c723f68c))
|
|
10
|
+
|
|
5
11
|
## v4.2.1 (2025-12-10)
|
|
6
12
|
|
|
7
13
|
### Fix
|
|
@@ -277,6 +277,28 @@ def relationship(
|
|
|
277
277
|
"""
|
|
278
278
|
|
|
279
279
|
|
|
280
|
+
@t.overload
|
|
281
|
+
def relationship(
|
|
282
|
+
_type: t.Type[To_Type] | str,
|
|
283
|
+
condition: Condition = None,
|
|
284
|
+
*,
|
|
285
|
+
join: t.Literal["inner"],
|
|
286
|
+
on: OnQuery = None,
|
|
287
|
+
lazy: LazyPolicy | None = None,
|
|
288
|
+
explicit: bool = False,
|
|
289
|
+
) -> To_Type:
|
|
290
|
+
"""
|
|
291
|
+
Define a relationship that returns a single related instance (never None with inner join).
|
|
292
|
+
|
|
293
|
+
Args:
|
|
294
|
+
_type: A type or string reference like City to indicate a single related record.
|
|
295
|
+
join: Set to 'inner' to guarantee a non-null result.
|
|
296
|
+
|
|
297
|
+
Returns:
|
|
298
|
+
A single related instance (guaranteed non-null with inner join).
|
|
299
|
+
"""
|
|
300
|
+
|
|
301
|
+
|
|
280
302
|
@t.overload
|
|
281
303
|
def relationship(
|
|
282
304
|
_type: t.Type[To_Type] | str,
|
|
@@ -313,6 +335,7 @@ def relationship(
|
|
|
313
335
|
condition: Lambda function defining the join condition between tables.
|
|
314
336
|
Example: lambda self, post: self.id == post.author
|
|
315
337
|
join: Join strategy ('left', 'inner', etc.). Defaults to 'left' when using 'on'.
|
|
338
|
+
When 'inner' is used with a single type, the result is guaranteed non-null.
|
|
316
339
|
on: Alternative to condition for complex queries with pivot tables.
|
|
317
340
|
Allows specifying multiple join conditions to avoid cross joins.
|
|
318
341
|
lazy: Controls behavior when accessing relationship data without explicitly joining:
|
|
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
|
|
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
|