vibetuner 2.14.1__py3-none-any.whl → 2.16.2__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.
Potentially problematic release.
This version of vibetuner might be problematic. Click here for more details.
- vibetuner/templates/frontend/debug/users.html.jinja +2 -2
- vibetuner/templates/frontend/login.html.jinja +11 -13
- {vibetuner-2.14.1.dist-info → vibetuner-2.16.2.dist-info}/METADATA +15 -13
- {vibetuner-2.14.1.dist-info → vibetuner-2.16.2.dist-info}/RECORD +8 -8
- {vibetuner-2.14.1.dist-info → vibetuner-2.16.2.dist-info}/WHEEL +1 -1
- /vibetuner/templates/email/{default/magic_link.html.jinja → magic_link.html.jinja} +0 -0
- /vibetuner/templates/email/{default/magic_link.txt.jinja → magic_link.txt.jinja} +0 -0
- {vibetuner-2.14.1.dist-info → vibetuner-2.16.2.dist-info}/entry_points.txt +0 -0
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
User ID: <code>{{ current_user_id }}</code>
|
|
37
37
|
</p>
|
|
38
38
|
<div class="card-actions justify-end">
|
|
39
|
-
<form method="post" action="
|
|
39
|
+
<form method="post" action="{{ url_for('debug.stop_impersonation') }}">
|
|
40
40
|
<button type="submit" class="btn btn-secondary btn-sm">Stop Impersonation</button>
|
|
41
41
|
</form>
|
|
42
42
|
</div>
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
<td class="text-center">
|
|
106
106
|
{% if current_user_id != user.id|string %}
|
|
107
107
|
<form method="post"
|
|
108
|
-
action="
|
|
108
|
+
action="{{ url_for('debug.impersonate_user', user_id=user.id) }}"
|
|
109
109
|
class="inline">
|
|
110
110
|
<button type="submit" class="btn btn-outline btn-sm">Impersonate</button>
|
|
111
111
|
</form>
|
|
@@ -15,7 +15,11 @@
|
|
|
15
15
|
{% if has_oauth and providers %}
|
|
16
16
|
<div class="space-y-3 mb-6">
|
|
17
17
|
{% for provider in providers %}
|
|
18
|
-
|
|
18
|
+
{% set login_url = url_for('login_with_' + provider) %}
|
|
19
|
+
{% if next %}
|
|
20
|
+
{% set login_url = login_url ~ '?next=' ~ next %}
|
|
21
|
+
{% endif %}
|
|
22
|
+
<a href="{{ login_url }}"
|
|
19
23
|
class="btn btn-outline btn-block justify-start gap-3 hover:btn-primary group transition-all duration-300 hover:scale-[1.02]">
|
|
20
24
|
<span>{{ _("Continue with %(provider)s") | format(provider=provider.title()) }}</span>
|
|
21
25
|
</a>
|
|
@@ -23,13 +27,13 @@
|
|
|
23
27
|
</div>
|
|
24
28
|
{% endif %}
|
|
25
29
|
<!-- Divider -->
|
|
26
|
-
{% if has_oauth and providers and has_email %}
|
|
30
|
+
{% if has_oauth and providers and has_email %}
|
|
31
|
+
<div class="divider text-base-content/50">{{ _("OR") }}</div>
|
|
32
|
+
{% endif %}
|
|
27
33
|
<!-- Email Magic Link -->
|
|
28
34
|
{% if has_email %}
|
|
29
35
|
<div class="bg-base-200/50 rounded-2xl p-6 border border-base-300/50">
|
|
30
|
-
<form method="post"
|
|
31
|
-
class="space-y-4"
|
|
32
|
-
action="{{ url_for("send_magic_link") }}">
|
|
36
|
+
<form method="post" class="space-y-4" action="{{ url_for("send_magic_link") }}">
|
|
33
37
|
{% if next %}<input type="hidden" name="next" value="{{ next }}" />{% endif %}
|
|
34
38
|
<div class="form-control">
|
|
35
39
|
<label class="label" for="email">
|
|
@@ -44,10 +48,7 @@
|
|
|
44
48
|
required
|
|
45
49
|
autocomplete="email" />
|
|
46
50
|
<div class="absolute inset-y-0 right-0 flex items-center pr-3">
|
|
47
|
-
<svg class="w-5 h-5 text-base-content/40"
|
|
48
|
-
fill="none"
|
|
49
|
-
stroke="currentColor"
|
|
50
|
-
viewBox="0 0 24 24">
|
|
51
|
+
<svg class="w-5 h-5 text-base-content/40" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
51
52
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 4.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" />
|
|
52
53
|
</svg>
|
|
53
54
|
</div>
|
|
@@ -64,10 +65,7 @@
|
|
|
64
65
|
<span>{{ _("Send Magic Link") }}</span>
|
|
65
66
|
</button>
|
|
66
67
|
<div class="alert alert-info bg-info/10 border-info/20">
|
|
67
|
-
<svg class="w-5 h-5 text-info shrink-0"
|
|
68
|
-
fill="none"
|
|
69
|
-
stroke="currentColor"
|
|
70
|
-
viewBox="0 0 24 24">
|
|
68
|
+
<svg class="w-5 h-5 text-info shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
71
69
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
72
70
|
</svg>
|
|
73
71
|
<div class="text-sm">
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: vibetuner
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.16.2
|
|
4
4
|
Summary: Core Python framework and blessed dependencies for production-ready FastAPI + MongoDB + HTMX projects
|
|
5
5
|
Keywords: fastapi,mongodb,htmx,web-framework,scaffolding,oauth,background-jobs
|
|
6
6
|
Author: All Tuner Labs, S.L.
|
|
@@ -42,15 +42,14 @@ Requires-Dist: streaq[web]<6.0.0
|
|
|
42
42
|
Requires-Dist: typer-slim[standard]>=0.20.0
|
|
43
43
|
Requires-Dist: babel>=2.17.0 ; extra == 'dev'
|
|
44
44
|
Requires-Dist: cloudflare>=4.3.1 ; extra == 'dev'
|
|
45
|
-
Requires-Dist: djlint>=1.36.4 ; extra == 'dev'
|
|
46
45
|
Requires-Dist: dunamai>=1.25.0 ; extra == 'dev'
|
|
47
46
|
Requires-Dist: gh-bin>=2.81.0 ; extra == 'dev'
|
|
48
47
|
Requires-Dist: granian[pname,reload]>=2.5.7 ; extra == 'dev'
|
|
49
48
|
Requires-Dist: just-bin>=1.43.0 ; extra == 'dev'
|
|
50
49
|
Requires-Dist: pre-commit>=4.3.0 ; extra == 'dev'
|
|
51
50
|
Requires-Dist: pysemver>=0.5.0 ; extra == 'dev'
|
|
52
|
-
Requires-Dist: ruff>=0.14.
|
|
53
|
-
Requires-Dist: rumdl>=0.0.
|
|
51
|
+
Requires-Dist: ruff>=0.14.4 ; extra == 'dev'
|
|
52
|
+
Requires-Dist: rumdl>=0.0.172 ; extra == 'dev'
|
|
54
53
|
Requires-Dist: semver>=3.0.4 ; extra == 'dev'
|
|
55
54
|
Requires-Dist: taplo>=0.9.3 ; extra == 'dev'
|
|
56
55
|
Requires-Dist: ty>=0.0.1a25 ; extra == 'dev'
|
|
@@ -60,8 +59,8 @@ Requires-Dist: types-pyyaml>=6.0.12.20250915 ; extra == 'dev'
|
|
|
60
59
|
Requires-Dist: uv-bump>=0.3.1 ; extra == 'dev'
|
|
61
60
|
Requires-Python: >=3.11
|
|
62
61
|
Project-URL: Changelog, https://github.com/alltuner/vibetuner/blob/main/CHANGELOG.md
|
|
63
|
-
Project-URL: Documentation, https://
|
|
64
|
-
Project-URL: Homepage, https://
|
|
62
|
+
Project-URL: Documentation, https://vibetuner.alltuner.com/
|
|
63
|
+
Project-URL: Homepage, https://vibetuner.alltuner.com/
|
|
65
64
|
Project-URL: Issues, https://github.com/alltuner/vibetuner/issues
|
|
66
65
|
Project-URL: Repository, https://github.com/alltuner/vibetuner
|
|
67
66
|
Provides-Extra: dev
|
|
@@ -69,13 +68,16 @@ Description-Content-Type: text/markdown
|
|
|
69
68
|
|
|
70
69
|
# vibetuner
|
|
71
70
|
|
|
72
|
-
|
|
71
|
+
Core Python framework and blessed dependencies for Vibetuner projects
|
|
73
72
|
|
|
74
|
-
This package provides the complete Python framework and curated dependency set for building modern
|
|
73
|
+
This package provides the complete Python framework and curated dependency set for building modern
|
|
74
|
+
web applications with Vibetuner. It includes everything from FastAPI and MongoDB integration to
|
|
75
|
+
authentication, background jobs, and CLI tools.
|
|
75
76
|
|
|
76
77
|
## What is Vibetuner?
|
|
77
78
|
|
|
78
|
-
Vibetuner is a production-ready scaffolding tool for FastAPI + MongoDB + HTMX web applications.
|
|
79
|
+
Vibetuner is a production-ready scaffolding tool for FastAPI + MongoDB + HTMX web applications.
|
|
80
|
+
This package (`vibetuner`) is the Python component that provides:
|
|
79
81
|
|
|
80
82
|
- Complete web application framework built on FastAPI
|
|
81
83
|
- MongoDB integration with Beanie ODM
|
|
@@ -84,7 +86,8 @@ Vibetuner is a production-ready scaffolding tool for FastAPI + MongoDB + HTMX we
|
|
|
84
86
|
- CLI framework with Typer
|
|
85
87
|
- Email services, blob storage, and more
|
|
86
88
|
|
|
87
|
-
**This package is designed to be used within projects generated by the Vibetuner scaffolding
|
|
89
|
+
**This package is designed to be used within projects generated by the Vibetuner scaffolding
|
|
90
|
+
tool.** For standalone use, you'll need to set up the project structure manually.
|
|
88
91
|
|
|
89
92
|
## Installation
|
|
90
93
|
|
|
@@ -172,7 +175,6 @@ vibetuner run prod worker
|
|
|
172
175
|
The `[dev]` extra includes all tools needed for development:
|
|
173
176
|
|
|
174
177
|
- **Ruff**: Fast linting and formatting
|
|
175
|
-
- **djlint**: Template linting
|
|
176
178
|
- **Babel**: i18n message extraction
|
|
177
179
|
- **pre-commit**: Git hooks
|
|
178
180
|
- **Type stubs**: For aioboto3, authlib, PyYAML
|
|
@@ -205,7 +207,7 @@ async def hello():
|
|
|
205
207
|
|
|
206
208
|
For complete documentation, guides, and examples, see the main Vibetuner repository:
|
|
207
209
|
|
|
208
|
-
**📖 [Vibetuner Documentation](https://
|
|
210
|
+
**📖 [Vibetuner Documentation](https://vibetuner.alltuner.com/)**
|
|
209
211
|
|
|
210
212
|
## Package Ecosystem
|
|
211
213
|
|
|
@@ -232,7 +234,7 @@ See [LICENSE](https://github.com/alltuner/vibetuner/blob/main/LICENSE) for detai
|
|
|
232
234
|
## Links
|
|
233
235
|
|
|
234
236
|
- **Main Repository**: <https://github.com/alltuner/vibetuner>
|
|
235
|
-
- **Documentation**: <https://
|
|
237
|
+
- **Documentation**: <https://vibetuner.alltuner.com/>
|
|
236
238
|
- **Issues**: <https://github.com/alltuner/vibetuner/issues>
|
|
237
239
|
- **PyPI**: <https://pypi.org/project/vibetuner/>
|
|
238
240
|
- **npm Package**: <https://www.npmjs.com/package/@alltuner/vibetuner>
|
|
@@ -48,8 +48,8 @@ vibetuner/tasks/context.py,sha256=FOFUDWGNo1h8G8qlE-1Gbkh-Kd1z3WZTqSMHkvZ68v8,86
|
|
|
48
48
|
vibetuner/tasks/worker.py,sha256=UUknSuVl0orXl3hrW8EPpaGgRI8wYoVm-p5FnDki0Gc,437
|
|
49
49
|
vibetuner/templates/email/AGENTS.md,sha256=oRCocZqDM0qKCg6REwU-MwTtDbDTbL5DwpmkshVhIEY,1274
|
|
50
50
|
vibetuner/templates/email/CLAUDE.md,sha256=oRCocZqDM0qKCg6REwU-MwTtDbDTbL5DwpmkshVhIEY,1274
|
|
51
|
-
vibetuner/templates/email/
|
|
52
|
-
vibetuner/templates/email/
|
|
51
|
+
vibetuner/templates/email/magic_link.html.jinja,sha256=7npaw9XzttjAe4Y5pk7J47eZJ3K0vR_h7Dz01YT3Xis,567
|
|
52
|
+
vibetuner/templates/email/magic_link.txt.jinja,sha256=dANak9ion1cpILt45V3GcI2qnL_gKFPj7PsZKYV0m5s,200
|
|
53
53
|
vibetuner/templates/frontend/AGENTS.md,sha256=LHUslpKlYJ2eQXY7s3uyuAvhyCIoK_6Qox0O0rwIuaI,2299
|
|
54
54
|
vibetuner/templates/frontend/CLAUDE.md,sha256=LHUslpKlYJ2eQXY7s3uyuAvhyCIoK_6Qox0O0rwIuaI,2299
|
|
55
55
|
vibetuner/templates/frontend/base/favicons.html.jinja,sha256=TIFiB013aWvQN1zMuHK9K_10AS2zjW7ZtWCxJJmD1kg,70
|
|
@@ -61,13 +61,13 @@ vibetuner/templates/frontend/debug/collections.html.jinja,sha256=YpvUaqKJDQ_Rre1
|
|
|
61
61
|
vibetuner/templates/frontend/debug/components/debug_nav.html.jinja,sha256=czC5xsguAU3m-LC_DDna067B-pJY9k-i7hXRh5hihHY,2963
|
|
62
62
|
vibetuner/templates/frontend/debug/index.html.jinja,sha256=FGIvBfmOGJ0OI2_e8oYiFQ9WCLjy2e-aIxyM6qdIzW8,4890
|
|
63
63
|
vibetuner/templates/frontend/debug/info.html.jinja,sha256=lylzLX-K2TbDq8SmrLOzo8rKUng3njmkwQAgmFNqy5I,14966
|
|
64
|
-
vibetuner/templates/frontend/debug/users.html.jinja,sha256=
|
|
64
|
+
vibetuner/templates/frontend/debug/users.html.jinja,sha256=9GSCCLz4oCtbQj24tkmBaGeUL7tg9CTnXurp2GmG7gE,7807
|
|
65
65
|
vibetuner/templates/frontend/debug/version.html.jinja,sha256=nLh_zUzkO5OuyYHs_SH3Bu9Fa2b2N-YJLiQBTTmQVJM,2899
|
|
66
66
|
vibetuner/templates/frontend/email/magic_link.txt.jinja,sha256=fTVl3Wjfvp3EJAB5DYt01EL_O7o9r8lHedDH05YP44c,192
|
|
67
67
|
vibetuner/templates/frontend/email_sent.html.jinja,sha256=Cpvzza80v9KmON66hKmhwIgvd9tkhjhM7O8qe0YLjF4,5235
|
|
68
68
|
vibetuner/templates/frontend/index.html.jinja,sha256=P4pcI1JKrr5YBMGbgjTSrKlvORRgzi87VvNKsh1B5GE,924
|
|
69
69
|
vibetuner/templates/frontend/lang/select.html.jinja,sha256=4jHo8QWvMOIeK_KqHzSaDzgvuT3v8MlmjTrrYIl2sjk,224
|
|
70
|
-
vibetuner/templates/frontend/login.html.jinja,sha256=
|
|
70
|
+
vibetuner/templates/frontend/login.html.jinja,sha256=JvyC6-C09IyxSYa84HOX6D6vpqxPXQLZPp3HTTpJwAc,5279
|
|
71
71
|
vibetuner/templates/frontend/meta/browserconfig.xml.jinja,sha256=5DE-Dowxw3fRg4UJerW6tVrUYdHWUsUOfS_YucoRVXQ,300
|
|
72
72
|
vibetuner/templates/frontend/meta/robots.txt.jinja,sha256=SUBJqQCOW5FFdD4uIkReo04NcAYnjITLyB4Wk1wBcS4,46
|
|
73
73
|
vibetuner/templates/frontend/meta/site.webmanifest.jinja,sha256=QCg2Z2GXd2AwJ3C8CnW9Brvu3cbXcZiquLNEzA8FsOc,150
|
|
@@ -80,7 +80,7 @@ vibetuner/templates/markdown/CLAUDE.md,sha256=jcvoQNazCj-t54s0gr-4_qyxLMP8iPf2ur
|
|
|
80
80
|
vibetuner/templates.py,sha256=xRoMb_oyAI5x4kxfpg56UcLKkT8e9HVn-o3KFAu9ISE,5094
|
|
81
81
|
vibetuner/time.py,sha256=3_DtveCCzI20ocTnAlTh2u7FByUXtINaUoQZO-_uZow,1188
|
|
82
82
|
vibetuner/versioning.py,sha256=UAHGoNsv3QEPAJgHyt_Q8I26SW7ng2FnZlX2-0M6r6U,156
|
|
83
|
-
vibetuner-2.
|
|
84
|
-
vibetuner-2.
|
|
85
|
-
vibetuner-2.
|
|
86
|
-
vibetuner-2.
|
|
83
|
+
vibetuner-2.16.2.dist-info/WHEEL,sha256=DpNsHFUm_gffZe1FgzmqwuqiuPC6Y-uBCzibcJcdupM,78
|
|
84
|
+
vibetuner-2.16.2.dist-info/entry_points.txt,sha256=aKIj9YCCXizjYupx9PeWkUJePg3ncHke_LTS5rmCsfs,49
|
|
85
|
+
vibetuner-2.16.2.dist-info/METADATA,sha256=GhHpeWNkqWJHrzm9szot_tWu_3z5eVp4IfbaQ_BFkP8,8014
|
|
86
|
+
vibetuner-2.16.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|