vibetuner 2.8.1__tar.gz → 2.8.3__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.

Potentially problematic release.


This version of vibetuner might be problematic. Click here for more details.

Files changed (83) hide show
  1. {vibetuner-2.8.1 → vibetuner-2.8.3}/PKG-INFO +1 -1
  2. {vibetuner-2.8.1 → vibetuner-2.8.3}/pyproject.toml +1 -1
  3. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/__init__.py +5 -0
  4. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/routes/auth.py +19 -13
  5. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/versioning.py +1 -1
  6. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/__init__.py +0 -0
  7. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/__main__.py +0 -0
  8. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/cli/__init__.py +0 -0
  9. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/cli/run.py +0 -0
  10. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/config.py +0 -0
  11. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/context.py +0 -0
  12. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/AGENTS.md +0 -0
  13. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/CLAUDE.md +0 -0
  14. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/context.py +0 -0
  15. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/deps.py +0 -0
  16. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/email.py +0 -0
  17. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/hotreload.py +0 -0
  18. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/lifespan.py +0 -0
  19. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/middleware.py +0 -0
  20. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/oauth.py +0 -0
  21. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/routes/__init__.py +0 -0
  22. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/routes/debug.py +0 -0
  23. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/routes/health.py +0 -0
  24. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/routes/language.py +0 -0
  25. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/routes/meta.py +0 -0
  26. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/routes/user.py +0 -0
  27. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/frontend/templates.py +0 -0
  28. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/logging.py +0 -0
  29. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/models/AGENTS.md +0 -0
  30. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/models/CLAUDE.md +0 -0
  31. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/models/__init__.py +0 -0
  32. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/models/blob.py +0 -0
  33. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/models/email_verification.py +0 -0
  34. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/models/mixins.py +0 -0
  35. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/models/oauth.py +0 -0
  36. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/models/registry.py +0 -0
  37. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/models/types.py +0 -0
  38. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/models/user.py +0 -0
  39. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/mongo.py +0 -0
  40. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/paths.py +0 -0
  41. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/services/AGENTS.md +0 -0
  42. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/services/CLAUDE.md +0 -0
  43. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/services/__init__.py +0 -0
  44. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/services/blob.py +0 -0
  45. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/services/email.py +0 -0
  46. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/tasks/AGENTS.md +0 -0
  47. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/tasks/CLAUDE.md +0 -0
  48. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/tasks/__init__.py +0 -0
  49. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/tasks/context.py +0 -0
  50. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/tasks/worker.py +0 -0
  51. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/email/AGENTS.md +0 -0
  52. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/email/CLAUDE.md +0 -0
  53. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/email/default/magic_link.html.jinja +0 -0
  54. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/email/default/magic_link.txt.jinja +0 -0
  55. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/AGENTS.md +0 -0
  56. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/CLAUDE.md +0 -0
  57. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/base/favicons.html.jinja +0 -0
  58. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/base/footer.html.jinja +0 -0
  59. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/base/header.html.jinja +0 -0
  60. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/base/opengraph.html.jinja +0 -0
  61. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/base/skeleton.html.jinja +0 -0
  62. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/debug/collections.html.jinja +0 -0
  63. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/debug/components/debug_nav.html.jinja +0 -0
  64. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/debug/index.html.jinja +0 -0
  65. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/debug/info.html.jinja +0 -0
  66. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/debug/users.html.jinja +0 -0
  67. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/debug/version.html.jinja +0 -0
  68. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/email/magic_link.txt.jinja +0 -0
  69. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/email_sent.html.jinja +0 -0
  70. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/index.html.jinja +0 -0
  71. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/lang/select.html.jinja +0 -0
  72. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/login.html.jinja +0 -0
  73. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/meta/browserconfig.xml.jinja +0 -0
  74. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/meta/robots.txt.jinja +0 -0
  75. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/meta/site.webmanifest.jinja +0 -0
  76. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/meta/sitemap.xml.jinja +0 -0
  77. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/user/edit.html.jinja +0 -0
  78. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/frontend/user/profile.html.jinja +0 -0
  79. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/markdown/.placeholder +0 -0
  80. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/markdown/AGENTS.md +0 -0
  81. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates/markdown/CLAUDE.md +0 -0
  82. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/templates.py +0 -0
  83. {vibetuner-2.8.1 → vibetuner-2.8.3}/src/vibetuner/time.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: vibetuner
3
- Version: 2.8.1
3
+ Version: 2.8.3
4
4
  Summary: Blessed Python dependencies for Vibetuner projects
5
5
  Requires-Dist: aioboto3>=15.5.0
6
6
  Requires-Dist: arel>=0.4.0
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "vibetuner"
3
3
  description = "Blessed Python dependencies for Vibetuner projects"
4
- version = "2.8.1"
4
+ version = "2.8.3"
5
5
  requires-python = ">=3.11"
6
6
  dependencies = [
7
7
  # These are the base dependencies of AllTuner's blessed stack
@@ -23,6 +23,11 @@ def register_router(router: APIRouter) -> None:
23
23
  try:
24
24
  import app.frontend.oauth as _app_oauth # noqa: F401 # type: ignore[unresolved-import]
25
25
  import app.frontend.routes as _app_routes # noqa: F401 # type: ignore[unresolved-import]
26
+
27
+ # Register OAuth routes after providers are registered
28
+ from .routes.auth import register_oauth_routes
29
+
30
+ register_oauth_routes()
26
31
  except (ImportError, ModuleNotFoundError):
27
32
  pass
28
33
 
@@ -135,16 +135,22 @@ async def email_verify(
135
135
  return next or get_homepage_url(request)
136
136
 
137
137
 
138
- for provider in get_oauth_providers():
139
- router.get(
140
- f"/provider/{provider}",
141
- response_class=RedirectResponse,
142
- name=f"auth_with_{provider}",
143
- response_model=None,
144
- )(_create_auth_handler(provider))
145
-
146
- router.get(
147
- f"/login/provider/{provider}",
148
- name=f"login_with_{provider}",
149
- response_model=None,
150
- )(_create_auth_login_handler(provider))
138
+ def register_oauth_routes() -> None:
139
+ """Register OAuth provider routes dynamically.
140
+
141
+ This must be called after OAuth providers are registered to ensure
142
+ routes are created for all configured providers.
143
+ """
144
+ for provider in get_oauth_providers():
145
+ router.get(
146
+ f"/provider/{provider}",
147
+ response_class=RedirectResponse,
148
+ name=f"auth_with_{provider}",
149
+ response_model=None,
150
+ )(_create_auth_handler(provider))
151
+
152
+ router.get(
153
+ f"/login/provider/{provider}",
154
+ name=f"login_with_{provider}",
155
+ response_model=None,
156
+ )(_create_auth_login_handler(provider))
@@ -1,7 +1,7 @@
1
1
  __version__ = "0.0.0-default"
2
2
 
3
3
  try:
4
- from .._version import version as __version__ # type: ignore
4
+ from app._version import version as __version__ # type: ignore
5
5
  except ImportError:
6
6
  pass
7
7