vibetuner 2.18.1__py3-none-any.whl → 2.30.1__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.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: vibetuner
3
- Version: 2.18.1
3
+ Version: 2.30.1
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.
@@ -20,12 +20,12 @@ Requires-Dist: aioboto3>=15.5.0
20
20
  Requires-Dist: arel>=0.4.0
21
21
  Requires-Dist: asyncer>=0.0.10
22
22
  Requires-Dist: authlib>=1.6.5
23
- Requires-Dist: beanie[zstd]>=2.0.0
24
- Requires-Dist: click>=8.3.0
25
- Requires-Dist: copier>=9.10.3,<9.10.4
23
+ Requires-Dist: beanie[zstd]>=2.0.1
24
+ Requires-Dist: click>=8.3.1
25
+ Requires-Dist: copier>=9.11.0,<9.11.1
26
26
  Requires-Dist: email-validator>=2.3.0
27
- Requires-Dist: fastapi[standard-no-fastapi-cloud-cli]>=0.121.1
28
- Requires-Dist: granian[pname]>=2.5.7
27
+ Requires-Dist: fastapi[standard-no-fastapi-cloud-cli]>=0.122.0
28
+ Requires-Dist: granian[pname]>=2.6.0
29
29
  Requires-Dist: httpx[http2]>=0.28.1
30
30
  Requires-Dist: itsdangerous>=2.2.0
31
31
  Requires-Dist: loguru>=0.7.3
@@ -33,7 +33,7 @@ Requires-Dist: pydantic[email]>=2.12.4
33
33
  Requires-Dist: pydantic-extra-types[pycountry]>=2.10.6
34
34
  Requires-Dist: pydantic-settings>=2.12.0
35
35
  Requires-Dist: pyyaml>=6.0.3
36
- Requires-Dist: redis[hiredis]>=7.0.1
36
+ Requires-Dist: redis[hiredis]>=7.1.0
37
37
  Requires-Dist: rich>=14.2.0
38
38
  Requires-Dist: sse-starlette>=3.0.3
39
39
  Requires-Dist: starlette-babel>=1.0.3
@@ -44,20 +44,22 @@ Requires-Dist: babel>=2.17.0 ; extra == 'dev'
44
44
  Requires-Dist: cloudflare>=4.3.1 ; extra == 'dev'
45
45
  Requires-Dist: djlint>=1.36.4 ; extra == 'dev'
46
46
  Requires-Dist: dunamai>=1.25.0 ; extra == 'dev'
47
- Requires-Dist: gh-bin>=2.83.0 ; extra == 'dev'
48
- Requires-Dist: granian[pname,reload]>=2.5.7 ; extra == 'dev'
49
- Requires-Dist: just-bin>=1.43.0 ; extra == 'dev'
50
- Requires-Dist: pre-commit>=4.4.0 ; extra == 'dev'
47
+ Requires-Dist: gh-bin>=2.83.1 ; extra == 'dev'
48
+ Requires-Dist: granian[pname,reload]>=2.6.0 ; extra == 'dev'
49
+ Requires-Dist: just-bin>=1.43.1 ; extra == 'dev'
50
+ Requires-Dist: prek>=0.2.18 ; extra == 'dev'
51
51
  Requires-Dist: pysemver>=0.5.0 ; extra == 'dev'
52
- Requires-Dist: ruff>=0.14.4 ; extra == 'dev'
53
- Requires-Dist: rumdl>=0.0.174 ; extra == 'dev'
52
+ Requires-Dist: ruff>=0.14.6 ; extra == 'dev'
53
+ Requires-Dist: rumdl>=0.0.182 ; extra == 'dev'
54
54
  Requires-Dist: semver>=3.0.4 ; extra == 'dev'
55
55
  Requires-Dist: taplo>=0.9.3 ; extra == 'dev'
56
- Requires-Dist: ty>=0.0.1a26 ; extra == 'dev'
56
+ Requires-Dist: ty>=0.0.1a27 ; extra == 'dev'
57
57
  Requires-Dist: types-aioboto3[s3,ses]>=15.5.0 ; extra == 'dev'
58
58
  Requires-Dist: types-authlib>=1.6.5.20251005 ; extra == 'dev'
59
59
  Requires-Dist: types-pyyaml>=6.0.12.20250915 ; extra == 'dev'
60
60
  Requires-Dist: uv-bump>=0.3.1 ; extra == 'dev'
61
+ Requires-Dist: pytest>=9.0.1 ; extra == 'test'
62
+ Requires-Dist: pytest-asyncio>=1.3.0 ; extra == 'test'
61
63
  Requires-Python: >=3.11
62
64
  Project-URL: Changelog, https://github.com/alltuner/vibetuner/blob/main/CHANGELOG.md
63
65
  Project-URL: Documentation, https://vibetuner.alltuner.com/
@@ -65,6 +67,7 @@ Project-URL: Homepage, https://vibetuner.alltuner.com/
65
67
  Project-URL: Issues, https://github.com/alltuner/vibetuner/issues
66
68
  Project-URL: Repository, https://github.com/alltuner/vibetuner
67
69
  Provides-Extra: dev
70
+ Provides-Extra: test
68
71
  Description-Content-Type: text/markdown
69
72
 
70
73
  # vibetuner
@@ -177,7 +180,7 @@ The `[dev]` extra includes all tools needed for development:
177
180
 
178
181
  - **Ruff**: Fast linting and formatting
179
182
  - **Babel**: i18n message extraction
180
- - **pre-commit**: Git hooks
183
+ - **pre-commit**: Git hooks (prek is a fast pre-commit drop-in replacement)
181
184
  - **Type stubs**: For aioboto3, authlib, PyYAML
182
185
  - And more...
183
186
 
@@ -1,26 +1,25 @@
1
1
  vibetuner/__init__.py,sha256=rFIVCmxkKTT_g477V8biCw0lgpudyuUabXhYxg189lY,90
2
2
  vibetuner/__main__.py,sha256=Ye9oBAgXhcYQ4I4yZli3TIXF5lWQ9yY4tTPs4XnDDUY,29
3
- vibetuner/cli/__init__.py,sha256=IY2wJ_ErX2PimyYSe5SL_zGrENSWLgW-cXgMRXNC7pE,1992
4
- vibetuner/cli/run.py,sha256=mHvZypizNfVwdLo7k8SvBO7HPUF4Vka9hjJlECZCGfA,5009
5
- vibetuner/cli/scaffold.py,sha256=qADWxx1gYECQ8N6dgvJmlucT6mZ29rxWu3VZhbWmhC0,5710
6
- vibetuner/config.py,sha256=Z-o7jP1dLvPR0yVzW9wPvRgQezbl6Be40EpuG9i9Eos,4157
3
+ vibetuner/cli/__init__.py,sha256=lmuLn8ytkO0JwX3ILm6AFQmrzEMe5LeHmwV2oyyy0sI,3543
4
+ vibetuner/cli/run.py,sha256=TILyvy-bZTKWcAK-K2SNYqqD-G3ypCay-ghadGztqRQ,5021
5
+ vibetuner/cli/scaffold.py,sha256=5MipgasDKsK6WDa_vpfY4my1kyismkaskvXE277NE-s,6450
6
+ vibetuner/config.py,sha256=UfEyAlow6lE_npr53dgESb-KZQuohP18vlTncOuWJC4,4571
7
7
  vibetuner/context.py,sha256=h4f4FfkmLlOD6WiSLhx7-IjFvIA4zcrsAp6478l6npg,743
8
- vibetuner/frontend/__init__.py,sha256=QpQY9kUWvKzMtMCh9Lcoyz1dNdYfW1d_Ue4WUnzz_No,3017
9
- vibetuner/frontend/context.py,sha256=yd9mJ8Cj9AUeHE533dofEoyCkw6oSPowdq397whfN_s,169
8
+ vibetuner/frontend/__init__.py,sha256=COZuPRzTFUfxeyWkvmz0GxBBFFvBHtf2mMGmLw5fy2c,3965
10
9
  vibetuner/frontend/deps.py,sha256=b3ocC_ryaK2Jp51SfcFqckrXiaL7V-chkFRqLjzgA_c,1296
11
10
  vibetuner/frontend/email.py,sha256=k0d7FCZCge5VYOKp3fLsbx7EA5_SrtBkpMs57o4W7u0,1119
12
11
  vibetuner/frontend/hotreload.py,sha256=Gl7FIKJaiCVVoyWQqdErBUOKDP1cGBFUpGzqHMiJd10,285
13
- vibetuner/frontend/lifespan.py,sha256=iKrRcEaPn5Q2B4ZZhMKzXE-hBM8OxjwMn6A5Q1FUbWY,679
14
- vibetuner/frontend/middleware.py,sha256=aVsEeXGuBqcBB_IlmtBW_3icuvVix7P3A63AkyeX_38,4957
12
+ vibetuner/frontend/lifespan.py,sha256=ZduSyH6E2_IW9vFWH5jww2R22mRybSm_mNfbtDHnsS0,1074
13
+ vibetuner/frontend/middleware.py,sha256=iOqcp-7WwRqHLYa1dg3xDzAXGrpqmYpqBmtQcdd9obY,4890
15
14
  vibetuner/frontend/oauth.py,sha256=EzEwoOZ_8xn_CiqAWpNoEdhV2NPxZKKwF2bA6W6Bkj0,5884
16
15
  vibetuner/frontend/routes/__init__.py,sha256=nHhiylHIUPZ2R-Bd7vXEGHLJBQ7fNuzPTJodjJR3lyc,428
17
16
  vibetuner/frontend/routes/auth.py,sha256=vKE-Dm2yPXReaOLvcxfT4a6df1dKUoteZ4p46v8Elm4,4331
18
- vibetuner/frontend/routes/debug.py,sha256=Mzbyx3gv_mCxg0sdjY4p7LXgH1wI3BoEyn1sRZuGY90,12743
17
+ vibetuner/frontend/routes/debug.py,sha256=hqiuRjcLOvL2DdhA83HUzp5svECKjyFB-LoNn7xDiFE,13269
19
18
  vibetuner/frontend/routes/health.py,sha256=_XkMpdMNUemu7qzkGkqn5TBnZmGrArA3Xps5CWCcGlg,959
20
19
  vibetuner/frontend/routes/language.py,sha256=wHNfdewqWfK-2JLXwglu0Q0b_e00HFGd0A2-PYT44LE,1240
21
20
  vibetuner/frontend/routes/meta.py,sha256=pSyIxQsiB0QZSYwCQbS07KhkT5oHC5r9jvjUDIqZRGw,1409
22
21
  vibetuner/frontend/routes/user.py,sha256=b8ow6IGnfsHosSwSmEIYZtuQJnW_tacnNjp_aMnqWxU,2666
23
- vibetuner/frontend/templates.py,sha256=1k2jCGBdMx9U9RDcHmuO6fiNEXrRYZ0Mzk51H9XAlrM,5322
22
+ vibetuner/frontend/templates.py,sha256=BLBBcF9e-EUDQXeOUzCHgQx1D0lCMkLfUXgNCwG6CtE,6607
24
23
  vibetuner/logging.py,sha256=9eNofqVtKZCBDS33NbBI7Sv2875gM8MNStTSCjX2AXQ,2409
25
24
  vibetuner/models/__init__.py,sha256=JvmQvzDIxaI7zlk-ROCWEbuzxXSUOqCshINUjgu-AfQ,325
26
25
  vibetuner/models/blob.py,sha256=F30HFS4Z_Bji_PGPflWIv4dOwqKLsEWQHcjW1Oz_79M,2523
@@ -30,14 +29,15 @@ vibetuner/models/oauth.py,sha256=BdOZbW47Das9ntHTtRmVdl1lB5zLCcXW2fyVJ-tQ_F8,150
30
29
  vibetuner/models/registry.py,sha256=O5YG7vOrWluqpH5N7m44v72wbscMhU_Pu3TJw_u0MTk,311
31
30
  vibetuner/models/types.py,sha256=Lj3ASEvx5eNgQMcVhNyKQHHolJqDxj2yH8S-M9oa4J8,402
32
31
  vibetuner/models/user.py,sha256=ttcSH4mVREPhA6bCFUWXKfJ9_8_Iq3lEYXe3rDrslw4,2696
33
- vibetuner/mongo.py,sha256=F8AzD33LWQ6jq7kFUqQPSPDSr7KPlbOy8THsvXHFKdg,504
34
- vibetuner/paths.py,sha256=WFHuaanFOBI7v7xOHjyLvNMYKwX0KqOyi63x62wLE-M,7470
32
+ vibetuner/mongo.py,sha256=BejYrqHrupNfvNhEu6xUakCnRQy3YdiExk2r6hkafOs,1056
33
+ vibetuner/paths.py,sha256=hWWcjwVPNxac74rRuHgHD46CwmQKHJidEALo-euw72k,8360
35
34
  vibetuner/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
- vibetuner/services/blob.py,sha256=-lEGIWe30yR2IuTfy5bB9Sg_PX0HoYC_WMTQ3VN28gU,5660
37
- vibetuner/services/email.py,sha256=IavJZS5MI40LlF_cjBpPPRx_S2r1JD4GcFg3-dWkzPA,1626
38
- vibetuner/tasks/__init__.py,sha256=uETtKOA5rJ48NBx-LN4niRJDzkb6--NHAPW3jReHABI,71
39
- vibetuner/tasks/context.py,sha256=FOFUDWGNo1h8G8qlE-1Gbkh-Kd1z3WZTqSMHkvZ68v8,869
40
- vibetuner/tasks/worker.py,sha256=-PKQ2kqvMe8X5ninULh3Vrp3M-gwh-ht2kmitvkHTVg,429
35
+ vibetuner/services/blob.py,sha256=mYsMDA04E1fgXLaprWDip28RrxEX60T1G7UT1aMZDBY,5029
36
+ vibetuner/services/email.py,sha256=Y0yKgqki2an7fE6n4hQeROjVglzcqIGBgXICJbKZq0s,1669
37
+ vibetuner/services/s3_storage.py,sha256=purEKXKqb_5iroyDgEWCJ2DRMmG08Jy5tnsc2ZE1An4,15407
38
+ vibetuner/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
+ vibetuner/tasks/lifespan.py,sha256=BKOI-wbMLOqEbR4NgCKI5c9OP8W1RpxOswBL3XzPTWc,861
40
+ vibetuner/tasks/worker.py,sha256=ZCfBpaqpyDG5OD3wtSf9YdIWie6CaQ49KwLNn_iTNCc,248
41
41
  vibetuner/templates/email/magic_link.html.jinja,sha256=DzaCnBsYoau2JQh5enPAa2FMFFTyCwdyiM3vGhBQdtA,553
42
42
  vibetuner/templates/email/magic_link.txt.jinja,sha256=dANak9ion1cpILt45V3GcI2qnL_gKFPj7PsZKYV0m5s,200
43
43
  vibetuner/templates/frontend/base/favicons.html.jinja,sha256=A7s7YXuE82tRd7ZLJs1jGEGwBRiMPrqlWd507xL1iZg,70
@@ -65,8 +65,8 @@ vibetuner/templates/frontend/user/profile.html.jinja,sha256=qXFonyeCy99JE5o3rEta
65
65
  vibetuner/templates/markdown/.placeholder,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
66
  vibetuner/templates.py,sha256=xRoMb_oyAI5x4kxfpg56UcLKkT8e9HVn-o3KFAu9ISE,5094
67
67
  vibetuner/time.py,sha256=3_DtveCCzI20ocTnAlTh2u7FByUXtINaUoQZO-_uZow,1188
68
- vibetuner/versioning.py,sha256=UAHGoNsv3QEPAJgHyt_Q8I26SW7ng2FnZlX2-0M6r6U,156
69
- vibetuner-2.18.1.dist-info/WHEEL,sha256=DpNsHFUm_gffZe1FgzmqwuqiuPC6Y-uBCzibcJcdupM,78
70
- vibetuner-2.18.1.dist-info/entry_points.txt,sha256=aKIj9YCCXizjYupx9PeWkUJePg3ncHke_LTS5rmCsfs,49
71
- vibetuner-2.18.1.dist-info/METADATA,sha256=c_aNrSkA_hSWfazWl6Nn-9O38DWtgnofBZanp8892fo,8061
72
- vibetuner-2.18.1.dist-info/RECORD,,
68
+ vibetuner/versioning.py,sha256=c7Wg-SM-oJzQqG2RE0O8gZGHzHTgvwqa4yHn3Dk5-Sk,372
69
+ vibetuner-2.30.1.dist-info/WHEEL,sha256=YUH1mBqsx8Dh2cQG2rlcuRYUhJddG9iClegy4IgnHik,79
70
+ vibetuner-2.30.1.dist-info/entry_points.txt,sha256=aKIj9YCCXizjYupx9PeWkUJePg3ncHke_LTS5rmCsfs,49
71
+ vibetuner-2.30.1.dist-info/METADATA,sha256=O25ikO_Zt59f7VbnTMTwQV4ADEFZb0cj7ze2zZzwiE8,8227
72
+ vibetuner-2.30.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: uv 0.9.8
2
+ Generator: uv 0.9.11
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,10 +0,0 @@
1
- from vibetuner.context import Context
2
-
3
-
4
- class AppContext(Context):
5
- # Add typed state here
6
-
7
- model_config = {"arbitrary_types_allowed": True}
8
-
9
-
10
- ctx = AppContext()
@@ -1,34 +0,0 @@
1
- from contextlib import asynccontextmanager
2
- from typing import AsyncIterator
3
-
4
- from httpx import AsyncClient
5
- from pydantic import BaseModel
6
-
7
- from vibetuner.mongo import init_models
8
-
9
-
10
- class Context(BaseModel):
11
- http_client: AsyncClient
12
- # Add the context properties for your tasks below
13
-
14
- # Until here
15
- model_config = {"arbitrary_types_allowed": True}
16
-
17
-
18
- @asynccontextmanager
19
- async def lifespan() -> AsyncIterator[Context]:
20
- await init_models()
21
- # Add below anything that should happen before startup
22
-
23
- # Until here
24
- async with (
25
- AsyncClient() as http_client,
26
- # Add any other async context managers you need here
27
- ):
28
- yield Context(
29
- http_client=http_client,
30
- # Add any other async context managers you need here
31
- )
32
-
33
- # Add below anything that should happen before shutdown
34
- # Until here