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.

Files changed (58) hide show
  1. {typedal-3.9.2 → typedal-3.9.4}/CHANGELOG.md +12 -0
  2. {typedal-3.9.2 → typedal-3.9.4}/PKG-INFO +1 -1
  3. {typedal-3.9.2 → typedal-3.9.4}/pyproject.toml +1 -1
  4. {typedal-3.9.2 → typedal-3.9.4}/src/typedal/__about__.py +1 -1
  5. {typedal-3.9.2 → typedal-3.9.4}/src/typedal/for_py4web.py +3 -3
  6. {typedal-3.9.2 → typedal-3.9.4}/tests/test_py4web.py +30 -1
  7. {typedal-3.9.2 → typedal-3.9.4}/.github/workflows/su6.yml +0 -0
  8. {typedal-3.9.2 → typedal-3.9.4}/.gitignore +0 -0
  9. {typedal-3.9.2 → typedal-3.9.4}/.readthedocs.yml +0 -0
  10. {typedal-3.9.2 → typedal-3.9.4}/README.md +0 -0
  11. {typedal-3.9.2 → typedal-3.9.4}/coverage.svg +0 -0
  12. {typedal-3.9.2 → typedal-3.9.4}/docs/1_getting_started.md +0 -0
  13. {typedal-3.9.2 → typedal-3.9.4}/docs/2_defining_tables.md +0 -0
  14. {typedal-3.9.2 → typedal-3.9.4}/docs/3_building_queries.md +0 -0
  15. {typedal-3.9.2 → typedal-3.9.4}/docs/4_relationships.md +0 -0
  16. {typedal-3.9.2 → typedal-3.9.4}/docs/5_py4web.md +0 -0
  17. {typedal-3.9.2 → typedal-3.9.4}/docs/6_migrations.md +0 -0
  18. {typedal-3.9.2 → typedal-3.9.4}/docs/7_mixins.md +0 -0
  19. {typedal-3.9.2 → typedal-3.9.4}/docs/css/code_blocks.css +0 -0
  20. {typedal-3.9.2 → typedal-3.9.4}/docs/index.md +0 -0
  21. {typedal-3.9.2 → typedal-3.9.4}/docs/requirements.txt +0 -0
  22. {typedal-3.9.2 → typedal-3.9.4}/example_new.py +0 -0
  23. {typedal-3.9.2 → typedal-3.9.4}/example_old.py +0 -0
  24. {typedal-3.9.2 → typedal-3.9.4}/mkdocs.yml +0 -0
  25. {typedal-3.9.2 → typedal-3.9.4}/src/typedal/__init__.py +0 -0
  26. {typedal-3.9.2 → typedal-3.9.4}/src/typedal/caching.py +0 -0
  27. {typedal-3.9.2 → typedal-3.9.4}/src/typedal/cli.py +0 -0
  28. {typedal-3.9.2 → typedal-3.9.4}/src/typedal/config.py +0 -0
  29. {typedal-3.9.2 → typedal-3.9.4}/src/typedal/core.py +0 -0
  30. {typedal-3.9.2 → typedal-3.9.4}/src/typedal/fields.py +0 -0
  31. {typedal-3.9.2 → typedal-3.9.4}/src/typedal/for_web2py.py +0 -0
  32. {typedal-3.9.2 → typedal-3.9.4}/src/typedal/helpers.py +0 -0
  33. {typedal-3.9.2 → typedal-3.9.4}/src/typedal/mixins.py +0 -0
  34. {typedal-3.9.2 → typedal-3.9.4}/src/typedal/py.typed +0 -0
  35. {typedal-3.9.2 → typedal-3.9.4}/src/typedal/serializers/as_json.py +0 -0
  36. {typedal-3.9.2 → typedal-3.9.4}/src/typedal/types.py +0 -0
  37. {typedal-3.9.2 → typedal-3.9.4}/src/typedal/web2py_py4web_shared.py +0 -0
  38. {typedal-3.9.2 → typedal-3.9.4}/tests/__init__.py +0 -0
  39. {typedal-3.9.2 → typedal-3.9.4}/tests/configs/simple.toml +0 -0
  40. {typedal-3.9.2 → typedal-3.9.4}/tests/configs/valid.env +0 -0
  41. {typedal-3.9.2 → typedal-3.9.4}/tests/configs/valid.toml +0 -0
  42. {typedal-3.9.2 → typedal-3.9.4}/tests/test_cli.py +0 -0
  43. {typedal-3.9.2 → typedal-3.9.4}/tests/test_config.py +0 -0
  44. {typedal-3.9.2 → typedal-3.9.4}/tests/test_docs_examples.py +0 -0
  45. {typedal-3.9.2 → typedal-3.9.4}/tests/test_helpers.py +0 -0
  46. {typedal-3.9.2 → typedal-3.9.4}/tests/test_json.py +0 -0
  47. {typedal-3.9.2 → typedal-3.9.4}/tests/test_main.py +0 -0
  48. {typedal-3.9.2 → typedal-3.9.4}/tests/test_mixins.py +0 -0
  49. {typedal-3.9.2 → typedal-3.9.4}/tests/test_mypy.py +0 -0
  50. {typedal-3.9.2 → typedal-3.9.4}/tests/test_orm.py +0 -0
  51. {typedal-3.9.2 → typedal-3.9.4}/tests/test_query_builder.py +0 -0
  52. {typedal-3.9.2 → typedal-3.9.4}/tests/test_relationships.py +0 -0
  53. {typedal-3.9.2 → typedal-3.9.4}/tests/test_row.py +0 -0
  54. {typedal-3.9.2 → typedal-3.9.4}/tests/test_stats.py +0 -0
  55. {typedal-3.9.2 → typedal-3.9.4}/tests/test_table.py +0 -0
  56. {typedal-3.9.2 → typedal-3.9.4}/tests/test_web2py.py +0 -0
  57. {typedal-3.9.2 → typedal-3.9.4}/tests/test_xx_others.py +0 -0
  58. {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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: TypeDAL
3
- Version: 3.9.2
3
+ Version: 3.9.4
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
@@ -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" },
@@ -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__ = "3.9.2"
8
+ __version__ = "3.9.4"
@@ -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 contextlib import chdir
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