TypeDAL 4.3.4__tar.gz → 4.3.6__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.3.4 → typedal-4.3.6}/CHANGELOG.md +12 -0
- {typedal-4.3.4 → typedal-4.3.6}/PKG-INFO +1 -1
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/__about__.py +1 -1
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/cli.py +1 -2
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/core.py +6 -5
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_config.py +18 -0
- {typedal-4.3.4 → typedal-4.3.6}/.github/workflows/su6.yml +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/.gitignore +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/.readthedocs.yml +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/README.md +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/coverage.svg +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/docs/1_getting_started.md +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/docs/2_defining_tables.md +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/docs/3_building_queries.md +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/docs/4_relationships.md +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/docs/5_py4web.md +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/docs/6_migrations.md +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/docs/7_configuration.md +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/docs/8_mixins.md +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/docs/css/code_blocks.css +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/docs/index.md +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/docs/requirements.txt +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/example_new.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/example_old.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/mkdocs.yml +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/pyproject.toml +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/__init__.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/caching.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/config.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/constants.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/define.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/fields.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/for_py4web.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/for_web2py.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/helpers.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/mixins.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/py.typed +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/query_builder.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/relationships.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/rows.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/serializers/as_json.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/tables.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/types.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/src/typedal/web2py_py4web_shared.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/__init__.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/configs/simple.toml +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/configs/valid.env +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/configs/valid.toml +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/py314_tests.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_cli.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_docs_examples.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_helpers.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_json.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_main.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_mixins.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_mypy.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_orm.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_py4web.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_query_builder.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_relationships.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_row.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_stats.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_table.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_web2py.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/test_xx_others.py +0 -0
- {typedal-4.3.4 → typedal-4.3.6}/tests/timings.py +0 -0
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
<!--next-version-placeholder-->
|
|
4
4
|
|
|
5
|
+
## v4.3.6 (2026-01-19)
|
|
6
|
+
|
|
7
|
+
### Fix
|
|
8
|
+
|
|
9
|
+
* Ensure typedal caching respects provided 'migrate' enabled config ([`0bcc277`](https://github.com/trialandsuccess/TypeDAL/commit/0bcc2774dcec9231dc8a58438dd70d3ce29650e8))
|
|
10
|
+
|
|
11
|
+
## v4.3.5 (2026-01-09)
|
|
12
|
+
|
|
13
|
+
### Fix
|
|
14
|
+
|
|
15
|
+
* **memoize:** Broader type hints so the return type is passed properly ([`47755ed`](https://github.com/trialandsuccess/TypeDAL/commit/47755ed2010641b4a38e17d4c058a6e27f134dc9))
|
|
16
|
+
|
|
5
17
|
## v4.3.4 (2026-01-09)
|
|
6
18
|
|
|
7
19
|
### Fix
|
|
@@ -392,8 +392,7 @@ def fake_migrations(
|
|
|
392
392
|
|
|
393
393
|
previously_migrated = (
|
|
394
394
|
db(
|
|
395
|
-
db.ewh_implemented_features.name.belongs(to_fake)
|
|
396
|
-
& (db.ewh_implemented_features.installed == True) # noqa E712
|
|
395
|
+
db.ewh_implemented_features.name.belongs(to_fake) & (db.ewh_implemented_features.installed == True) # noqa E712
|
|
397
396
|
)
|
|
398
397
|
.select(db.ewh_implemented_features.name)
|
|
399
398
|
.column("name")
|
|
@@ -4,7 +4,6 @@ Core functionality of TypeDAL.
|
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
import datetime as dt
|
|
8
7
|
import sys
|
|
9
8
|
import typing as t
|
|
10
9
|
import warnings
|
|
@@ -247,7 +246,7 @@ class TypeDAL(pydal.DAL):
|
|
|
247
246
|
Try to define a model with migrate or fall back to fake migrate.
|
|
248
247
|
"""
|
|
249
248
|
try:
|
|
250
|
-
return self.define(model, migrate=
|
|
249
|
+
return self.define(model, migrate=self._migrate)
|
|
251
250
|
except Exception as e:
|
|
252
251
|
# clean up:
|
|
253
252
|
self.rollback()
|
|
@@ -258,7 +257,7 @@ class TypeDAL(pydal.DAL):
|
|
|
258
257
|
warnings.warn(f"{model} could not be migrated, try faking", source=e, category=RuntimeWarning)
|
|
259
258
|
|
|
260
259
|
# try again:
|
|
261
|
-
return self.define(model, migrate=
|
|
260
|
+
return self.define(model, migrate=self._migrate, fake_migrate=self._migrate, redefine=True)
|
|
262
261
|
|
|
263
262
|
default_kwargs: t.ClassVar[AnyDict] = {
|
|
264
263
|
# fields are 'required' (notnull) by default:
|
|
@@ -459,10 +458,12 @@ class TypeDAL(pydal.DAL):
|
|
|
459
458
|
def memoize(
|
|
460
459
|
self,
|
|
461
460
|
func: t.Callable[..., T],
|
|
462
|
-
|
|
461
|
+
# should be TypedRows[TypedTable] or TypedTable but for some reason that breaks
|
|
462
|
+
*args: t.Any,
|
|
463
463
|
key: str | None = None,
|
|
464
464
|
ttl: int | dt.timedelta | dt.datetime | None = None,
|
|
465
|
-
|
|
465
|
+
# should be P.kwargs but for some reason that breaks
|
|
466
|
+
**kwargs: t.Any,
|
|
466
467
|
) -> tuple[T, CacheStatus]:
|
|
467
468
|
"""
|
|
468
469
|
Cache the result of a function applied to TypedRow(s).
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import datetime as dt
|
|
2
2
|
import os
|
|
3
3
|
import shutil
|
|
4
|
+
import sqlite3
|
|
4
5
|
import tempfile
|
|
5
6
|
import uuid
|
|
6
7
|
from pathlib import Path
|
|
@@ -331,3 +332,20 @@ def test_uuid_fields_sqlite(at_temp_dir):
|
|
|
331
332
|
UUIDTable.insert(gid="not-a-uuid")
|
|
332
333
|
|
|
333
334
|
assert '"gid" uuid NOT NULL' in UUIDTable._sql()
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
def test_cache_migrate_disabled():
|
|
338
|
+
try:
|
|
339
|
+
os.environ["TYPEDAL_MIGRATE"] = "0"
|
|
340
|
+
|
|
341
|
+
db = TypeDAL("sqlite:memory")
|
|
342
|
+
|
|
343
|
+
assert db._migrate == False
|
|
344
|
+
with pytest.raises(sqlite3.OperationalError):
|
|
345
|
+
# should raise NotFound because migrate is disabled:
|
|
346
|
+
assert db.executesql("""
|
|
347
|
+
select * from typedal_cache;
|
|
348
|
+
""")
|
|
349
|
+
|
|
350
|
+
finally:
|
|
351
|
+
del os.environ["TYPEDAL_MIGRATE"]
|
|
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
|