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.
Files changed (66) hide show
  1. {typedal-4.3.4 → typedal-4.3.6}/CHANGELOG.md +12 -0
  2. {typedal-4.3.4 → typedal-4.3.6}/PKG-INFO +1 -1
  3. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/__about__.py +1 -1
  4. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/cli.py +1 -2
  5. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/core.py +6 -5
  6. {typedal-4.3.4 → typedal-4.3.6}/tests/test_config.py +18 -0
  7. {typedal-4.3.4 → typedal-4.3.6}/.github/workflows/su6.yml +0 -0
  8. {typedal-4.3.4 → typedal-4.3.6}/.gitignore +0 -0
  9. {typedal-4.3.4 → typedal-4.3.6}/.readthedocs.yml +0 -0
  10. {typedal-4.3.4 → typedal-4.3.6}/README.md +0 -0
  11. {typedal-4.3.4 → typedal-4.3.6}/coverage.svg +0 -0
  12. {typedal-4.3.4 → typedal-4.3.6}/docs/1_getting_started.md +0 -0
  13. {typedal-4.3.4 → typedal-4.3.6}/docs/2_defining_tables.md +0 -0
  14. {typedal-4.3.4 → typedal-4.3.6}/docs/3_building_queries.md +0 -0
  15. {typedal-4.3.4 → typedal-4.3.6}/docs/4_relationships.md +0 -0
  16. {typedal-4.3.4 → typedal-4.3.6}/docs/5_py4web.md +0 -0
  17. {typedal-4.3.4 → typedal-4.3.6}/docs/6_migrations.md +0 -0
  18. {typedal-4.3.4 → typedal-4.3.6}/docs/7_configuration.md +0 -0
  19. {typedal-4.3.4 → typedal-4.3.6}/docs/8_mixins.md +0 -0
  20. {typedal-4.3.4 → typedal-4.3.6}/docs/css/code_blocks.css +0 -0
  21. {typedal-4.3.4 → typedal-4.3.6}/docs/index.md +0 -0
  22. {typedal-4.3.4 → typedal-4.3.6}/docs/requirements.txt +0 -0
  23. {typedal-4.3.4 → typedal-4.3.6}/example_new.py +0 -0
  24. {typedal-4.3.4 → typedal-4.3.6}/example_old.py +0 -0
  25. {typedal-4.3.4 → typedal-4.3.6}/mkdocs.yml +0 -0
  26. {typedal-4.3.4 → typedal-4.3.6}/pyproject.toml +0 -0
  27. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/__init__.py +0 -0
  28. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/caching.py +0 -0
  29. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/config.py +0 -0
  30. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/constants.py +0 -0
  31. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/define.py +0 -0
  32. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/fields.py +0 -0
  33. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/for_py4web.py +0 -0
  34. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/for_web2py.py +0 -0
  35. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/helpers.py +0 -0
  36. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/mixins.py +0 -0
  37. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/py.typed +0 -0
  38. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/query_builder.py +0 -0
  39. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/relationships.py +0 -0
  40. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/rows.py +0 -0
  41. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/serializers/as_json.py +0 -0
  42. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/tables.py +0 -0
  43. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/types.py +0 -0
  44. {typedal-4.3.4 → typedal-4.3.6}/src/typedal/web2py_py4web_shared.py +0 -0
  45. {typedal-4.3.4 → typedal-4.3.6}/tests/__init__.py +0 -0
  46. {typedal-4.3.4 → typedal-4.3.6}/tests/configs/simple.toml +0 -0
  47. {typedal-4.3.4 → typedal-4.3.6}/tests/configs/valid.env +0 -0
  48. {typedal-4.3.4 → typedal-4.3.6}/tests/configs/valid.toml +0 -0
  49. {typedal-4.3.4 → typedal-4.3.6}/tests/py314_tests.py +0 -0
  50. {typedal-4.3.4 → typedal-4.3.6}/tests/test_cli.py +0 -0
  51. {typedal-4.3.4 → typedal-4.3.6}/tests/test_docs_examples.py +0 -0
  52. {typedal-4.3.4 → typedal-4.3.6}/tests/test_helpers.py +0 -0
  53. {typedal-4.3.4 → typedal-4.3.6}/tests/test_json.py +0 -0
  54. {typedal-4.3.4 → typedal-4.3.6}/tests/test_main.py +0 -0
  55. {typedal-4.3.4 → typedal-4.3.6}/tests/test_mixins.py +0 -0
  56. {typedal-4.3.4 → typedal-4.3.6}/tests/test_mypy.py +0 -0
  57. {typedal-4.3.4 → typedal-4.3.6}/tests/test_orm.py +0 -0
  58. {typedal-4.3.4 → typedal-4.3.6}/tests/test_py4web.py +0 -0
  59. {typedal-4.3.4 → typedal-4.3.6}/tests/test_query_builder.py +0 -0
  60. {typedal-4.3.4 → typedal-4.3.6}/tests/test_relationships.py +0 -0
  61. {typedal-4.3.4 → typedal-4.3.6}/tests/test_row.py +0 -0
  62. {typedal-4.3.4 → typedal-4.3.6}/tests/test_stats.py +0 -0
  63. {typedal-4.3.4 → typedal-4.3.6}/tests/test_table.py +0 -0
  64. {typedal-4.3.4 → typedal-4.3.6}/tests/test_web2py.py +0 -0
  65. {typedal-4.3.4 → typedal-4.3.6}/tests/test_xx_others.py +0 -0
  66. {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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: TypeDAL
3
- Version: 4.3.4
3
+ Version: 4.3.6
4
4
  Summary: Typing support for PyDAL
5
5
  Project-URL: Documentation, https://typedal.readthedocs.io/
6
6
  Project-URL: Issues, https://github.com/trialandsuccess/TypeDAL/issues
@@ -5,4 +5,4 @@ This file contains the Version info for this package.
5
5
  # SPDX-FileCopyrightText: 2023-present Robin van der Noord <robinvandernoord@gmail.com>
6
6
  #
7
7
  # SPDX-License-Identifier: MIT
8
- __version__ = "4.3.4"
8
+ __version__ = "4.3.6"
@@ -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=True)
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=True, fake_migrate=True, redefine=True)
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
- *args: TypedRows[t.Type[TypedTable]] | TypedTable, # type: ignore
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
- **kwargs: t.Any, # P.kwargs would be nice but they don't work without .args
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