python-authz 0.8.0__tar.gz → 0.8.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.
- {python_authz-0.8.0 → python_authz-0.8.1}/PKG-INFO +2 -2
- {python_authz-0.8.0 → python_authz-0.8.1}/README.md +1 -1
- {python_authz-0.8.0 → python_authz-0.8.1}/pyproject.toml +1 -1
- {python_authz-0.8.0 → python_authz-0.8.1}/pyproject.toml.orig +1 -1
- {python_authz-0.8.0 → python_authz-0.8.1}/src/authz/storage/postgres.py +4 -6
- {python_authz-0.8.0 → python_authz-0.8.1}/LICENSE +0 -0
- {python_authz-0.8.0 → python_authz-0.8.1}/src/authz/__init__.py +0 -0
- {python_authz-0.8.0 → python_authz-0.8.1}/src/authz/conditions.py +0 -0
- {python_authz-0.8.0 → python_authz-0.8.1}/src/authz/engine.py +0 -0
- {python_authz-0.8.0 → python_authz-0.8.1}/src/authz/errors.py +0 -0
- {python_authz-0.8.0 → python_authz-0.8.1}/src/authz/integrations/__init__.py +0 -0
- {python_authz-0.8.0 → python_authz-0.8.1}/src/authz/integrations/fastapi.py +0 -0
- {python_authz-0.8.0 → python_authz-0.8.1}/src/authz/py.typed +0 -0
- {python_authz-0.8.0 → python_authz-0.8.1}/src/authz/schema.py +0 -0
- {python_authz-0.8.0 → python_authz-0.8.1}/src/authz/storage/__init__.py +0 -0
- {python_authz-0.8.0 → python_authz-0.8.1}/src/authz/storage/base.py +0 -0
- {python_authz-0.8.0 → python_authz-0.8.1}/src/authz/storage/sqlite.py +0 -0
- {python_authz-0.8.0 → python_authz-0.8.1}/src/authz/tuples.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-authz
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.1
|
|
4
4
|
Summary: A framework-agnostic ReBAC/RBAC/ABAC authorization engine built on one Zanzibar-style relationship graph
|
|
5
5
|
Author: Anupam Gupta
|
|
6
6
|
Author-email: Anupam Gupta <anupam@trois.in>
|
|
@@ -54,7 +54,7 @@ kept in agreement with each other.
|
|
|
54
54
|
|
|
55
55
|
## Status
|
|
56
56
|
|
|
57
|
-
Release, version 0.8.0
|
|
57
|
+
Release, version 0.8.1. Version 0.8.0 was a security release: [`docs/security.md`](docs/security.md) analyses the library end to end and records what changed, and [`CHANGELOG.md`](CHANGELOG.md) lists the upgrade notes. The library provides:
|
|
58
58
|
|
|
59
59
|
- **Unified ReBAC + RBAC + ABAC**: Zanzibar-style relationship graphs with conditions evaluated against stored policy and request context. Stored context takes precedence.
|
|
60
60
|
- **Three-Valued Conditions**: a condition may return `None` when its context is missing or invalid; rewrite rules combine `True`, `False`, and `None` with Kleene logic, and a check allows only on `True`, so missing context never grants access, even under `Exclusion`.
|
|
@@ -26,7 +26,7 @@ kept in agreement with each other.
|
|
|
26
26
|
|
|
27
27
|
## Status
|
|
28
28
|
|
|
29
|
-
Release, version 0.8.0
|
|
29
|
+
Release, version 0.8.1. Version 0.8.0 was a security release: [`docs/security.md`](docs/security.md) analyses the library end to end and records what changed, and [`CHANGELOG.md`](CHANGELOG.md) lists the upgrade notes. The library provides:
|
|
30
30
|
|
|
31
31
|
- **Unified ReBAC + RBAC + ABAC**: Zanzibar-style relationship graphs with conditions evaluated against stored policy and request context. Stored context takes precedence.
|
|
32
32
|
- **Three-Valued Conditions**: a condition may return `None` when its context is missing or invalid; rewrite rules combine `True`, `False`, and `None` with Kleene logic, and a check allows only on `True`, so missing context never grants access, even under `Exclusion`.
|
|
@@ -205,13 +205,11 @@ class PostgresStorage:
|
|
|
205
205
|
async def current_token(self) -> Token:
|
|
206
206
|
conn, must_release = await self._connection()
|
|
207
207
|
try:
|
|
208
|
-
#
|
|
209
|
-
#
|
|
210
|
-
#
|
|
211
|
-
# it. is_called distinguishes "really advanced" from "just
|
|
212
|
-
# initialized" -- only count it once nextval() has actually run.
|
|
208
|
+
# pg_sequence_last_value is NULL until nextval() has run (a fresh
|
|
209
|
+
# or RESTART IDENTITY-reset sequence), and it needs only USAGE on
|
|
210
|
+
# the sequence, where SELECT FROM the sequence needs SELECT.
|
|
213
211
|
value = await conn.fetchval(
|
|
214
|
-
|
|
212
|
+
"SELECT COALESCE(pg_sequence_last_value($1::regclass), 0)", self._sequence
|
|
215
213
|
)
|
|
216
214
|
return str(value)
|
|
217
215
|
finally:
|
|
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
|