vayuapi 0.2.0__tar.gz → 0.2.2__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 (58) hide show
  1. {vayuapi-0.2.0 → vayuapi-0.2.2}/PKG-INFO +1 -1
  2. {vayuapi-0.2.0 → vayuapi-0.2.2}/pyproject.toml +1 -1
  3. {vayuapi-0.2.0 → vayuapi-0.2.2}/setup.py +1 -1
  4. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/core/application.py +70 -7
  5. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/core/middleware.py +5 -5
  6. {vayuapi-0.2.0 → vayuapi-0.2.2}/LICENSE +0 -0
  7. {vayuapi-0.2.0 → vayuapi-0.2.2}/MANIFEST.in +0 -0
  8. {vayuapi-0.2.0 → vayuapi-0.2.2}/README.md +0 -0
  9. {vayuapi-0.2.0 → vayuapi-0.2.2}/requirements.txt +0 -0
  10. {vayuapi-0.2.0 → vayuapi-0.2.2}/setup.cfg +0 -0
  11. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/__init__.py +0 -0
  12. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/admin/__init__.py +0 -0
  13. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/admin/enhanced_panel.py +0 -0
  14. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/admin/panel.py +0 -0
  15. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/ai/__init__.py +0 -0
  16. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/ai/langchain.py +0 -0
  17. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/ai/pydantic_ai.py +0 -0
  18. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/core/__init__.py +0 -0
  19. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/core/concurrency.py +0 -0
  20. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/core/decorators.py +0 -0
  21. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/core/dependencies.py +0 -0
  22. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/core/docs.py +0 -0
  23. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/core/exceptions.py +0 -0
  24. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/core/params.py +0 -0
  25. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/core/responses.py +0 -0
  26. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/core/routing.py +0 -0
  27. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/core/staticfiles.py +0 -0
  28. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/core/templating.py +0 -0
  29. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/core/uploads.py +0 -0
  30. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/core/websocket.py +0 -0
  31. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/di/__init__.py +0 -0
  32. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/di/container.py +0 -0
  33. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/di/injectable.py +0 -0
  34. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/di/provider.py +0 -0
  35. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/grpc/__init__.py +0 -0
  36. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/grpc/client.py +0 -0
  37. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/grpc/decorators.py +0 -0
  38. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/grpc/server.py +0 -0
  39. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/middleware/__init__.py +0 -0
  40. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/orm/__init__.py +0 -0
  41. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/orm/async_orm.py +0 -0
  42. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/orm/database.py +0 -0
  43. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/orm/django_orm.py +0 -0
  44. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/scheduler/__init__.py +0 -0
  45. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/scheduler/tasks.py +0 -0
  46. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/security/__init__.py +0 -0
  47. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/security/auth.py +0 -0
  48. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/security/encryption.py +0 -0
  49. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/security/jwt.py +0 -0
  50. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/status.py +0 -0
  51. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/tasks/__init__.py +0 -0
  52. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/tasks/arq_app.py +0 -0
  53. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/tasks/celery_app.py +0 -0
  54. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/tasks/decorators.py +0 -0
  55. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/tasks/worker.py +0 -0
  56. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/utils/__init__.py +0 -0
  57. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi/utils/helpers.py +0 -0
  58. {vayuapi-0.2.0 → vayuapi-0.2.2}/vayuapi.egg-info/SOURCES.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vayuapi
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: The fastest Python async API framework for rapid development with AI/ML support
5
5
  Home-page: https://github.com/vayuapi/vayuapi
6
6
  Author: VayuAPI Team
@@ -6,7 +6,7 @@ include = ["vayuapi*"]
6
6
 
7
7
  [project]
8
8
  name = "vayuapi"
9
- version = "0.2.0"
9
+ version = "0.2.2"
10
10
  description = "The fastest Python async API framework for rapid development with AI/ML support"
11
11
  readme = "README.md"
12
12
  requires-python = ">=3.11,<3.16"
@@ -7,7 +7,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
7
7
 
8
8
  setup(
9
9
  name="vayuapi",
10
- version="0.2.0",
10
+ version="0.2.2",
11
11
  author="VayuAPI Team",
12
12
  author_email="codeswithalok@gmail.com",
13
13
  description="The fastest Python async API framework for rapid development with AI/ML support",
@@ -100,7 +100,7 @@ class VayuAPI:
100
100
  # Add default middleware
101
101
  if cors_enabled:
102
102
  from starlette.middleware.cors import CORSMiddleware
103
- self.add_starlette_middleware(
103
+ self.add_middleware(
104
104
  CORSMiddleware,
105
105
  allow_origins=allowed_origins or ["*"],
106
106
  allow_credentials=True,
@@ -120,7 +120,7 @@ class VayuAPI:
120
120
  # Add session middleware for admin authentication
121
121
  from starlette.middleware.sessions import SessionMiddleware
122
122
  import secrets
123
- self.add_starlette_middleware(
123
+ self.add_middleware(
124
124
  SessionMiddleware,
125
125
  secret_key=secrets.token_urlsafe(32)
126
126
  )
@@ -237,16 +237,79 @@ class VayuAPI:
237
237
  return func
238
238
  return decorator
239
239
 
240
- def add_middleware(self, middleware: Middleware):
241
- """Add custom middleware to the stack."""
242
- self.middleware_stack.add(middleware)
240
+ def add_middleware(self, middleware_class: Type, **options) -> None:
241
+ """
242
+ Add middleware to the application.
243
243
 
244
- def add_starlette_middleware(self, middleware_class: Type, **options):
245
- """Add Starlette middleware."""
244
+ Identical API to FastAPI / Starlette — always pass a **class** and
245
+ optional keyword arguments. VayuAPI supports three kinds:
246
+
247
+ 1. **ASGI / Starlette middleware** (``CORSMiddleware``,
248
+ ``GZipMiddleware``, ``SessionMiddleware``, …) — any class whose
249
+ constructor accepts ``(app, **options)``.
250
+
251
+ 2. **BaseHTTPMiddleware subclasses** — override ``dispatch(request,
252
+ call_next)``; pass the class without instantiating it.
253
+
254
+ 3. **VayuAPI Middleware subclasses** — override
255
+ ``process_request`` / ``process_response``; pass the class without
256
+ instantiating it (or pass an instance for backwards compatibility).
257
+
258
+ Examples::
259
+
260
+ from vayuapi.middleware import CORSMiddleware, GZipMiddleware
261
+ from vayuapi.middleware import SessionMiddleware, HTTPSRedirectMiddleware
262
+
263
+ app.add_middleware(CORSMiddleware, allow_origins=["*"], allow_methods=["*"])
264
+ app.add_middleware(GZipMiddleware, minimum_size=1000)
265
+ app.add_middleware(SessionMiddleware, secret_key="supersecret")
266
+ app.add_middleware(HTTPSRedirectMiddleware)
267
+
268
+ # BaseHTTPMiddleware subclass
269
+ from vayuapi.middleware import BaseHTTPMiddleware
270
+ class TimingMiddleware(BaseHTTPMiddleware):
271
+ async def dispatch(self, request, call_next):
272
+ import time
273
+ start = time.time()
274
+ response = await call_next(request)
275
+ response.headers["X-Process-Time"] = str(time.time() - start)
276
+ return response
277
+ app.add_middleware(TimingMiddleware)
278
+
279
+ # VayuAPI custom Middleware subclass
280
+ from vayuapi.middleware import Middleware
281
+ class LogMiddleware(Middleware):
282
+ async def process_request(self, request):
283
+ print(request.method, request.url)
284
+ app.add_middleware(LogMiddleware)
285
+ """
286
+ from starlette.middleware.base import BaseHTTPMiddleware as _StarletteBaseHTTPMiddleware
287
+
288
+ # Backward-compat: accept a Middleware *instance* as well as a class
289
+ if isinstance(middleware_class, Middleware):
290
+ self.middleware_stack.add(middleware_class)
291
+ return
292
+
293
+ if not isinstance(middleware_class, type):
294
+ raise TypeError(
295
+ "add_middleware expects a middleware class, "
296
+ f"got {type(middleware_class)!r}"
297
+ )
298
+
299
+ # VayuAPI Middleware subclass (process_request / process_response style)
300
+ if issubclass(middleware_class, Middleware):
301
+ self.middleware_stack.add(middleware_class(**options))
302
+ return
303
+
304
+ # BaseHTTPMiddleware subclass or any ASGI middleware class
246
305
  self._starlette_middleware.append(
247
306
  StarletteMiddleware(middleware_class, **options)
248
307
  )
249
308
 
309
+ def add_starlette_middleware(self, middleware_class: Type, **options):
310
+ """Alias for add_middleware with a middleware class. Kept for backward compatibility."""
311
+ self.add_middleware(middleware_class, **options)
312
+
250
313
  def add_exception_handler(self, exc_class: Type[Exception], handler: Callable):
251
314
  """
252
315
  Add a custom exception handler.
@@ -203,7 +203,7 @@ class CORSMiddleware:
203
203
  ```python
204
204
  from vayuapi.middleware import CORSMiddleware
205
205
 
206
- app.add_starlette_middleware(
206
+ app.add_middleware(
207
207
  CORSMiddleware,
208
208
  allow_origins=["https://example.com"],
209
209
  allow_credentials=True,
@@ -260,7 +260,7 @@ class GZipMiddleware:
260
260
  ```python
261
261
  from vayuapi.middleware import GZipMiddleware
262
262
 
263
- app.add_starlette_middleware(
263
+ app.add_middleware(
264
264
  GZipMiddleware,
265
265
  minimum_size=1000,
266
266
  compresslevel=6,
@@ -298,7 +298,7 @@ class HTTPSRedirectMiddleware:
298
298
  ```python
299
299
  from vayuapi.middleware import HTTPSRedirectMiddleware
300
300
 
301
- app.add_starlette_middleware(HTTPSRedirectMiddleware)
301
+ app.add_middleware(HTTPSRedirectMiddleware)
302
302
  ```
303
303
 
304
304
  Automatically redirects HTTP requests to HTTPS.
@@ -321,7 +321,7 @@ class TrustedHostMiddleware:
321
321
  ```python
322
322
  from vayuapi.middleware import TrustedHostMiddleware
323
323
 
324
- app.add_starlette_middleware(
324
+ app.add_middleware(
325
325
  TrustedHostMiddleware,
326
326
  allowed_hosts=["example.com", "*.example.com"],
327
327
  www_redirect=True,
@@ -359,7 +359,7 @@ class SessionMiddleware:
359
359
  ```python
360
360
  from vayuapi.middleware import SessionMiddleware
361
361
 
362
- app.add_starlette_middleware(
362
+ app.add_middleware(
363
363
  SessionMiddleware,
364
364
  secret_key="your-secret-key",
365
365
  session_cookie="session",
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