aquilia 0.2.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.
Files changed (229) hide show
  1. aquilia-0.2.0/LICENSE +21 -0
  2. aquilia-0.2.0/PKG-INFO +41 -0
  3. aquilia-0.2.0/aquilia/__init__.py +604 -0
  4. aquilia-0.2.0/aquilia/_datastructures.py +429 -0
  5. aquilia-0.2.0/aquilia/_uploads.py +468 -0
  6. aquilia-0.2.0/aquilia/aquilary/__init__.py +89 -0
  7. aquilia-0.2.0/aquilia/aquilary/cli.py +500 -0
  8. aquilia-0.2.0/aquilia/aquilary/core.py +1198 -0
  9. aquilia-0.2.0/aquilia/aquilary/errors.py +469 -0
  10. aquilia-0.2.0/aquilia/aquilary/fingerprint.py +428 -0
  11. aquilia-0.2.0/aquilia/aquilary/graph.py +334 -0
  12. aquilia-0.2.0/aquilia/aquilary/handler_wrapper.py +202 -0
  13. aquilia-0.2.0/aquilia/aquilary/loader.py +430 -0
  14. aquilia-0.2.0/aquilia/aquilary/route_compiler.py +236 -0
  15. aquilia-0.2.0/aquilia/aquilary/validator.py +399 -0
  16. aquilia-0.2.0/aquilia/asgi.py +297 -0
  17. aquilia-0.2.0/aquilia/auth/__init__.py +233 -0
  18. aquilia-0.2.0/aquilia/auth/authz.py +566 -0
  19. aquilia-0.2.0/aquilia/auth/core.py +596 -0
  20. aquilia-0.2.0/aquilia/auth/crous.py +394 -0
  21. aquilia-0.2.0/aquilia/auth/faults.py +450 -0
  22. aquilia-0.2.0/aquilia/auth/guards.py +472 -0
  23. aquilia-0.2.0/aquilia/auth/hashing.py +365 -0
  24. aquilia-0.2.0/aquilia/auth/integration/__init__.py +1 -0
  25. aquilia-0.2.0/aquilia/auth/integration/aquila_sessions.py +464 -0
  26. aquilia-0.2.0/aquilia/auth/integration/di_providers.py +544 -0
  27. aquilia-0.2.0/aquilia/auth/integration/flow_guards.py +750 -0
  28. aquilia-0.2.0/aquilia/auth/integration/middleware.py +531 -0
  29. aquilia-0.2.0/aquilia/auth/integration/sessions.py +368 -0
  30. aquilia-0.2.0/aquilia/auth/manager.py +446 -0
  31. aquilia-0.2.0/aquilia/auth/mfa.py +570 -0
  32. aquilia-0.2.0/aquilia/auth/oauth.py +555 -0
  33. aquilia-0.2.0/aquilia/auth/policy/__init__.py +188 -0
  34. aquilia-0.2.0/aquilia/auth/stores.py +623 -0
  35. aquilia-0.2.0/aquilia/auth/tokens.py +608 -0
  36. aquilia-0.2.0/aquilia/cli/__init__.py +34 -0
  37. aquilia-0.2.0/aquilia/cli/__main__.py +764 -0
  38. aquilia-0.2.0/aquilia/cli/commands/__init__.py +37 -0
  39. aquilia-0.2.0/aquilia/cli/commands/add.py +122 -0
  40. aquilia-0.2.0/aquilia/cli/commands/analytics.py +276 -0
  41. aquilia-0.2.0/aquilia/cli/commands/compile.py +45 -0
  42. aquilia-0.2.0/aquilia/cli/commands/discover.py +156 -0
  43. aquilia-0.2.0/aquilia/cli/commands/doctor.py +179 -0
  44. aquilia-0.2.0/aquilia/cli/commands/freeze.py +75 -0
  45. aquilia-0.2.0/aquilia/cli/commands/init.py +62 -0
  46. aquilia-0.2.0/aquilia/cli/commands/inspect.py +403 -0
  47. aquilia-0.2.0/aquilia/cli/commands/manifest.py +259 -0
  48. aquilia-0.2.0/aquilia/cli/commands/migrate.py +166 -0
  49. aquilia-0.2.0/aquilia/cli/commands/model_cmds.py +413 -0
  50. aquilia-0.2.0/aquilia/cli/commands/run.py +874 -0
  51. aquilia-0.2.0/aquilia/cli/commands/serve.py +78 -0
  52. aquilia-0.2.0/aquilia/cli/commands/validate.py +133 -0
  53. aquilia-0.2.0/aquilia/cli/commands/ws.py +360 -0
  54. aquilia-0.2.0/aquilia/cli/compilers/__init__.py +7 -0
  55. aquilia-0.2.0/aquilia/cli/compilers/workspace.py +312 -0
  56. aquilia-0.2.0/aquilia/cli/discovery_cli.py +160 -0
  57. aquilia-0.2.0/aquilia/cli/discovery_utils.py +712 -0
  58. aquilia-0.2.0/aquilia/cli/generators/__init__.py +11 -0
  59. aquilia-0.2.0/aquilia/cli/generators/controller.py +193 -0
  60. aquilia-0.2.0/aquilia/cli/generators/module.py +496 -0
  61. aquilia-0.2.0/aquilia/cli/generators/workspace.py +808 -0
  62. aquilia-0.2.0/aquilia/cli/parsers/__init__.py +9 -0
  63. aquilia-0.2.0/aquilia/cli/parsers/module.py +43 -0
  64. aquilia-0.2.0/aquilia/cli/parsers/workspace.py +65 -0
  65. aquilia-0.2.0/aquilia/cli/utils/__init__.py +33 -0
  66. aquilia-0.2.0/aquilia/cli/utils/colors.py +33 -0
  67. aquilia-0.2.0/aquilia/cli/utils/workspace.py +82 -0
  68. aquilia-0.2.0/aquilia/config.py +550 -0
  69. aquilia-0.2.0/aquilia/config_builders.py +810 -0
  70. aquilia-0.2.0/aquilia/controller/__init__.py +88 -0
  71. aquilia-0.2.0/aquilia/controller/base.py +216 -0
  72. aquilia-0.2.0/aquilia/controller/compiler.py +379 -0
  73. aquilia-0.2.0/aquilia/controller/decorators.py +194 -0
  74. aquilia-0.2.0/aquilia/controller/engine.py +455 -0
  75. aquilia-0.2.0/aquilia/controller/factory.py +360 -0
  76. aquilia-0.2.0/aquilia/controller/metadata.py +387 -0
  77. aquilia-0.2.0/aquilia/controller/openapi.py +87 -0
  78. aquilia-0.2.0/aquilia/controller/router.py +242 -0
  79. aquilia-0.2.0/aquilia/db/__init__.py +35 -0
  80. aquilia-0.2.0/aquilia/db/engine.py +456 -0
  81. aquilia-0.2.0/aquilia/debug/__init__.py +29 -0
  82. aquilia-0.2.0/aquilia/debug/pages.py +1225 -0
  83. aquilia-0.2.0/aquilia/di/__init__.py +131 -0
  84. aquilia-0.2.0/aquilia/di/cli.py +458 -0
  85. aquilia-0.2.0/aquilia/di/compat.py +103 -0
  86. aquilia-0.2.0/aquilia/di/core.py +824 -0
  87. aquilia-0.2.0/aquilia/di/decorators.py +224 -0
  88. aquilia-0.2.0/aquilia/di/diagnostics.py +106 -0
  89. aquilia-0.2.0/aquilia/di/errors.py +241 -0
  90. aquilia-0.2.0/aquilia/di/graph.py +241 -0
  91. aquilia-0.2.0/aquilia/di/lifecycle.py +217 -0
  92. aquilia-0.2.0/aquilia/di/providers.py +561 -0
  93. aquilia-0.2.0/aquilia/di/scopes.py +100 -0
  94. aquilia-0.2.0/aquilia/di/testing.py +183 -0
  95. aquilia-0.2.0/aquilia/discovery/__init__.py +27 -0
  96. aquilia-0.2.0/aquilia/effects.py +265 -0
  97. aquilia-0.2.0/aquilia/engine.py +22 -0
  98. aquilia-0.2.0/aquilia/faults/__init__.py +109 -0
  99. aquilia-0.2.0/aquilia/faults/core.py +467 -0
  100. aquilia-0.2.0/aquilia/faults/default_handlers.py +487 -0
  101. aquilia-0.2.0/aquilia/faults/domains.py +625 -0
  102. aquilia-0.2.0/aquilia/faults/engine.py +513 -0
  103. aquilia-0.2.0/aquilia/faults/handlers.py +193 -0
  104. aquilia-0.2.0/aquilia/faults/integrations/__init__.py +136 -0
  105. aquilia-0.2.0/aquilia/faults/integrations/di.py +185 -0
  106. aquilia-0.2.0/aquilia/faults/integrations/flow.py +349 -0
  107. aquilia-0.2.0/aquilia/faults/integrations/models.py +250 -0
  108. aquilia-0.2.0/aquilia/faults/integrations/registry.py +153 -0
  109. aquilia-0.2.0/aquilia/faults/integrations/routing.py +211 -0
  110. aquilia-0.2.0/aquilia/flow.py +20 -0
  111. aquilia-0.2.0/aquilia/lifecycle.py +315 -0
  112. aquilia-0.2.0/aquilia/manifest.py +547 -0
  113. aquilia-0.2.0/aquilia/middleware.py +433 -0
  114. aquilia-0.2.0/aquilia/middleware_ext/__init__.py +17 -0
  115. aquilia-0.2.0/aquilia/middleware_ext/request_scope.py +171 -0
  116. aquilia-0.2.0/aquilia/middleware_ext/session_middleware.py +209 -0
  117. aquilia-0.2.0/aquilia/models/__init__.py +255 -0
  118. aquilia-0.2.0/aquilia/models/__init__old.py +101 -0
  119. aquilia-0.2.0/aquilia/models/ast_nodes.py +213 -0
  120. aquilia-0.2.0/aquilia/models/base.py +1127 -0
  121. aquilia-0.2.0/aquilia/models/fields.py +1591 -0
  122. aquilia-0.2.0/aquilia/models/migrations.py +529 -0
  123. aquilia-0.2.0/aquilia/models/parser.py +409 -0
  124. aquilia-0.2.0/aquilia/models/runtime.py +791 -0
  125. aquilia-0.2.0/aquilia/patterns/__init__.py +90 -0
  126. aquilia-0.2.0/aquilia/patterns/autofix.py +446 -0
  127. aquilia-0.2.0/aquilia/patterns/cache.py +334 -0
  128. aquilia-0.2.0/aquilia/patterns/compiler/__init__.py +15 -0
  129. aquilia-0.2.0/aquilia/patterns/compiler/ast_nodes.py +212 -0
  130. aquilia-0.2.0/aquilia/patterns/compiler/compiler.py +382 -0
  131. aquilia-0.2.0/aquilia/patterns/compiler/parser.py +679 -0
  132. aquilia-0.2.0/aquilia/patterns/compiler/specificity.py +70 -0
  133. aquilia-0.2.0/aquilia/patterns/diagnostics/__init__.py +15 -0
  134. aquilia-0.2.0/aquilia/patterns/diagnostics/errors.py +85 -0
  135. aquilia-0.2.0/aquilia/patterns/grammar.py +128 -0
  136. aquilia-0.2.0/aquilia/patterns/lsp/__init__.py +17 -0
  137. aquilia-0.2.0/aquilia/patterns/lsp/metadata.py +212 -0
  138. aquilia-0.2.0/aquilia/patterns/matcher.py +236 -0
  139. aquilia-0.2.0/aquilia/patterns/openapi.py +132 -0
  140. aquilia-0.2.0/aquilia/patterns/transforms/__init__.py +5 -0
  141. aquilia-0.2.0/aquilia/patterns/transforms/registry.py +43 -0
  142. aquilia-0.2.0/aquilia/patterns/types/__init__.py +5 -0
  143. aquilia-0.2.0/aquilia/patterns/types/registry.py +82 -0
  144. aquilia-0.2.0/aquilia/patterns/validators/__init__.py +5 -0
  145. aquilia-0.2.0/aquilia/patterns/validators/registry.py +37 -0
  146. aquilia-0.2.0/aquilia/request.py +1646 -0
  147. aquilia-0.2.0/aquilia/response.py +1527 -0
  148. aquilia-0.2.0/aquilia/server.py +1610 -0
  149. aquilia-0.2.0/aquilia/sessions/__init__.py +130 -0
  150. aquilia-0.2.0/aquilia/sessions/core.py +549 -0
  151. aquilia-0.2.0/aquilia/sessions/decorators.py +395 -0
  152. aquilia-0.2.0/aquilia/sessions/engine.py +511 -0
  153. aquilia-0.2.0/aquilia/sessions/enhanced.py +289 -0
  154. aquilia-0.2.0/aquilia/sessions/faults.py +317 -0
  155. aquilia-0.2.0/aquilia/sessions/policy.py +571 -0
  156. aquilia-0.2.0/aquilia/sessions/state.py +185 -0
  157. aquilia-0.2.0/aquilia/sessions/store.py +543 -0
  158. aquilia-0.2.0/aquilia/sessions/transport.py +507 -0
  159. aquilia-0.2.0/aquilia/sockets/__init__.py +145 -0
  160. aquilia-0.2.0/aquilia/sockets/adapters/__init__.py +14 -0
  161. aquilia-0.2.0/aquilia/sockets/adapters/base.py +200 -0
  162. aquilia-0.2.0/aquilia/sockets/adapters/inmemory.py +236 -0
  163. aquilia-0.2.0/aquilia/sockets/adapters/redis.py +346 -0
  164. aquilia-0.2.0/aquilia/sockets/compile.py +273 -0
  165. aquilia-0.2.0/aquilia/sockets/connection.py +313 -0
  166. aquilia-0.2.0/aquilia/sockets/controller.py +209 -0
  167. aquilia-0.2.0/aquilia/sockets/decorators.py +304 -0
  168. aquilia-0.2.0/aquilia/sockets/envelope.py +253 -0
  169. aquilia-0.2.0/aquilia/sockets/faults.py +163 -0
  170. aquilia-0.2.0/aquilia/sockets/guards.py +271 -0
  171. aquilia-0.2.0/aquilia/sockets/middleware.py +244 -0
  172. aquilia-0.2.0/aquilia/sockets/runtime.py +571 -0
  173. aquilia-0.2.0/aquilia/templates/__init__.py +109 -0
  174. aquilia-0.2.0/aquilia/templates/auth_integration.py +450 -0
  175. aquilia-0.2.0/aquilia/templates/bytecode_cache.py +346 -0
  176. aquilia-0.2.0/aquilia/templates/cli.py +396 -0
  177. aquilia-0.2.0/aquilia/templates/context.py +195 -0
  178. aquilia-0.2.0/aquilia/templates/di_providers.py +385 -0
  179. aquilia-0.2.0/aquilia/templates/engine.py +388 -0
  180. aquilia-0.2.0/aquilia/templates/loader.py +208 -0
  181. aquilia-0.2.0/aquilia/templates/manager.py +407 -0
  182. aquilia-0.2.0/aquilia/templates/manifest_integration.py +368 -0
  183. aquilia-0.2.0/aquilia/templates/middleware.py +116 -0
  184. aquilia-0.2.0/aquilia/templates/security.py +325 -0
  185. aquilia-0.2.0/aquilia/templates/sessions_integration.py +377 -0
  186. aquilia-0.2.0/aquilia/utils/__init__.py +16 -0
  187. aquilia-0.2.0/aquilia/utils/scanner.py +208 -0
  188. aquilia-0.2.0/aquilia/utils/urls.py +48 -0
  189. aquilia-0.2.0/aquilia.egg-info/PKG-INFO +41 -0
  190. aquilia-0.2.0/aquilia.egg-info/SOURCES.txt +227 -0
  191. aquilia-0.2.0/aquilia.egg-info/dependency_links.txt +1 -0
  192. aquilia-0.2.0/aquilia.egg-info/entry_points.txt +2 -0
  193. aquilia-0.2.0/aquilia.egg-info/requires.txt +14 -0
  194. aquilia-0.2.0/aquilia.egg-info/top_level.txt +1 -0
  195. aquilia-0.2.0/pyproject.toml +80 -0
  196. aquilia-0.2.0/setup.cfg +4 -0
  197. aquilia-0.2.0/setup.py +73 -0
  198. aquilia-0.2.0/tests/test_aquilary.py +171 -0
  199. aquilia-0.2.0/tests/test_auth.py +234 -0
  200. aquilia-0.2.0/tests/test_config.py +226 -0
  201. aquilia-0.2.0/tests/test_config_builders.py +280 -0
  202. aquilia-0.2.0/tests/test_controller.py +359 -0
  203. aquilia-0.2.0/tests/test_datastructures.py +292 -0
  204. aquilia-0.2.0/tests/test_db_integration.py +170 -0
  205. aquilia-0.2.0/tests/test_debug_pages.py +673 -0
  206. aquilia-0.2.0/tests/test_di.py +386 -0
  207. aquilia-0.2.0/tests/test_effects.py +194 -0
  208. aquilia-0.2.0/tests/test_exports.py +109 -0
  209. aquilia-0.2.0/tests/test_fault_engine.py +291 -0
  210. aquilia-0.2.0/tests/test_fault_integration_deep.py +561 -0
  211. aquilia-0.2.0/tests/test_faults.py +197 -0
  212. aquilia-0.2.0/tests/test_flow.py +105 -0
  213. aquilia-0.2.0/tests/test_lifecycle.py +211 -0
  214. aquilia-0.2.0/tests/test_manifest.py +328 -0
  215. aquilia-0.2.0/tests/test_middleware.py +225 -0
  216. aquilia-0.2.0/tests/test_models_integration.py +546 -0
  217. aquilia-0.2.0/tests/test_models_migrations.py +219 -0
  218. aquilia-0.2.0/tests/test_models_orm.py +1376 -0
  219. aquilia-0.2.0/tests/test_models_parser.py +386 -0
  220. aquilia-0.2.0/tests/test_models_relations.py +181 -0
  221. aquilia-0.2.0/tests/test_models_runtime.py +407 -0
  222. aquilia-0.2.0/tests/test_patterns.py +254 -0
  223. aquilia-0.2.0/tests/test_request.py +391 -0
  224. aquilia-0.2.0/tests/test_response.py +210 -0
  225. aquilia-0.2.0/tests/test_sessions.py +124 -0
  226. aquilia-0.2.0/tests/test_sockets.py +169 -0
  227. aquilia-0.2.0/tests/test_templates.py +113 -0
  228. aquilia-0.2.0/tests/test_uploads.py +100 -0
  229. aquilia-0.2.0/tests/test_utils.py +81 -0
aquilia-0.2.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Aquilia Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
aquilia-0.2.0/PKG-INFO ADDED
@@ -0,0 +1,41 @@
1
+ Metadata-Version: 2.4
2
+ Name: aquilia
3
+ Version: 0.2.0
4
+ Summary: Async-native Python web framework with flow-first routing
5
+ Home-page: https://github.com/yourusername/aquilia
6
+ Author: Aquilia Contributors
7
+ License: MIT
8
+ Project-URL: Homepage, https://github.com/yourusername/aquilia
9
+ Project-URL: Documentation, https://github.com/yourusername/aquilia/docs
10
+ Project-URL: Repository, https://github.com/yourusername/aquilia
11
+ Project-URL: Issues, https://github.com/yourusername/aquilia/issues
12
+ Keywords: web,framework,async,asgi,http,api
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: Internet :: WWW/HTTP
21
+ Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
22
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
23
+ Requires-Python: >=3.10
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: uvicorn>=0.30.0
27
+ Requires-Dist: python-dotenv>=1.0.0
28
+ Requires-Dist: jinja2>=3.1.0
29
+ Requires-Dist: cryptography>=41.0.0
30
+ Requires-Dist: argon2-cffi>=23.1.0
31
+ Requires-Dist: passlib>=1.7.4
32
+ Requires-Dist: aiosqlite>=0.19.0
33
+ Provides-Extra: dev
34
+ Requires-Dist: pytest>=7.4.0; extra == "dev"
35
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
36
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
37
+ Requires-Dist: httpx>=0.24.0; extra == "dev"
38
+ Requires-Dist: aiosqlite>=0.19.0; extra == "dev"
39
+ Dynamic: home-page
40
+ Dynamic: license-file
41
+ Dynamic: requires-python
@@ -0,0 +1,604 @@
1
+ """
2
+ Aquilia - Production-ready async Python web framework
3
+
4
+ Complete integration of:
5
+ - Aquilary: Manifest-driven app registry with dependency resolution
6
+ - Flow: Typed flow-first routing with composable pipelines
7
+ - DI: Scoped dependency injection with lifecycle management
8
+ - Sessions: Cryptographic session management with policies
9
+ - Auth: OAuth2/OIDC, MFA, RBAC/ABAC authorization
10
+ - Faults: Structured error handling with fault domains
11
+ - Middleware: Composable middleware with effect awareness
12
+ - Patterns: Auto-fix, retry, circuit breaker patterns
13
+
14
+ Everything deeply integrated for seamless developer experience.
15
+ """
16
+
17
+ __version__ = "0.2.0"
18
+
19
+ # ============================================================================
20
+ # Core Framework
21
+ # ============================================================================
22
+
23
+ from .manifest import AppManifest, DatabaseConfig
24
+ from .config import Config, ConfigLoader
25
+ from .config_builders import Workspace, Module, Integration
26
+ from .request import Request
27
+ from .response import Response
28
+ from .server import AquiliaServer
29
+
30
+ # Request data structures
31
+ from ._datastructures import (
32
+ MultiDict,
33
+ Headers,
34
+ URL,
35
+ ParsedContentType,
36
+ Range,
37
+ )
38
+
39
+ # Upload handling
40
+ from ._uploads import (
41
+ UploadFile,
42
+ FormData,
43
+ UploadStore,
44
+ LocalUploadStore,
45
+ )
46
+
47
+ # ============================================================================
48
+ # Aquilary Registry (Replaces Legacy Registry)
49
+ # ============================================================================
50
+
51
+ from .aquilary import (
52
+ Aquilary,
53
+ AquilaryRegistry,
54
+ RuntimeRegistry,
55
+ AppContext,
56
+ RegistryMode,
57
+ RegistryFingerprint,
58
+ RegistryError,
59
+ DependencyCycleError,
60
+ RouteConflictError,
61
+ ManifestValidationError,
62
+ )
63
+
64
+ # ============================================================================
65
+ # Controller System (NEW - First-class controllers)
66
+ # ============================================================================
67
+
68
+ from .controller import (
69
+ Controller,
70
+ RequestCtx,
71
+ GET, POST, PUT, PATCH, DELETE,
72
+ HEAD, OPTIONS, WS,
73
+ route,
74
+ ControllerMetadata,
75
+ RouteMetadata,
76
+ ParameterMetadata,
77
+ extract_controller_metadata,
78
+ ControllerFactory,
79
+ InstantiationMode,
80
+ )
81
+
82
+ # ============================================================================
83
+ # Engine
84
+ # ============================================================================
85
+
86
+ # Note: RequestCtx is imported from .controller above; do not re-import
87
+ # from .engine to avoid shadowing.
88
+
89
+ # ============================================================================
90
+ # DI System (Complete)
91
+ # ============================================================================
92
+
93
+ from .di import (
94
+ Container,
95
+ Registry as DIRegistry,
96
+ Provider,
97
+ ProviderMeta,
98
+ ClassProvider,
99
+ FactoryProvider,
100
+ ValueProvider,
101
+ service,
102
+ factory,
103
+ inject,
104
+ Inject,
105
+ )
106
+
107
+ # ============================================================================
108
+ # Sessions System
109
+ # ============================================================================
110
+
111
+ from .sessions import (
112
+ Session,
113
+ SessionID,
114
+ SessionPolicy,
115
+ SessionEngine,
116
+ SessionPrincipal,
117
+ MemoryStore as SessionMemoryStore,
118
+ CookieTransport,
119
+ SessionFault,
120
+ SessionExpiredFault,
121
+ )
122
+
123
+ # Session decorators and state (NEW - Unique Aquilia syntax)
124
+ from .sessions.decorators import (
125
+ session,
126
+ authenticated,
127
+ stateful,
128
+ SessionRequiredFault,
129
+ AuthenticationRequiredFault,
130
+ )
131
+
132
+ from .sessions.state import (
133
+ SessionState,
134
+ Field as SessionField,
135
+ CartState,
136
+ UserPreferencesState,
137
+ )
138
+
139
+ # Enhanced session features (NEW - Advanced patterns)
140
+ from .sessions.enhanced import (
141
+ SessionContext,
142
+ SessionGuard,
143
+ requires,
144
+ AdminGuard,
145
+ VerifiedEmailGuard,
146
+ )
147
+
148
+ # ============================================================================
149
+ # Auth System (Complete Integration)
150
+ # ============================================================================
151
+
152
+ from .auth.core import (
153
+ Identity,
154
+ IdentityStatus,
155
+ TokenClaims,
156
+ )
157
+
158
+ from .auth.manager import AuthManager
159
+ from .auth.tokens import TokenManager, KeyRing
160
+ from .auth.hashing import PasswordHasher
161
+ from .auth.authz import AuthzEngine, RBACEngine, ABACEngine
162
+
163
+ # Auth Integration
164
+ from .auth.integration.aquila_sessions import (
165
+ AuthPrincipal,
166
+ SessionAuthBridge,
167
+ bind_identity,
168
+ user_session_policy,
169
+ api_session_policy,
170
+ )
171
+
172
+ from .auth.integration.di_providers import (
173
+ register_auth_providers,
174
+ create_auth_container,
175
+ AuthConfig,
176
+ )
177
+
178
+ from .auth.integration.middleware import (
179
+ AquilAuthMiddleware,
180
+ create_auth_middleware_stack,
181
+ )
182
+
183
+ # Note: Flow guards removed - use controller-based auth with middleware
184
+ # from .auth.integration.flow_guards import (
185
+ # require_auth,
186
+ # require_scopes,
187
+ # require_roles,
188
+ # )
189
+
190
+ # ============================================================================
191
+ # Faults System
192
+ # ============================================================================
193
+
194
+ from .faults import (
195
+ Fault,
196
+ FaultContext,
197
+ FaultEngine,
198
+ FaultHandler,
199
+ RecoveryStrategy,
200
+ # Model faults
201
+ ModelFault,
202
+ AMDLParseFault,
203
+ ModelNotFoundFault,
204
+ ModelRegistrationFault,
205
+ MigrationFault,
206
+ MigrationConflictFault,
207
+ QueryFault,
208
+ DatabaseConnectionFault,
209
+ SchemaFault,
210
+ )
211
+
212
+ # ============================================================================
213
+ # Middleware System
214
+ # ============================================================================
215
+
216
+ from .middleware import (
217
+ Middleware,
218
+ Handler,
219
+ MiddlewareStack,
220
+ RequestIdMiddleware,
221
+ LoggingMiddleware,
222
+ )
223
+
224
+ # ============================================================================
225
+ # Debug Pages
226
+ # ============================================================================
227
+
228
+ from .debug import (
229
+ DebugPageRenderer,
230
+ render_debug_exception_page,
231
+ render_http_error_page,
232
+ render_welcome_page,
233
+ )
234
+
235
+ # ============================================================================
236
+ # Effects & Patterns
237
+ # ============================================================================
238
+
239
+ from .effects import Effect, EffectProvider, EffectRegistry
240
+
241
+ # ============================================================================
242
+ # Sockets (WebSockets)
243
+ # ============================================================================
244
+
245
+ from .sockets import (
246
+ SocketController,
247
+ Socket,
248
+ OnConnect,
249
+ OnDisconnect,
250
+ Event,
251
+ AquilaSockets,
252
+ SocketRouter,
253
+ SocketGuard,
254
+ )
255
+
256
+ # ============================================================================
257
+ # Templates
258
+ # ============================================================================
259
+
260
+ from .templates import (
261
+ TemplateEngine,
262
+ TemplateMiddleware,
263
+ )
264
+
265
+ # ============================================================================
266
+ # Patterns
267
+ # ============================================================================
268
+
269
+ from .patterns import (
270
+ PatternCompiler,
271
+ PatternMatcher,
272
+ CompiledPattern,
273
+ TypeRegistry as PatternTypeRegistry,
274
+ )
275
+
276
+ # ============================================================================
277
+ # Discovery
278
+ # ============================================================================
279
+
280
+ from .discovery import PackageScanner
281
+
282
+ # ============================================================================
283
+ # Lifecycle
284
+ # ============================================================================
285
+
286
+ from .lifecycle import (
287
+ LifecycleCoordinator,
288
+ LifecyclePhase,
289
+ LifecycleError,
290
+ )
291
+
292
+ # ============================================================================
293
+ # Model System (Pure Python ORM)
294
+ # ============================================================================
295
+
296
+ from .models import (
297
+ # New pure-Python model system
298
+ Model,
299
+ ModelMeta,
300
+ ModelRegistry,
301
+ Q,
302
+ # Fields
303
+ Field,
304
+ FieldValidationError,
305
+ Index,
306
+ UniqueConstraint,
307
+ AutoField,
308
+ BigAutoField,
309
+ IntegerField,
310
+ BigIntegerField,
311
+ SmallIntegerField,
312
+ PositiveIntegerField,
313
+ PositiveSmallIntegerField,
314
+ FloatField,
315
+ DecimalField,
316
+ CharField,
317
+ TextField,
318
+ SlugField,
319
+ EmailField,
320
+ URLField,
321
+ UUIDField,
322
+ FilePathField,
323
+ DateField,
324
+ TimeField,
325
+ DateTimeField,
326
+ DurationField,
327
+ BooleanField,
328
+ BinaryField,
329
+ JSONField,
330
+ ForeignKey,
331
+ OneToOneField,
332
+ ManyToManyField,
333
+ GenericIPAddressField,
334
+ FileField,
335
+ ImageField,
336
+ ArrayField,
337
+ HStoreField,
338
+ GeneratedField,
339
+ # Legacy AMDL (backward compat)
340
+ ModelNode,
341
+ SlotNode,
342
+ LinkNode,
343
+ IndexNode as LegacyIndexNode,
344
+ HookNode,
345
+ MetaNode,
346
+ NoteNode,
347
+ AMDLFile,
348
+ FieldType,
349
+ LinkKind,
350
+ parse_amdl,
351
+ parse_amdl_file,
352
+ parse_amdl_directory,
353
+ AMDLParseError,
354
+ ModelProxy,
355
+ # Migrations
356
+ MigrationRunner,
357
+ MigrationOps,
358
+ generate_migration_file,
359
+ )
360
+
361
+ from .db import (
362
+ AquiliaDatabase,
363
+ configure_database,
364
+ get_database,
365
+ set_database,
366
+ DatabaseError,
367
+ )
368
+
369
+ # ============================================================================
370
+ # Exports
371
+ # ============================================================================
372
+
373
+ __all__ = [
374
+ # Core
375
+ "AquiliaServer",
376
+ "AppManifest",
377
+ "DatabaseConfig",
378
+ "Config",
379
+ "ConfigLoader",
380
+ "Request",
381
+ "Response",
382
+
383
+ # Request data structures
384
+ "MultiDict",
385
+ "Headers",
386
+ "URL",
387
+ "ParsedContentType",
388
+ "Range",
389
+
390
+ # Upload handling
391
+ "UploadFile",
392
+ "FormData",
393
+ "UploadStore",
394
+ "LocalUploadStore",
395
+
396
+ # Aquilary
397
+ "Aquilary",
398
+ "AquilaryRegistry",
399
+ "RuntimeRegistry",
400
+ "AppContext",
401
+ "RegistryMode",
402
+
403
+ # Controller (NEW - First-class)
404
+ "Controller",
405
+ "RequestCtx",
406
+ "GET", "POST", "PUT", "PATCH", "DELETE",
407
+ "HEAD", "OPTIONS", "WS",
408
+ "route",
409
+ "ControllerMetadata",
410
+ "extract_controller_metadata",
411
+ "ControllerFactory",
412
+ "InstantiationMode",
413
+
414
+
415
+ # DI
416
+ "Container",
417
+ "DIRegistry",
418
+ "Provider",
419
+ "ProviderMeta",
420
+ "ClassProvider",
421
+ "FactoryProvider",
422
+ "ValueProvider",
423
+ "service",
424
+ "factory",
425
+ "inject",
426
+ "Inject",
427
+
428
+ # Sessions
429
+ "Session",
430
+ "SessionID",
431
+ "SessionPolicy",
432
+ "SessionEngine",
433
+ "SessionPrincipal",
434
+ "SessionMemoryStore",
435
+ "CookieTransport",
436
+
437
+ # Session decorators (NEW - Unique syntax)
438
+ "session",
439
+ "authenticated",
440
+ "stateful",
441
+ "SessionState",
442
+ "SessionField",
443
+ "CartState",
444
+ "UserPreferencesState",
445
+
446
+ # Enhanced session features (NEW - Advanced patterns)
447
+ "SessionContext",
448
+ "SessionGuard",
449
+ "requires",
450
+ "AdminGuard",
451
+ "VerifiedEmailGuard",
452
+
453
+ # Config builders (NEW - Python config)
454
+ "Workspace",
455
+ "Module",
456
+ "Integration",
457
+
458
+ # Auth - Core
459
+ "Identity",
460
+ "AuthManager",
461
+ "TokenManager",
462
+ "KeyRing",
463
+ "PasswordHasher",
464
+ "AuthzEngine",
465
+
466
+ # Auth - Integration
467
+ "AuthPrincipal",
468
+ "SessionAuthBridge",
469
+ "bind_identity",
470
+ "user_session_policy",
471
+ "api_session_policy",
472
+ "register_auth_providers",
473
+ "create_auth_container",
474
+ "AuthConfig",
475
+ "AquilAuthMiddleware",
476
+ "create_auth_middleware_stack",
477
+
478
+ # Faults
479
+ "Fault",
480
+ "FaultContext",
481
+ "FaultEngine",
482
+ "FaultHandler",
483
+ "RecoveryStrategy",
484
+ "ModelFault",
485
+ "AMDLParseFault",
486
+ "ModelNotFoundFault",
487
+ "ModelRegistrationFault",
488
+ "MigrationFault",
489
+ "MigrationConflictFault",
490
+ "QueryFault",
491
+ "DatabaseConnectionFault",
492
+ "SchemaFault",
493
+
494
+ # Middleware
495
+ "Middleware",
496
+ "Handler",
497
+ "MiddlewareStack",
498
+
499
+ # Debug Pages
500
+ "DebugPageRenderer",
501
+ "render_debug_exception_page",
502
+ "render_http_error_page",
503
+ "render_welcome_page",
504
+
505
+ # Effects
506
+ "Effect",
507
+ "EffectProvider",
508
+ "EffectRegistry",
509
+
510
+ # Sockets (WebSockets)
511
+ "SocketController",
512
+ "Socket",
513
+ "OnConnect",
514
+ "OnDisconnect",
515
+ "Event",
516
+ "AquilaSockets",
517
+ "SocketRouter",
518
+ "SocketGuard",
519
+
520
+ # Templates
521
+ "TemplateEngine",
522
+ "TemplateMiddleware",
523
+
524
+ # Patterns
525
+ "PatternCompiler",
526
+ "PatternMatcher",
527
+ "CompiledPattern",
528
+ "PatternTypeRegistry",
529
+
530
+ # Discovery
531
+ "PackageScanner",
532
+
533
+ # Lifecycle
534
+ "LifecycleCoordinator",
535
+
536
+ # Model System (Pure Python ORM)
537
+ "Model",
538
+ "ModelMeta",
539
+ "ModelRegistry",
540
+ "Q",
541
+ "Field",
542
+ "FieldValidationError",
543
+ "Index",
544
+ "UniqueConstraint",
545
+ "AutoField",
546
+ "BigAutoField",
547
+ "IntegerField",
548
+ "BigIntegerField",
549
+ "SmallIntegerField",
550
+ "PositiveIntegerField",
551
+ "PositiveSmallIntegerField",
552
+ "FloatField",
553
+ "DecimalField",
554
+ "CharField",
555
+ "TextField",
556
+ "SlugField",
557
+ "EmailField",
558
+ "URLField",
559
+ "UUIDField",
560
+ "FilePathField",
561
+ "DateField",
562
+ "TimeField",
563
+ "DateTimeField",
564
+ "DurationField",
565
+ "BooleanField",
566
+ "BinaryField",
567
+ "JSONField",
568
+ "ForeignKey",
569
+ "OneToOneField",
570
+ "ManyToManyField",
571
+ "GenericIPAddressField",
572
+ "FileField",
573
+ "ImageField",
574
+ "ArrayField",
575
+ "HStoreField",
576
+ "GeneratedField",
577
+ # Legacy AMDL (backward compat)
578
+ "ModelNode",
579
+ "SlotNode",
580
+ "LinkNode",
581
+ "LegacyIndexNode",
582
+ "HookNode",
583
+ "MetaNode",
584
+ "NoteNode",
585
+ "AMDLFile",
586
+ "FieldType",
587
+ "LinkKind",
588
+ "parse_amdl",
589
+ "parse_amdl_file",
590
+ "parse_amdl_directory",
591
+ "AMDLParseError",
592
+ "ModelProxy",
593
+ # Migrations
594
+ "MigrationRunner",
595
+ "MigrationOps",
596
+ "generate_migration_file",
597
+
598
+ # Database
599
+ "AquiliaDatabase",
600
+ "configure_database",
601
+ "get_database",
602
+ "set_database",
603
+ "DatabaseError",
604
+ ]