mdb-engine 0.1.6__py3-none-any.whl → 0.4.12__py3-none-any.whl

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 (92) hide show
  1. mdb_engine/__init__.py +116 -11
  2. mdb_engine/auth/ARCHITECTURE.md +112 -0
  3. mdb_engine/auth/README.md +654 -11
  4. mdb_engine/auth/__init__.py +136 -29
  5. mdb_engine/auth/audit.py +592 -0
  6. mdb_engine/auth/base.py +252 -0
  7. mdb_engine/auth/casbin_factory.py +265 -70
  8. mdb_engine/auth/config_defaults.py +5 -5
  9. mdb_engine/auth/config_helpers.py +19 -18
  10. mdb_engine/auth/cookie_utils.py +12 -16
  11. mdb_engine/auth/csrf.py +483 -0
  12. mdb_engine/auth/decorators.py +10 -16
  13. mdb_engine/auth/dependencies.py +69 -71
  14. mdb_engine/auth/helpers.py +3 -3
  15. mdb_engine/auth/integration.py +61 -88
  16. mdb_engine/auth/jwt.py +11 -15
  17. mdb_engine/auth/middleware.py +79 -35
  18. mdb_engine/auth/oso_factory.py +21 -41
  19. mdb_engine/auth/provider.py +270 -171
  20. mdb_engine/auth/rate_limiter.py +505 -0
  21. mdb_engine/auth/restrictions.py +21 -36
  22. mdb_engine/auth/session_manager.py +24 -41
  23. mdb_engine/auth/shared_middleware.py +977 -0
  24. mdb_engine/auth/shared_users.py +775 -0
  25. mdb_engine/auth/token_lifecycle.py +10 -12
  26. mdb_engine/auth/token_store.py +17 -32
  27. mdb_engine/auth/users.py +99 -159
  28. mdb_engine/auth/utils.py +236 -42
  29. mdb_engine/cli/commands/generate.py +546 -10
  30. mdb_engine/cli/commands/validate.py +3 -7
  31. mdb_engine/cli/utils.py +7 -7
  32. mdb_engine/config.py +13 -28
  33. mdb_engine/constants.py +65 -0
  34. mdb_engine/core/README.md +117 -6
  35. mdb_engine/core/__init__.py +39 -7
  36. mdb_engine/core/app_registration.py +31 -50
  37. mdb_engine/core/app_secrets.py +289 -0
  38. mdb_engine/core/connection.py +20 -12
  39. mdb_engine/core/encryption.py +222 -0
  40. mdb_engine/core/engine.py +2862 -115
  41. mdb_engine/core/index_management.py +12 -16
  42. mdb_engine/core/manifest.py +628 -204
  43. mdb_engine/core/ray_integration.py +436 -0
  44. mdb_engine/core/seeding.py +13 -21
  45. mdb_engine/core/service_initialization.py +20 -30
  46. mdb_engine/core/types.py +40 -43
  47. mdb_engine/database/README.md +140 -17
  48. mdb_engine/database/__init__.py +17 -6
  49. mdb_engine/database/abstraction.py +37 -50
  50. mdb_engine/database/connection.py +51 -30
  51. mdb_engine/database/query_validator.py +367 -0
  52. mdb_engine/database/resource_limiter.py +204 -0
  53. mdb_engine/database/scoped_wrapper.py +747 -237
  54. mdb_engine/dependencies.py +427 -0
  55. mdb_engine/di/__init__.py +34 -0
  56. mdb_engine/di/container.py +247 -0
  57. mdb_engine/di/providers.py +206 -0
  58. mdb_engine/di/scopes.py +139 -0
  59. mdb_engine/embeddings/README.md +54 -24
  60. mdb_engine/embeddings/__init__.py +31 -24
  61. mdb_engine/embeddings/dependencies.py +38 -155
  62. mdb_engine/embeddings/service.py +78 -75
  63. mdb_engine/exceptions.py +104 -12
  64. mdb_engine/indexes/README.md +30 -13
  65. mdb_engine/indexes/__init__.py +1 -0
  66. mdb_engine/indexes/helpers.py +11 -11
  67. mdb_engine/indexes/manager.py +59 -123
  68. mdb_engine/memory/README.md +95 -4
  69. mdb_engine/memory/__init__.py +1 -2
  70. mdb_engine/memory/service.py +363 -1168
  71. mdb_engine/observability/README.md +4 -2
  72. mdb_engine/observability/__init__.py +26 -9
  73. mdb_engine/observability/health.py +17 -17
  74. mdb_engine/observability/logging.py +10 -10
  75. mdb_engine/observability/metrics.py +40 -19
  76. mdb_engine/repositories/__init__.py +34 -0
  77. mdb_engine/repositories/base.py +325 -0
  78. mdb_engine/repositories/mongo.py +233 -0
  79. mdb_engine/repositories/unit_of_work.py +166 -0
  80. mdb_engine/routing/README.md +1 -1
  81. mdb_engine/routing/__init__.py +1 -3
  82. mdb_engine/routing/websockets.py +41 -75
  83. mdb_engine/utils/__init__.py +3 -1
  84. mdb_engine/utils/mongo.py +117 -0
  85. mdb_engine-0.4.12.dist-info/METADATA +492 -0
  86. mdb_engine-0.4.12.dist-info/RECORD +97 -0
  87. {mdb_engine-0.1.6.dist-info → mdb_engine-0.4.12.dist-info}/WHEEL +1 -1
  88. mdb_engine-0.1.6.dist-info/METADATA +0 -213
  89. mdb_engine-0.1.6.dist-info/RECORD +0 -75
  90. {mdb_engine-0.1.6.dist-info → mdb_engine-0.4.12.dist-info}/entry_points.txt +0 -0
  91. {mdb_engine-0.1.6.dist-info → mdb_engine-0.4.12.dist-info}/licenses/LICENSE +0 -0
  92. {mdb_engine-0.1.6.dist-info → mdb_engine-0.4.12.dist-info}/top_level.txt +0 -0
@@ -11,8 +11,12 @@ import logging
11
11
  from typing import TYPE_CHECKING
12
12
 
13
13
  from motor.motor_asyncio import AsyncIOMotorDatabase
14
- from pymongo.errors import (ConnectionFailure, InvalidOperation,
15
- OperationFailure, ServerSelectionTimeoutError)
14
+ from pymongo.errors import (
15
+ ConnectionFailure,
16
+ InvalidOperation,
17
+ OperationFailure,
18
+ ServerSelectionTimeoutError,
19
+ )
16
20
 
17
21
  from ..indexes import run_index_creation_for_collection
18
22
 
@@ -56,20 +60,16 @@ class IndexManager:
56
60
  )
57
61
  if not managed_indexes:
58
62
  logger.warning(
59
- f"[{slug}] No 'managed_indexes' found in manifest. "
60
- f"Skipping index creation."
63
+ f"[{slug}] No 'managed_indexes' found in manifest. " f"Skipping index creation."
61
64
  )
62
65
  return
63
66
 
64
67
  # Validate indexes
65
68
  logger.info(
66
- f"[{slug}] Validating {len(managed_indexes)} collection(s) "
67
- f"with managed indexes..."
69
+ f"[{slug}] Validating {len(managed_indexes)} collection(s) " f"with managed indexes..."
68
70
  )
69
71
  is_valid, error = validate_managed_indexes(managed_indexes)
70
- logger.info(
71
- f"[{slug}] Index validation result: is_valid={is_valid}, " f"error={error}"
72
- )
72
+ logger.info(f"[{slug}] Index validation result: is_valid={is_valid}, " f"error={error}")
73
73
  if not is_valid:
74
74
  logger.error(
75
75
  f"[{slug}] ❌ Invalid 'managed_indexes' configuration: {error}. "
@@ -79,8 +79,7 @@ class IndexManager:
79
79
 
80
80
  # Create indexes for each collection
81
81
  logger.info(
82
- f"[{slug}] Processing {len(managed_indexes)} collection(s) "
83
- f"with managed indexes"
82
+ f"[{slug}] Processing {len(managed_indexes)} collection(s) " f"with managed indexes"
84
83
  )
85
84
  for collection_base_name, indexes in managed_indexes.items():
86
85
  logger.info(
@@ -98,9 +97,7 @@ class IndexManager:
98
97
 
99
98
  prefixed_collection_name = f"{slug}_{collection_base_name}"
100
99
  prefixed_defs = []
101
- logger.debug(
102
- f"[{slug}] Prefixed collection name: '{prefixed_collection_name}'"
103
- )
100
+ logger.debug(f"[{slug}] Prefixed collection name: '{prefixed_collection_name}'")
104
101
 
105
102
  for idx_def in indexes:
106
103
  idx_n = idx_def.get("name")
@@ -143,8 +140,7 @@ class IndexManager:
143
140
  # Wait a bit after all indexes are created to ensure they're all ready
144
141
  await asyncio.sleep(1.0) # Extra wait after all indexes are created
145
142
  logger.info(
146
- f"[{slug}] ✅ Completed index creation for "
147
- f"'{prefixed_collection_name}'"
143
+ f"[{slug}] ✅ Completed index creation for " f"'{prefixed_collection_name}'"
148
144
  )
149
145
  except (
150
146
  OperationFailure,