TypeDAL 4.4.1__tar.gz → 4.4.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.4.1 → typedal-4.4.2}/CHANGELOG.md +6 -0
- {typedal-4.4.1 → typedal-4.4.2}/PKG-INFO +1 -1
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/__about__.py +1 -1
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/caching.py +6 -21
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_relationships.py +1 -1
- {typedal-4.4.1 → typedal-4.4.2}/.crush/.gitignore +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/.crush/crush.db-shm +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/.crush/crush.db-wal +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/.crush/init +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/.crush/logs/crush.log +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/.github/workflows/su6.yml +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/.gitignore +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/.readthedocs.yml +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/README.md +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/coverage.svg +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/docs/1_getting_started.md +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/docs/2_defining_tables.md +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/docs/3_building_queries.md +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/docs/4_relationships.md +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/docs/5_py4web.md +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/docs/6_migrations.md +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/docs/7_configuration.md +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/docs/8_mixins.md +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/docs/9_memoization.md +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/docs/css/code_blocks.css +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/docs/index.md +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/docs/requirements.txt +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/example_new.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/example_old.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/mkdocs.yml +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/pyproject.toml +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/__init__.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/cli.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/config.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/constants.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/core.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/define.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/fields.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/for_py4web.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/for_web2py.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/helpers.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/mixins.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/py.typed +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/query_builder.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/relationships.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/rows.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/serializers/as_json.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/tables.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/types.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/src/typedal/web2py_py4web_shared.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/__init__.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/configs/simple.toml +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/configs/valid.env +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/configs/valid.toml +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/py314_tests.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_cli.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_config.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_docs_examples.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_helpers.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_json.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_main.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_mixins.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_mypy.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_orm.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_py4web.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_query_builder.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_row.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_stats.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_table.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_web2py.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/test_xx_others.py +0 -0
- {typedal-4.4.1 → typedal-4.4.2}/tests/timings.py +0 -0
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
<!--next-version-placeholder-->
|
|
4
4
|
|
|
5
|
+
## v4.4.2 (2026-01-26)
|
|
6
|
+
|
|
7
|
+
### Fix
|
|
8
|
+
|
|
9
|
+
* **memoize:** Simplify `related_tables` logic by just looking at the raw Rows.fields ([`3dee337`](https://github.com/trialandsuccess/TypeDAL/commit/3dee3379a2bbcd493be273344303aff0aff069a7))
|
|
10
|
+
|
|
5
11
|
## v4.4.1 (2026-01-26)
|
|
6
12
|
|
|
7
13
|
### Fix
|
|
@@ -577,30 +577,15 @@ def memoize(
|
|
|
577
577
|
return cached, "cached"
|
|
578
578
|
# Cache miss - compute result
|
|
579
579
|
|
|
580
|
-
def track_execute(
|
|
580
|
+
def track_execute(_qb: "QueryBuilder[t.Any]", raw: Rows):
|
|
581
581
|
# find dependant table+id combinations, includes relationships:
|
|
582
582
|
deps.update(_determine_dependencies_auto(raw))
|
|
583
583
|
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
{
|
|
590
|
-
# original table
|
|
591
|
-
str(qb.model)
|
|
592
|
-
}
|
|
593
|
-
| {
|
|
594
|
-
# other tables in select()
|
|
595
|
-
_get_table_name(arg)
|
|
596
|
-
for arg in qb.select_args
|
|
597
|
-
}
|
|
598
|
-
| {
|
|
599
|
-
# other tables in relationships
|
|
600
|
-
str(r.table)
|
|
601
|
-
for r in qb.relationships.values()
|
|
602
|
-
}
|
|
603
|
-
)
|
|
584
|
+
related_tables = {
|
|
585
|
+
# skip qb.select, just look at the final fields in the raw data:
|
|
586
|
+
_get_table_name(field)
|
|
587
|
+
for field in raw.fields
|
|
588
|
+
}
|
|
604
589
|
|
|
605
590
|
# mark dependency for every relevant table in this query without id:
|
|
606
591
|
deps.update({(table, 0) for table in related_tables})
|
|
@@ -789,7 +789,7 @@ def test_memoize_with_empty_table():
|
|
|
789
789
|
|
|
790
790
|
# Memoize a function with empty table
|
|
791
791
|
def get_all_users() -> list[str]:
|
|
792
|
-
users = User.join().select(
|
|
792
|
+
users = User.join().select("user.name").execute() # also tests execute instead of collect
|
|
793
793
|
return [user[User.name] for user in users]
|
|
794
794
|
|
|
795
795
|
# First call with empty table
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|