vibetuner 2.8.0__tar.gz → 2.8.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.

Potentially problematic release.


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

Files changed (83) hide show
  1. {vibetuner-2.8.0 → vibetuner-2.8.2}/PKG-INFO +3 -3
  2. {vibetuner-2.8.0 → vibetuner-2.8.2}/pyproject.toml +3 -3
  3. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/cli/run.py +0 -1
  4. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/__init__.py +5 -0
  5. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/routes/auth.py +19 -13
  6. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/tasks/AGENTS.md +1 -1
  7. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/tasks/CLAUDE.md +1 -1
  8. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/__init__.py +0 -0
  9. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/__main__.py +0 -0
  10. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/cli/__init__.py +0 -0
  11. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/config.py +0 -0
  12. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/context.py +0 -0
  13. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/AGENTS.md +0 -0
  14. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/CLAUDE.md +0 -0
  15. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/context.py +0 -0
  16. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/deps.py +0 -0
  17. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/email.py +0 -0
  18. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/hotreload.py +0 -0
  19. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/lifespan.py +0 -0
  20. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/middleware.py +0 -0
  21. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/oauth.py +0 -0
  22. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/routes/__init__.py +0 -0
  23. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/routes/debug.py +0 -0
  24. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/routes/health.py +0 -0
  25. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/routes/language.py +0 -0
  26. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/routes/meta.py +0 -0
  27. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/routes/user.py +0 -0
  28. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/frontend/templates.py +0 -0
  29. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/logging.py +0 -0
  30. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/models/AGENTS.md +0 -0
  31. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/models/CLAUDE.md +0 -0
  32. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/models/__init__.py +0 -0
  33. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/models/blob.py +0 -0
  34. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/models/email_verification.py +0 -0
  35. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/models/mixins.py +0 -0
  36. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/models/oauth.py +0 -0
  37. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/models/registry.py +0 -0
  38. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/models/types.py +0 -0
  39. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/models/user.py +0 -0
  40. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/mongo.py +0 -0
  41. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/paths.py +0 -0
  42. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/services/AGENTS.md +0 -0
  43. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/services/CLAUDE.md +0 -0
  44. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/services/__init__.py +0 -0
  45. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/services/blob.py +0 -0
  46. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/services/email.py +0 -0
  47. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/tasks/__init__.py +0 -0
  48. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/tasks/context.py +0 -0
  49. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/tasks/worker.py +0 -0
  50. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/email/AGENTS.md +0 -0
  51. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/email/CLAUDE.md +0 -0
  52. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/email/default/magic_link.html.jinja +0 -0
  53. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/email/default/magic_link.txt.jinja +0 -0
  54. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/AGENTS.md +0 -0
  55. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/CLAUDE.md +0 -0
  56. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/base/favicons.html.jinja +0 -0
  57. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/base/footer.html.jinja +0 -0
  58. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/base/header.html.jinja +0 -0
  59. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/base/opengraph.html.jinja +0 -0
  60. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/base/skeleton.html.jinja +0 -0
  61. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/debug/collections.html.jinja +0 -0
  62. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/debug/components/debug_nav.html.jinja +0 -0
  63. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/debug/index.html.jinja +0 -0
  64. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/debug/info.html.jinja +0 -0
  65. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/debug/users.html.jinja +0 -0
  66. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/debug/version.html.jinja +0 -0
  67. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/email/magic_link.txt.jinja +0 -0
  68. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/email_sent.html.jinja +0 -0
  69. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/index.html.jinja +0 -0
  70. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/lang/select.html.jinja +0 -0
  71. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/login.html.jinja +0 -0
  72. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/meta/browserconfig.xml.jinja +0 -0
  73. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/meta/robots.txt.jinja +0 -0
  74. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/meta/site.webmanifest.jinja +0 -0
  75. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/meta/sitemap.xml.jinja +0 -0
  76. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/user/edit.html.jinja +0 -0
  77. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/frontend/user/profile.html.jinja +0 -0
  78. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/markdown/.placeholder +0 -0
  79. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/markdown/AGENTS.md +0 -0
  80. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates/markdown/CLAUDE.md +0 -0
  81. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/templates.py +0 -0
  82. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/time.py +0 -0
  83. {vibetuner-2.8.0 → vibetuner-2.8.2}/src/vibetuner/versioning.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: vibetuner
3
- Version: 2.8.0
3
+ Version: 2.8.2
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
@@ -9,7 +9,7 @@ Requires-Dist: authlib>=1.6.5
9
9
  Requires-Dist: beanie[zstd]>=2.0.0
10
10
  Requires-Dist: click>=8.3.0
11
11
  Requires-Dist: email-validator>=2.3.0
12
- Requires-Dist: fastapi[standard-no-fastapi-cloud-cli]>=0.120.4
12
+ Requires-Dist: fastapi[standard-no-fastapi-cloud-cli]>=0.121.0
13
13
  Requires-Dist: granian[pname]>=2.5.6
14
14
  Requires-Dist: httpx[http2]>=0.28.1
15
15
  Requires-Dist: itsdangerous>=2.2.0
@@ -36,7 +36,7 @@ Requires-Dist: just-bin>=1.43.0 ; extra == 'dev'
36
36
  Requires-Dist: pre-commit>=4.3.0 ; extra == 'dev'
37
37
  Requires-Dist: pysemver>=0.5.0 ; extra == 'dev'
38
38
  Requires-Dist: ruff>=0.14.3 ; extra == 'dev'
39
- Requires-Dist: rumdl>=0.0.170 ; extra == 'dev'
39
+ Requires-Dist: rumdl>=0.0.171 ; extra == 'dev'
40
40
  Requires-Dist: semver>=3.0.4 ; extra == 'dev'
41
41
  Requires-Dist: taplo>=0.9.3 ; extra == 'dev'
42
42
  Requires-Dist: ty>=0.0.1a25 ; extra == 'dev'
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "vibetuner"
3
3
  description = "Blessed Python dependencies for Vibetuner projects"
4
- version = "2.8.0"
4
+ version = "2.8.2"
5
5
  requires-python = ">=3.11"
6
6
  dependencies = [
7
7
  # These are the base dependencies of AllTuner's blessed stack
@@ -12,7 +12,7 @@ dependencies = [
12
12
  "beanie[zstd]>=2.0.0",
13
13
  "click>=8.3.0",
14
14
  "email-validator>=2.3.0",
15
- "fastapi[standard-no-fastapi-cloud-cli]>=0.120.4",
15
+ "fastapi[standard-no-fastapi-cloud-cli]>=0.121.0",
16
16
  "granian[pname]>=2.5.6",
17
17
  "httpx[http2]>=0.28.1",
18
18
  "itsdangerous>=2.2.0",
@@ -44,7 +44,7 @@ dev = [
44
44
  "pre-commit>=4.3.0",
45
45
  "pysemver>=0.5.0",
46
46
  "ruff>=0.14.3",
47
- "rumdl>=0.0.170",
47
+ "rumdl>=0.0.171",
48
48
  "semver>=3.0.4",
49
49
  "taplo>=0.9.3",
50
50
  "ty>=0.0.1a25",
@@ -70,7 +70,6 @@ def dev(
70
70
 
71
71
  # Define paths to watch for changes
72
72
  reload_paths = [
73
- Path("src/vibetuner"),
74
73
  Path("src/app"),
75
74
  Path("templates/frontend"),
76
75
  Path("templates/email"),
@@ -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))
@@ -28,7 +28,7 @@ This module contains the scaffolding's core task components:
28
28
 
29
29
  Tasks are only available if job queue was enabled during scaffolding.
30
30
 
31
- The worker is defined in `src/vibetuner/tasks/worker.py` and should be imported from there in your app tasks.
31
+ The worker is defined in `vibetuner.tasks.worker` and should be imported from there in your app tasks.
32
32
 
33
33
  ## User Task Pattern (for reference)
34
34
 
@@ -28,7 +28,7 @@ This module contains the scaffolding's core task components:
28
28
 
29
29
  Tasks are only available if job queue was enabled during scaffolding.
30
30
 
31
- The worker is defined in `src/vibetuner/tasks/worker.py` and should be imported from there in your app tasks.
31
+ The worker is defined in `vibetuner.tasks.worker` and should be imported from there in your app tasks.
32
32
 
33
33
  ## User Task Pattern (for reference)
34
34