python3-commons 0.12.7__tar.gz → 0.13.1__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 python3-commons might be problematic. Click here for more details.

Files changed (62) hide show
  1. {python3_commons-0.12.7/src/python3_commons.egg-info → python3_commons-0.13.1}/PKG-INFO +1 -5
  2. {python3_commons-0.12.7 → python3_commons-0.13.1}/pyproject.toml +0 -4
  3. python3_commons-0.13.1/src/python3_commons/auth.py +48 -0
  4. python3_commons-0.13.1/src/python3_commons/db/models/__init__.py +1 -0
  5. python3_commons-0.13.1/src/python3_commons/db/models/auth.py +11 -0
  6. {python3_commons-0.12.7 → python3_commons-0.13.1/src/python3_commons.egg-info}/PKG-INFO +1 -5
  7. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons.egg-info/SOURCES.txt +0 -2
  8. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons.egg-info/requires.txt +0 -4
  9. {python3_commons-0.12.7 → python3_commons-0.13.1}/uv.lock +57 -430
  10. python3_commons-0.12.7/src/python3_commons/auth.py +0 -88
  11. python3_commons-0.12.7/src/python3_commons/db/models/__init__.py +0 -8
  12. python3_commons-0.12.7/src/python3_commons/db/models/auth.py +0 -35
  13. python3_commons-0.12.7/src/python3_commons/db/models/rbac.py +0 -91
  14. python3_commons-0.12.7/src/python3_commons/permissions.py +0 -46
  15. {python3_commons-0.12.7 → python3_commons-0.13.1}/.coveragerc +0 -0
  16. {python3_commons-0.12.7 → python3_commons-0.13.1}/.github/workflows/checks.yml +0 -0
  17. {python3_commons-0.12.7 → python3_commons-0.13.1}/.github/workflows/python-publish.yaml +0 -0
  18. {python3_commons-0.12.7 → python3_commons-0.13.1}/.github/workflows/release-on-tag-push.yml +0 -0
  19. {python3_commons-0.12.7 → python3_commons-0.13.1}/.gitignore +0 -0
  20. {python3_commons-0.12.7 → python3_commons-0.13.1}/.pre-commit-config.yaml +0 -0
  21. {python3_commons-0.12.7 → python3_commons-0.13.1}/.python-version +0 -0
  22. {python3_commons-0.12.7 → python3_commons-0.13.1}/AUTHORS.rst +0 -0
  23. {python3_commons-0.12.7 → python3_commons-0.13.1}/CHANGELOG.rst +0 -0
  24. {python3_commons-0.12.7 → python3_commons-0.13.1}/LICENSE +0 -0
  25. {python3_commons-0.12.7 → python3_commons-0.13.1}/README.md +0 -0
  26. {python3_commons-0.12.7 → python3_commons-0.13.1}/README.rst +0 -0
  27. {python3_commons-0.12.7 → python3_commons-0.13.1}/docs/Makefile +0 -0
  28. {python3_commons-0.12.7 → python3_commons-0.13.1}/docs/_static/.gitignore +0 -0
  29. {python3_commons-0.12.7 → python3_commons-0.13.1}/docs/authors.rst +0 -0
  30. {python3_commons-0.12.7 → python3_commons-0.13.1}/docs/changelog.rst +0 -0
  31. {python3_commons-0.12.7 → python3_commons-0.13.1}/docs/conf.py +0 -0
  32. {python3_commons-0.12.7 → python3_commons-0.13.1}/docs/index.rst +0 -0
  33. {python3_commons-0.12.7 → python3_commons-0.13.1}/docs/license.rst +0 -0
  34. {python3_commons-0.12.7 → python3_commons-0.13.1}/setup.cfg +0 -0
  35. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/__init__.py +0 -0
  36. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/api_client.py +0 -0
  37. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/audit.py +0 -0
  38. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/cache.py +0 -0
  39. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/conf.py +0 -0
  40. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/db/__init__.py +0 -0
  41. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/db/helpers.py +0 -0
  42. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/db/models/common.py +0 -0
  43. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/fs.py +0 -0
  44. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/helpers.py +0 -0
  45. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/log/__init__.py +0 -0
  46. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/log/filters.py +0 -0
  47. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/log/formatters.py +0 -0
  48. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/object_storage.py +0 -0
  49. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/serializers/__init__.py +0 -0
  50. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/serializers/common.py +0 -0
  51. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/serializers/json.py +0 -0
  52. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/serializers/msgpack.py +0 -0
  53. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons/serializers/msgspec.py +0 -0
  54. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons.egg-info/dependency_links.txt +0 -0
  55. {python3_commons-0.12.7 → python3_commons-0.13.1}/src/python3_commons.egg-info/top_level.txt +0 -0
  56. {python3_commons-0.12.7 → python3_commons-0.13.1}/tests/__init__.py +0 -0
  57. {python3_commons-0.12.7 → python3_commons-0.13.1}/tests/conftest.py +0 -0
  58. {python3_commons-0.12.7 → python3_commons-0.13.1}/tests/test_audit.py +0 -0
  59. {python3_commons-0.12.7 → python3_commons-0.13.1}/tests/test_cache.py +0 -0
  60. {python3_commons-0.12.7 → python3_commons-0.13.1}/tests/test_helpers.py +0 -0
  61. {python3_commons-0.12.7 → python3_commons-0.13.1}/tests/test_msgpack.py +0 -0
  62. {python3_commons-0.12.7 → python3_commons-0.13.1}/tests/test_msgspec.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-commons
3
- Version: 0.12.7
3
+ Version: 0.13.1
4
4
  Summary: Re-usable Python3 code
5
5
  Author-email: Oleg Korsak <kamikaze.is.waiting.you@gmail.com>
6
6
  License-Expression: GPL-3.0
@@ -15,14 +15,10 @@ License-File: AUTHORS.rst
15
15
  Requires-Dist: aiobotocore~=2.25.0
16
16
  Requires-Dist: aiohttp[speedups]<3.15.0,>=3.12.0
17
17
  Requires-Dist: asyncpg~=0.30.0
18
- Requires-Dist: fastapi-users-db-sqlalchemy~=7.0.0
19
- Requires-Dist: fastapi-users[sqlalchemy]~=15.0.1
20
18
  Requires-Dist: lxml~=6.0.2
21
19
  Requires-Dist: msgpack~=1.1.2
22
20
  Requires-Dist: msgspec~=0.19.0
23
- Requires-Dist: pydantic[email]~=2.12.3
24
21
  Requires-Dist: pydantic-settings~=2.11.0
25
- Requires-Dist: python-jose==3.5.0
26
22
  Requires-Dist: SQLAlchemy[asyncio]~=2.0.44
27
23
  Requires-Dist: valkey[libvalkey]~=6.1.1
28
24
  Requires-Dist: zeep~=4.3.2
@@ -21,14 +21,10 @@ dependencies = [
21
21
  "aiobotocore~=2.25.0",
22
22
  "aiohttp[speedups]>=3.12.0,<3.15.0",
23
23
  "asyncpg~=0.30.0",
24
- "fastapi-users-db-sqlalchemy~=7.0.0",
25
- "fastapi-users[sqlalchemy]~=15.0.1",
26
24
  "lxml~=6.0.2",
27
25
  "msgpack~=1.1.2",
28
26
  "msgspec~=0.19.0",
29
- "pydantic[email]~=2.12.3",
30
27
  "pydantic-settings~=2.11.0",
31
- "python-jose==3.5.0",
32
28
  "SQLAlchemy[asyncio]~=2.0.44",
33
29
  "valkey[libvalkey]~=6.1.1",
34
30
  "zeep~=4.3.2"
@@ -0,0 +1,48 @@
1
+ import logging
2
+ from collections.abc import Sequence
3
+ from http import HTTPStatus
4
+ from typing import TypeVar
5
+
6
+ import aiohttp
7
+ import msgspec
8
+
9
+ from python3_commons.conf import oidc_settings
10
+
11
+ logger = logging.getLogger(__name__)
12
+
13
+
14
+ class TokenData(msgspec.Struct):
15
+ sub: str
16
+ aud: str | Sequence[str]
17
+ exp: int
18
+ iss: str
19
+
20
+
21
+ T = TypeVar('T', bound=TokenData)
22
+ OIDC_CONFIG_URL = f'{oidc_settings.authority_url}/.well-known/openid-configuration'
23
+
24
+
25
+ async def fetch_openid_config() -> dict:
26
+ """
27
+ Fetch the OpenID configuration (including JWKS URI) from OIDC authority.
28
+ """
29
+ async with aiohttp.ClientSession() as session, session.get(OIDC_CONFIG_URL) as response:
30
+ if response.status != HTTPStatus.OK:
31
+ msg = 'Failed to fetch OpenID configuration'
32
+
33
+ raise RuntimeError(msg)
34
+
35
+ return await response.json()
36
+
37
+
38
+ async def fetch_jwks(jwks_uri: str) -> dict:
39
+ """
40
+ Fetch the JSON Web Key Set (JWKS) for validating the token's signature.
41
+ """
42
+ async with aiohttp.ClientSession() as session, session.get(jwks_uri) as response:
43
+ if response.status != HTTPStatus.OK:
44
+ msg = 'Failed to fetch JWKS'
45
+
46
+ raise RuntimeError(msg)
47
+
48
+ return await response.json()
@@ -0,0 +1 @@
1
+ from python3_commons.db.models.auth import UserGroup as UserGroup
@@ -0,0 +1,11 @@
1
+ from sqlalchemy import String
2
+ from sqlalchemy.orm import Mapped, mapped_column
3
+
4
+ from python3_commons.db import Base
5
+ from python3_commons.db.models.common import BaseDBModel
6
+
7
+
8
+ class UserGroup(BaseDBModel, Base):
9
+ __tablename__ = 'user_groups'
10
+
11
+ name: Mapped[str] = mapped_column(String, nullable=False)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-commons
3
- Version: 0.12.7
3
+ Version: 0.13.1
4
4
  Summary: Re-usable Python3 code
5
5
  Author-email: Oleg Korsak <kamikaze.is.waiting.you@gmail.com>
6
6
  License-Expression: GPL-3.0
@@ -15,14 +15,10 @@ License-File: AUTHORS.rst
15
15
  Requires-Dist: aiobotocore~=2.25.0
16
16
  Requires-Dist: aiohttp[speedups]<3.15.0,>=3.12.0
17
17
  Requires-Dist: asyncpg~=0.30.0
18
- Requires-Dist: fastapi-users-db-sqlalchemy~=7.0.0
19
- Requires-Dist: fastapi-users[sqlalchemy]~=15.0.1
20
18
  Requires-Dist: lxml~=6.0.2
21
19
  Requires-Dist: msgpack~=1.1.2
22
20
  Requires-Dist: msgspec~=0.19.0
23
- Requires-Dist: pydantic[email]~=2.12.3
24
21
  Requires-Dist: pydantic-settings~=2.11.0
25
- Requires-Dist: python-jose==3.5.0
26
22
  Requires-Dist: SQLAlchemy[asyncio]~=2.0.44
27
23
  Requires-Dist: valkey[libvalkey]~=6.1.1
28
24
  Requires-Dist: zeep~=4.3.2
@@ -28,7 +28,6 @@ src/python3_commons/conf.py
28
28
  src/python3_commons/fs.py
29
29
  src/python3_commons/helpers.py
30
30
  src/python3_commons/object_storage.py
31
- src/python3_commons/permissions.py
32
31
  src/python3_commons.egg-info/PKG-INFO
33
32
  src/python3_commons.egg-info/SOURCES.txt
34
33
  src/python3_commons.egg-info/dependency_links.txt
@@ -39,7 +38,6 @@ src/python3_commons/db/helpers.py
39
38
  src/python3_commons/db/models/__init__.py
40
39
  src/python3_commons/db/models/auth.py
41
40
  src/python3_commons/db/models/common.py
42
- src/python3_commons/db/models/rbac.py
43
41
  src/python3_commons/log/__init__.py
44
42
  src/python3_commons/log/filters.py
45
43
  src/python3_commons/log/formatters.py
@@ -1,14 +1,10 @@
1
1
  aiobotocore~=2.25.0
2
2
  aiohttp[speedups]<3.15.0,>=3.12.0
3
3
  asyncpg~=0.30.0
4
- fastapi-users-db-sqlalchemy~=7.0.0
5
- fastapi-users[sqlalchemy]~=15.0.1
6
4
  lxml~=6.0.2
7
5
  msgpack~=1.1.2
8
6
  msgspec~=0.19.0
9
- pydantic[email]~=2.12.3
10
7
  pydantic-settings~=2.11.0
11
- python-jose==3.5.0
12
8
  SQLAlchemy[asyncio]~=2.0.44
13
9
  valkey[libvalkey]~=6.1.1
14
10
  zeep~=4.3.2