python3-commons 0.17.6__tar.gz → 0.17.8__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 (73) hide show
  1. {python3_commons-0.17.6/src/python3_commons.egg-info → python3_commons-0.17.8}/PKG-INFO +1 -1
  2. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/auth.py +11 -6
  3. {python3_commons-0.17.6 → python3_commons-0.17.8/src/python3_commons.egg-info}/PKG-INFO +1 -1
  4. {python3_commons-0.17.6 → python3_commons-0.17.8}/.coveragerc +0 -0
  5. {python3_commons-0.17.6 → python3_commons-0.17.8}/.devcontainer/Dockerfile +0 -0
  6. {python3_commons-0.17.6 → python3_commons-0.17.8}/.devcontainer/devcontainer.json +0 -0
  7. {python3_commons-0.17.6 → python3_commons-0.17.8}/.devcontainer/docker-compose.yml +0 -0
  8. {python3_commons-0.17.6 → python3_commons-0.17.8}/.env_template +0 -0
  9. {python3_commons-0.17.6 → python3_commons-0.17.8}/.github/workflows/checks.yml +0 -0
  10. {python3_commons-0.17.6 → python3_commons-0.17.8}/.github/workflows/python-publish.yaml +0 -0
  11. {python3_commons-0.17.6 → python3_commons-0.17.8}/.github/workflows/release-on-tag-push.yml +0 -0
  12. {python3_commons-0.17.6 → python3_commons-0.17.8}/.gitignore +0 -0
  13. {python3_commons-0.17.6 → python3_commons-0.17.8}/.pre-commit-config.yaml +0 -0
  14. {python3_commons-0.17.6 → python3_commons-0.17.8}/.python-version +0 -0
  15. {python3_commons-0.17.6 → python3_commons-0.17.8}/AUTHORS.rst +0 -0
  16. {python3_commons-0.17.6 → python3_commons-0.17.8}/CHANGELOG.rst +0 -0
  17. {python3_commons-0.17.6 → python3_commons-0.17.8}/LICENSE +0 -0
  18. {python3_commons-0.17.6 → python3_commons-0.17.8}/README.md +0 -0
  19. {python3_commons-0.17.6 → python3_commons-0.17.8}/README.rst +0 -0
  20. {python3_commons-0.17.6 → python3_commons-0.17.8}/docs/Makefile +0 -0
  21. {python3_commons-0.17.6 → python3_commons-0.17.8}/docs/_static/.gitignore +0 -0
  22. {python3_commons-0.17.6 → python3_commons-0.17.8}/docs/authors.rst +0 -0
  23. {python3_commons-0.17.6 → python3_commons-0.17.8}/docs/changelog.rst +0 -0
  24. {python3_commons-0.17.6 → python3_commons-0.17.8}/docs/conf.py +0 -0
  25. {python3_commons-0.17.6 → python3_commons-0.17.8}/docs/index.rst +0 -0
  26. {python3_commons-0.17.6 → python3_commons-0.17.8}/docs/license.rst +0 -0
  27. {python3_commons-0.17.6 → python3_commons-0.17.8}/pyproject.toml +0 -0
  28. {python3_commons-0.17.6 → python3_commons-0.17.8}/setup.cfg +0 -0
  29. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/__init__.py +0 -0
  30. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/api_client.py +0 -0
  31. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/async_functools.py +0 -0
  32. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/audit.py +0 -0
  33. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/cache.py +0 -0
  34. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/conf.py +0 -0
  35. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/db/__init__.py +0 -0
  36. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/db/helpers.py +0 -0
  37. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/db/models/__init__.py +0 -0
  38. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/db/models/auth.py +0 -0
  39. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/db/models/common.py +0 -0
  40. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/db/models/rbac.py +0 -0
  41. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/db/models/users.py +0 -0
  42. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/exceptions.py +0 -0
  43. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/fs.py +0 -0
  44. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/generators.py +0 -0
  45. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/helpers.py +0 -0
  46. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/log/__init__.py +0 -0
  47. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/log/filters.py +0 -0
  48. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/log/formatters.py +0 -0
  49. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/object_storage.py +0 -0
  50. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/permissions.py +0 -0
  51. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/serializers/__init__.py +0 -0
  52. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/serializers/common.py +0 -0
  53. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/serializers/json.py +0 -0
  54. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/serializers/msgpack.py +0 -0
  55. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons/serializers/msgspec.py +0 -0
  56. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons.egg-info/SOURCES.txt +0 -0
  57. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons.egg-info/dependency_links.txt +0 -0
  58. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons.egg-info/requires.txt +0 -0
  59. {python3_commons-0.17.6 → python3_commons-0.17.8}/src/python3_commons.egg-info/top_level.txt +0 -0
  60. {python3_commons-0.17.6 → python3_commons-0.17.8}/tests/__init__.py +0 -0
  61. {python3_commons-0.17.6 → python3_commons-0.17.8}/tests/integration/__init__.py +0 -0
  62. {python3_commons-0.17.6 → python3_commons-0.17.8}/tests/integration/test_cache.py +0 -0
  63. {python3_commons-0.17.6 → python3_commons-0.17.8}/tests/integration/test_osc.py +0 -0
  64. {python3_commons-0.17.6 → python3_commons-0.17.8}/tests/unit/__init__.py +0 -0
  65. {python3_commons-0.17.6 → python3_commons-0.17.8}/tests/unit/conftest.py +0 -0
  66. {python3_commons-0.17.6 → python3_commons-0.17.8}/tests/unit/log/__init__.py +0 -0
  67. {python3_commons-0.17.6 → python3_commons-0.17.8}/tests/unit/log/test_formatters.py +0 -0
  68. {python3_commons-0.17.6 → python3_commons-0.17.8}/tests/unit/test_async_functools.py +0 -0
  69. {python3_commons-0.17.6 → python3_commons-0.17.8}/tests/unit/test_audit.py +0 -0
  70. {python3_commons-0.17.6 → python3_commons-0.17.8}/tests/unit/test_helpers.py +0 -0
  71. {python3_commons-0.17.6 → python3_commons-0.17.8}/tests/unit/test_msgpack.py +0 -0
  72. {python3_commons-0.17.6 → python3_commons-0.17.8}/tests/unit/test_msgspec.py +0 -0
  73. {python3_commons-0.17.6 → python3_commons-0.17.8}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-commons
3
- Version: 0.17.6
3
+ Version: 0.17.8
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
@@ -57,6 +57,8 @@ class OIDCTokenResponse(msgspec.Struct):
57
57
  refresh_token: str
58
58
  scope: str
59
59
  id_token: str
60
+ error: str | None = None
61
+ error_description: str | None = None
60
62
 
61
63
 
62
64
  async def fetch_openid_config() -> dict:
@@ -96,17 +98,18 @@ class OIDCAuthError(OIDCError):
96
98
  pass
97
99
 
98
100
 
101
+ # TODO: use api_client
99
102
  class OIDCClient:
100
103
  def __init__(
101
104
  self,
102
- token_url: str,
105
+ authority_url: str,
103
106
  client_id: str,
104
107
  client_secret: str | None = None,
105
108
  *,
106
109
  timeout: float = 10.0,
107
110
  session: aiohttp.ClientSession | None = None,
108
111
  ) -> None:
109
- self._token_url = token_url
112
+ self._token_url = f'{authority_url}/protocol/openid-connect/token' # TODO: get it from openid-configuration
110
113
  self._client_id = client_id
111
114
  self._client_secret = client_secret
112
115
  self._timeout = aiohttp.ClientTimeout(total=timeout)
@@ -151,7 +154,9 @@ class OIDCClient:
151
154
  data=data,
152
155
  headers={'Content-Type': 'application/x-www-form-urlencoded'},
153
156
  ) as resp:
154
- payload = await resp.json(content_type=None)
157
+ payload = await resp.read()
158
+ decoder = msgspec.json.Decoder(type=OIDCTokenResponse)
159
+ token = decoder.decode(payload)
155
160
 
156
161
  except TimeoutError as e:
157
162
  msg = 'OIDC request timed out'
@@ -163,8 +168,8 @@ class OIDCClient:
163
168
  raise OIDCError(msg) from e
164
169
 
165
170
  if not resp.ok:
166
- error = payload.get('error')
167
- description = payload.get('error_description')
171
+ error = token.error
172
+ description = token.error_description
168
173
 
169
174
  if error in {'invalid_grant', 'invalid_client'}:
170
175
  msg = f'{error}: {description}'
@@ -175,4 +180,4 @@ class OIDCClient:
175
180
 
176
181
  raise OIDCError(msg)
177
182
 
178
- return payload
183
+ return token
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-commons
3
- Version: 0.17.6
3
+ Version: 0.17.8
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