hexastack-fastapi 0.8.0__tar.gz → 0.9.0__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.
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/PKG-INFO +1 -1
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/pyproject.toml +1 -1
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/pyproject.toml.orig +1 -1
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/openziti.py +7 -9
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/ratelimit.py +15 -9
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/testing/recorder.py +7 -8
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/README.md +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/__init__.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/__init__.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/db_session.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/dependencies.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/docs.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/health.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/metrics.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/routing.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/sse.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/websockets.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/domain/__init__.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/domain/config.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/infra/__init__.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/infra/app.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/infra/autodiscovery.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/infra/bootstrap.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/infra/config.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/infra/decorators.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/infra/exception_handlers.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/infra/middleware/__init__.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/infra/middleware/correlation.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/infra/middleware/logging.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/infra/middleware/metrics.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/py.typed +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/testing/__init__.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/testing/cursor.py +0 -0
- {hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/testing/server.py +0 -0
{hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/openziti.py
RENAMED
|
@@ -16,6 +16,7 @@ from pathlib import Path
|
|
|
16
16
|
from typing import Any
|
|
17
17
|
|
|
18
18
|
from hexastack_core.domain.exceptions import MissingDependencyError
|
|
19
|
+
from hexastack_core.utils import require_dependency
|
|
19
20
|
|
|
20
21
|
__all__ = [
|
|
21
22
|
"openziti_bind",
|
|
@@ -90,15 +91,12 @@ class OpenZitiASGIAdapter:
|
|
|
90
91
|
Raises:
|
|
91
92
|
MissingDependencyError: If openziti is not installed.
|
|
92
93
|
"""
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
"openziti is required for OpenZiti zero-trust networking. "
|
|
100
|
-
"Install with 'pip install hexastack-fastapi[ziti]' or 'pip install openziti'."
|
|
101
|
-
) from exc
|
|
94
|
+
return require_dependency(
|
|
95
|
+
"openziti",
|
|
96
|
+
extra="ziti",
|
|
97
|
+
package="hexastack-fastapi",
|
|
98
|
+
feature_name="OpenZiti Zero-Trust Network",
|
|
99
|
+
)
|
|
102
100
|
|
|
103
101
|
def get_bindings(
|
|
104
102
|
self, host: str | None = None, port: int | None = None
|
{hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/ratelimit.py
RENAMED
|
@@ -5,8 +5,8 @@ from typing import Any, cast
|
|
|
5
5
|
|
|
6
6
|
from fastapi import HTTPException, Request, status
|
|
7
7
|
|
|
8
|
-
from hexastack_core.domain.exceptions import MissingDependencyError
|
|
9
8
|
from hexastack_core.ports.ratelimit import RateLimiterPort
|
|
9
|
+
from hexastack_core.utils import require_dependency
|
|
10
10
|
from hexastack_core.utils.context import get_user_context
|
|
11
11
|
|
|
12
12
|
|
|
@@ -77,14 +77,20 @@ class SlowapiRateLimiterAdapter(RateLimiterPort):
|
|
|
77
77
|
Raises:
|
|
78
78
|
MissingDependencyError: If slowapi or limits is not installed.
|
|
79
79
|
"""
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
80
|
+
limits_storage = require_dependency(
|
|
81
|
+
"limits.storage",
|
|
82
|
+
extra="ratelimit",
|
|
83
|
+
package="hexastack-fastapi",
|
|
84
|
+
feature_name="Slowapi Rate Limiter Storage",
|
|
85
|
+
)
|
|
86
|
+
slowapi = require_dependency(
|
|
87
|
+
"slowapi",
|
|
88
|
+
extra="ratelimit",
|
|
89
|
+
package="hexastack-fastapi",
|
|
90
|
+
feature_name="Slowapi Rate Limiter",
|
|
91
|
+
)
|
|
92
|
+
storage_from_string = limits_storage.storage_from_string
|
|
93
|
+
Limiter = slowapi.Limiter
|
|
88
94
|
|
|
89
95
|
self._key_func = key_func or get_user_or_ip_key
|
|
90
96
|
self._default_limits: list[Any] = list(default_limits or ["100/minute"])
|
{hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/testing/recorder.py
RENAMED
|
@@ -7,7 +7,7 @@ import time
|
|
|
7
7
|
from pathlib import Path
|
|
8
8
|
from typing import Any
|
|
9
9
|
|
|
10
|
-
from hexastack_core.
|
|
10
|
+
from hexastack_core.utils import require_dependency
|
|
11
11
|
from hexastack_core.utils.fs import atomic_write_text
|
|
12
12
|
from hexastack_fastapi.testing.cursor import VIRTUAL_CURSOR_SCRIPT
|
|
13
13
|
|
|
@@ -71,13 +71,12 @@ class DemoNarrator:
|
|
|
71
71
|
Raises:
|
|
72
72
|
MissingDependencyError: If `playwright` is not installed.
|
|
73
73
|
"""
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
) from e
|
|
74
|
+
require_dependency(
|
|
75
|
+
"playwright",
|
|
76
|
+
extra="testing",
|
|
77
|
+
package="hexastack-fastapi",
|
|
78
|
+
feature_name="Feature Demo Recording",
|
|
79
|
+
)
|
|
81
80
|
|
|
82
81
|
self.page = page
|
|
83
82
|
self.output_name = output_name
|
|
File without changes
|
|
File without changes
|
{hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/__init__.py
RENAMED
|
File without changes
|
{hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/db_session.py
RENAMED
|
File without changes
|
{hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/dependencies.py
RENAMED
|
File without changes
|
|
File without changes
|
{hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/health.py
RENAMED
|
File without changes
|
{hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/metrics.py
RENAMED
|
File without changes
|
{hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/routing.py
RENAMED
|
File without changes
|
|
File without changes
|
{hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/adapters/websockets.py
RENAMED
|
File without changes
|
{hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/domain/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/infra/autodiscovery.py
RENAMED
|
File without changes
|
{hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/infra/bootstrap.py
RENAMED
|
File without changes
|
|
File without changes
|
{hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/infra/decorators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hexastack_fastapi-0.8.0 → hexastack_fastapi-0.9.0}/src/hexastack_fastapi/testing/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|