mdb-engine 0.4.0__tar.gz → 0.4.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.
- {mdb_engine-0.4.0/mdb_engine.egg-info → mdb_engine-0.4.1}/PKG-INFO +1 -1
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/__init__.py +1 -1
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/shared_middleware.py +25 -6
- {mdb_engine-0.4.0 → mdb_engine-0.4.1/mdb_engine.egg-info}/PKG-INFO +1 -1
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/pyproject.toml +1 -1
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/setup.py +1 -1
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/LICENSE +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/MANIFEST.in +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/README.md +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/README.md +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/ARCHITECTURE.md +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/README.md +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/__init__.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/audit.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/base.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/casbin_factory.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/casbin_models.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/config_defaults.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/config_helpers.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/cookie_utils.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/csrf.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/decorators.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/dependencies.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/helpers.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/integration.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/jwt.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/middleware.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/oso_factory.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/provider.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/rate_limiter.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/restrictions.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/session_manager.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/shared_users.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/token_lifecycle.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/token_store.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/users.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/auth/utils.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/cli/__init__.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/cli/commands/__init__.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/cli/commands/generate.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/cli/commands/migrate.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/cli/commands/show.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/cli/commands/validate.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/cli/main.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/cli/utils.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/config.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/constants.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/core/README.md +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/core/__init__.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/core/app_registration.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/core/app_secrets.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/core/connection.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/core/encryption.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/core/engine.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/core/index_management.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/core/manifest.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/core/ray_integration.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/core/seeding.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/core/service_initialization.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/core/types.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/database/README.md +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/database/__init__.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/database/abstraction.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/database/connection.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/database/query_validator.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/database/resource_limiter.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/database/scoped_wrapper.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/dependencies.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/di/__init__.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/di/container.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/di/providers.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/di/scopes.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/embeddings/README.md +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/embeddings/__init__.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/embeddings/dependencies.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/embeddings/service.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/exceptions.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/indexes/README.md +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/indexes/__init__.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/indexes/helpers.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/indexes/manager.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/memory/README.md +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/memory/__init__.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/memory/service.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/observability/README.md +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/observability/__init__.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/observability/health.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/observability/logging.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/observability/metrics.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/repositories/__init__.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/repositories/base.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/repositories/mongo.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/repositories/unit_of_work.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/routing/README.md +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/routing/__init__.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/routing/websockets.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/utils/__init__.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine/utils/mongo.py +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine.egg-info/SOURCES.txt +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine.egg-info/dependency_links.txt +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine.egg-info/entry_points.txt +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine.egg-info/requires.txt +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/mdb_engine.egg-info/top_level.txt +0 -0
- {mdb_engine-0.4.0 → mdb_engine-0.4.1}/setup.cfg +0 -0
|
@@ -81,7 +81,7 @@ from .repositories import Entity, MongoRepository, Repository, UnitOfWork
|
|
|
81
81
|
# Utilities
|
|
82
82
|
from .utils import clean_mongo_doc, clean_mongo_docs
|
|
83
83
|
|
|
84
|
-
__version__ = "0.4.
|
|
84
|
+
__version__ = "0.4.1" # Patch version: Bug fixes for path prefix handling and test improvements
|
|
85
85
|
|
|
86
86
|
__all__ = [
|
|
87
87
|
# Core Engine
|
|
@@ -86,16 +86,35 @@ def _get_request_path(request: Request) -> str:
|
|
|
86
86
|
"""
|
|
87
87
|
Get the request path relative to the mount point.
|
|
88
88
|
|
|
89
|
-
For mounted apps (via create_multi_app),
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
For mounted apps (via create_multi_app), strips the path prefix from
|
|
90
|
+
request.url.path using request.state.app_base_path. For non-mounted apps,
|
|
91
|
+
uses request.scope["path"] if available, otherwise falls back to request.url.path.
|
|
92
92
|
|
|
93
93
|
This ensures public routes in manifests (which are relative paths like "/")
|
|
94
94
|
match correctly when apps are mounted at prefixes like "/auth-hub".
|
|
95
95
|
"""
|
|
96
|
-
#
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
# Check if this is a mounted app with a path prefix
|
|
97
|
+
app_base_path = getattr(request.state, "app_base_path", None)
|
|
98
|
+
# Ensure app_base_path is a string (not a MagicMock in tests)
|
|
99
|
+
if app_base_path and isinstance(app_base_path, str):
|
|
100
|
+
# Ensure request.url.path is a string before calling startswith
|
|
101
|
+
url_path = str(request.url.path) if hasattr(request.url, "path") else None
|
|
102
|
+
if url_path and url_path.startswith(app_base_path):
|
|
103
|
+
# Strip the path prefix to get relative path
|
|
104
|
+
relative_path = url_path[len(app_base_path) :]
|
|
105
|
+
# Ensure path starts with / (handle case where prefix is entire path)
|
|
106
|
+
return relative_path if relative_path else "/"
|
|
107
|
+
|
|
108
|
+
# Fall back to scope["path"] for mounted apps (if available)
|
|
109
|
+
# This handles cases where Starlette/FastAPI sets it correctly
|
|
110
|
+
if "path" in request.scope:
|
|
111
|
+
return request.scope["path"]
|
|
112
|
+
|
|
113
|
+
# Default to url.path for non-mounted apps
|
|
114
|
+
# Ensure we return a string
|
|
115
|
+
if hasattr(request.url, "path"):
|
|
116
|
+
return str(request.url.path)
|
|
117
|
+
return "/"
|
|
99
118
|
|
|
100
119
|
|
|
101
120
|
class SharedAuthMiddleware(BaseHTTPMiddleware):
|
|
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
|
|
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
|
|
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
|