TypeDAL 3.9.2__tar.gz → 3.9.4__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.9.2 → typedal-3.9.4}/CHANGELOG.md +12 -0
- {typedal-3.9.2 → typedal-3.9.4}/PKG-INFO +1 -1
- {typedal-3.9.2 → typedal-3.9.4}/pyproject.toml +1 -1
- {typedal-3.9.2 → typedal-3.9.4}/src/typedal/__about__.py +1 -1
- {typedal-3.9.2 → typedal-3.9.4}/src/typedal/for_py4web.py +3 -3
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_py4web.py +30 -1
- {typedal-3.9.2 → typedal-3.9.4}/.github/workflows/su6.yml +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/.gitignore +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/.readthedocs.yml +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/README.md +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/coverage.svg +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/docs/1_getting_started.md +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/docs/2_defining_tables.md +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/docs/3_building_queries.md +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/docs/4_relationships.md +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/docs/5_py4web.md +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/docs/6_migrations.md +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/docs/7_mixins.md +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/docs/css/code_blocks.css +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/docs/index.md +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/docs/requirements.txt +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/example_new.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/example_old.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/mkdocs.yml +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/src/typedal/__init__.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/src/typedal/caching.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/src/typedal/cli.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/src/typedal/config.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/src/typedal/core.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/src/typedal/fields.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/src/typedal/for_web2py.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/src/typedal/helpers.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/src/typedal/mixins.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/src/typedal/py.typed +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/src/typedal/serializers/as_json.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/src/typedal/types.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/src/typedal/web2py_py4web_shared.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/__init__.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/configs/simple.toml +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/configs/valid.env +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/configs/valid.toml +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_cli.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_config.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_docs_examples.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_helpers.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_json.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_main.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_mixins.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_mypy.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_orm.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_query_builder.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_relationships.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_row.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_stats.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_table.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_web2py.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/test_xx_others.py +0 -0
- {typedal-3.9.2 → typedal-3.9.4}/tests/timings.py +0 -0
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
<!--next-version-placeholder-->
|
|
4
4
|
|
|
5
|
+
## v3.9.4 (2024-11-10)
|
|
6
|
+
|
|
7
|
+
### Fix
|
|
8
|
+
|
|
9
|
+
* **p4w:** Calling `for_py4web.DAL()` without any arguments (to load from config) should work even with singleton ([`16f9e68`](https://github.com/trialandsuccess/TypeDAL/commit/16f9e681eaac2fccd06a110031c0d55261a0a7e9))
|
|
10
|
+
|
|
11
|
+
## v3.9.3 (2024-11-08)
|
|
12
|
+
|
|
13
|
+
### Fix
|
|
14
|
+
|
|
15
|
+
* **p4w:** Actually passing the 'uri' to connect to a database in singleton mode would be pretty useful no? ([`e29a0bb`](https://github.com/trialandsuccess/TypeDAL/commit/e29a0bbb1b3f954d7f8a3c13704952f8ec42a799))
|
|
16
|
+
|
|
5
17
|
## v3.9.2 (2024-11-08)
|
|
6
18
|
|
|
7
19
|
### Fix
|
|
@@ -8,7 +8,7 @@ dynamic = ["version"]
|
|
|
8
8
|
description = 'Typing support for PyDAL'
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
11
|
-
#license = "MIT"
|
|
11
|
+
# license = "MIT"
|
|
12
12
|
keywords = []
|
|
13
13
|
authors = [
|
|
14
14
|
{ name = "Robin van der Noord", email = "contact@trialandsuccess.nl" },
|
|
@@ -24,10 +24,10 @@ class Fixture(_Fixture): # type: ignore
|
|
|
24
24
|
class PY4WEB_DAL_SINGLETON(MetaDAL):
|
|
25
25
|
_instances: typing.ClassVar[typing.MutableMapping[str, AnyType]] = {}
|
|
26
26
|
|
|
27
|
-
def __call__(cls, uri: str, *args: typing.Any, **kwargs: typing.Any) -> AnyType:
|
|
28
|
-
db_uid = kwargs.get("db_uid", hashlib_md5(repr(uri)).hexdigest())
|
|
27
|
+
def __call__(cls, uri: typing.Optional[str] = None, *args: typing.Any, **kwargs: typing.Any) -> AnyType:
|
|
28
|
+
db_uid = kwargs.get("db_uid", hashlib_md5(repr(uri or (args, kwargs))).hexdigest())
|
|
29
29
|
if db_uid not in cls._instances:
|
|
30
|
-
cls._instances[db_uid] = super().__call__(*args, **kwargs)
|
|
30
|
+
cls._instances[db_uid] = super().__call__(uri, *args, **kwargs)
|
|
31
31
|
|
|
32
32
|
return cls._instances[db_uid]
|
|
33
33
|
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import tempfile
|
|
3
|
-
from
|
|
3
|
+
from contextlib_chdir import chdir
|
|
4
4
|
|
|
5
5
|
from pydal.validators import IS_EMAIL, IS_NOT_IN_DB
|
|
6
6
|
|
|
7
7
|
from src.typedal import TypedTable
|
|
8
8
|
from src.typedal.for_py4web import DAL, AuthUser, setup_py4web_tables
|
|
9
9
|
from src.typedal.serializers import as_json
|
|
10
|
+
from typedal.config import TypeDALConfig
|
|
10
11
|
|
|
11
12
|
db = DAL("sqlite:memory")
|
|
12
13
|
|
|
@@ -59,10 +60,38 @@ def test_py4web_dal_singleton():
|
|
|
59
60
|
db_2a = DAL("sqlite://test_py4web_dal_singleton", folder=d, enable_typedal_caching=False)
|
|
60
61
|
db_2b = DAL("sqlite://test_py4web_dal_singleton", folder=d, enable_typedal_caching=False)
|
|
61
62
|
|
|
63
|
+
conf = {
|
|
64
|
+
"database": "sqlite:memory",
|
|
65
|
+
"dialect": "sqlite",
|
|
66
|
+
"pyproject": "",
|
|
67
|
+
"flag_location": f"{d}/flags"
|
|
68
|
+
}
|
|
69
|
+
db_3a = DAL(config=TypeDALConfig.load(conf))
|
|
70
|
+
db_3b = DAL(config=TypeDALConfig.load(conf))
|
|
71
|
+
|
|
62
72
|
assert db_1a is db_1b
|
|
73
|
+
assert db_1a._uri == db_1b._uri
|
|
74
|
+
assert db_1a._db_uid == db_1b._db_uid
|
|
75
|
+
|
|
63
76
|
assert db_2a is db_2b
|
|
77
|
+
assert db_2a._uri == db_2b._uri
|
|
78
|
+
assert db_2a._db_uid == db_2b._db_uid
|
|
79
|
+
|
|
64
80
|
assert db_1a is not db_2a
|
|
81
|
+
assert db_1a._uri != db_2a._uri
|
|
82
|
+
assert db_1a._db_uid != db_2a._db_uid
|
|
83
|
+
|
|
65
84
|
assert db_1b is not db_2b
|
|
85
|
+
assert db_1b._uri != db_2b._uri
|
|
86
|
+
assert db_1b._db_uid != db_2b._db_uid
|
|
87
|
+
|
|
88
|
+
assert db_3a is db_3b
|
|
89
|
+
assert db_3a is not db_1a
|
|
90
|
+
assert db_3a is not db_2a
|
|
91
|
+
|
|
92
|
+
assert db_1a._uri == db_1b._uri
|
|
93
|
+
assert db_3a._uri == db_1a._uri
|
|
94
|
+
assert db_3a._uri != db_2a._uri
|
|
66
95
|
|
|
67
96
|
# reset singletons for later use:
|
|
68
97
|
DAL._clear()
|
|
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
|