vibetuner 2.26.9__py3-none-any.whl → 2.44.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.26.9
3
+ Version: 2.44.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.
@@ -18,46 +18,50 @@ Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
18
18
  Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
19
19
  Requires-Dist: aioboto3>=15.5.0
20
20
  Requires-Dist: arel>=0.4.0
21
- Requires-Dist: asyncer>=0.0.10
22
- Requires-Dist: authlib>=1.6.5
23
- Requires-Dist: beanie[zstd]>=2.0.0
21
+ Requires-Dist: asyncer>=0.0.12
22
+ Requires-Dist: authlib>=1.6.6
23
+ Requires-Dist: beanie[zstd]>=2.0.1
24
24
  Requires-Dist: click>=8.3.1
25
- Requires-Dist: copier>=9.10.3,<9.10.4
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.2
28
- Requires-Dist: granian[pname]>=2.6.0
27
+ Requires-Dist: fastapi[standard-no-fastapi-cloud-cli]>=0.128.0
28
+ Requires-Dist: granian[pname]>=2.6.1
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
32
- Requires-Dist: pydantic[email]>=2.12.4
33
- Requires-Dist: pydantic-extra-types[pycountry]>=2.10.6
32
+ Requires-Dist: pydantic[email]>=2.12.5
33
+ Requires-Dist: pydantic-extra-types[pycountry]>=2.11.0
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
- Requires-Dist: sse-starlette>=3.0.3
38
+ Requires-Dist: sse-starlette>=3.1.2
39
39
  Requires-Dist: starlette-babel>=1.0.3
40
40
  Requires-Dist: starlette-htmx>=0.1.1
41
41
  Requires-Dist: streaq[web]<6.0.0
42
- Requires-Dist: typer-slim[standard]>=0.20.0
42
+ Requires-Dist: typer-slim[standard]>=0.21.1
43
+ Requires-Dist: deprecated>=1.3.1
44
+ Requires-Dist: sqlmodel>=0.0.31
43
45
  Requires-Dist: babel>=2.17.0 ; extra == 'dev'
44
46
  Requires-Dist: cloudflare>=4.3.1 ; extra == 'dev'
45
47
  Requires-Dist: djlint>=1.36.4 ; extra == 'dev'
46
48
  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.6.0 ; extra == 'dev'
49
- Requires-Dist: just-bin>=1.43.0 ; extra == 'dev'
50
- Requires-Dist: pre-commit>=4.4.0 ; extra == 'dev'
49
+ Requires-Dist: gh-bin>=2.83.2 ; extra == 'dev'
50
+ Requires-Dist: granian[pname,reload]>=2.6.1 ; extra == 'dev'
51
+ Requires-Dist: just-bin>=1.46.0 ; extra == 'dev'
52
+ Requires-Dist: prek==0.2.25 ; extra == 'dev'
51
53
  Requires-Dist: pysemver>=0.5.0 ; extra == 'dev'
52
- Requires-Dist: ruff>=0.14.5 ; extra == 'dev'
53
- Requires-Dist: rumdl>=0.0.177 ; extra == 'dev'
54
+ Requires-Dist: ruff>=0.14.10 ; extra == 'dev'
55
+ Requires-Dist: rumdl>=0.0.211 ; extra == 'dev'
54
56
  Requires-Dist: semver>=3.0.4 ; extra == 'dev'
55
57
  Requires-Dist: taplo>=0.9.3 ; extra == 'dev'
56
- Requires-Dist: ty>=0.0.1a26 ; extra == 'dev'
58
+ Requires-Dist: ty>=0.0.9 ; extra == 'dev'
57
59
  Requires-Dist: types-aioboto3[s3,ses]>=15.5.0 ; extra == 'dev'
58
- Requires-Dist: types-authlib>=1.6.5.20251005 ; extra == 'dev'
60
+ Requires-Dist: types-authlib>=1.6.6.20251220 ; extra == 'dev'
59
61
  Requires-Dist: types-pyyaml>=6.0.12.20250915 ; extra == 'dev'
60
- Requires-Dist: uv-bump>=0.3.1 ; extra == 'dev'
62
+ Requires-Dist: uv-bump>=0.4.0 ; extra == 'dev'
63
+ Requires-Dist: pytest>=9.0.2 ; extra == 'test'
64
+ Requires-Dist: pytest-asyncio>=1.3.0 ; extra == 'test'
61
65
  Requires-Python: >=3.11
62
66
  Project-URL: Changelog, https://github.com/alltuner/vibetuner/blob/main/CHANGELOG.md
63
67
  Project-URL: Documentation, https://vibetuner.alltuner.com/
@@ -65,6 +69,7 @@ Project-URL: Homepage, https://vibetuner.alltuner.com/
65
69
  Project-URL: Issues, https://github.com/alltuner/vibetuner/issues
66
70
  Project-URL: Repository, https://github.com/alltuner/vibetuner
67
71
  Provides-Extra: dev
72
+ Provides-Extra: test
68
73
  Description-Content-Type: text/markdown
69
74
 
70
75
  # vibetuner
@@ -77,13 +82,13 @@ authentication, background jobs, and CLI tools.
77
82
 
78
83
  ## What is Vibetuner?
79
84
 
80
- Vibetuner is a production-ready scaffolding tool for FastAPI + MongoDB + HTMX web applications.
85
+ Vibetuner is a production-ready scaffolding tool for FastAPI web applications.
81
86
  This package (`vibetuner`) is the Python component that provides:
82
87
 
83
88
  - Complete web application framework built on FastAPI
84
- - MongoDB integration with Beanie ODM
89
+ - **Flexible database support**: MongoDB (Beanie ODM) or SQL (SQLModel/SQLAlchemy)
85
90
  - OAuth and magic link authentication out of the box
86
- - Background job processing with Redis + Streaq
91
+ - Background job processing with Redis + Streaq (optional)
87
92
  - CLI framework with Typer
88
93
  - Email services, blob storage, and more
89
94
 
@@ -131,18 +136,20 @@ This will generate a complete project with:
131
136
  - **`models/`**: User, OAuth, email verification, blob storage models
132
137
  - **`services/`**: Email (SES), blob storage (S3)
133
138
  - **`tasks/`**: Background job infrastructure
134
- - **`cli/`**: CLI framework with scaffold, run commands
139
+ - **`cli/`**: CLI framework with scaffold, run, db commands
135
140
  - **`config.py`**: Pydantic settings management
136
- - **`mongo.py`**: MongoDB/Beanie setup
141
+ - **`mongo.py`**: MongoDB/Beanie setup (optional)
142
+ - **`sqlmodel.py`**: SQLModel/SQLAlchemy setup (optional)
137
143
  - **`logging.py`**: Structured logging configuration
138
144
 
139
145
  ### Blessed Dependencies
140
146
 
141
147
  - **FastAPI** (0.121+): Modern, fast web framework
142
- - **Beanie**: Async MongoDB ODM with Pydantic
148
+ - **Beanie**: Async MongoDB ODM with Pydantic (optional)
149
+ - **SQLModel** + **SQLAlchemy**: SQL databases - PostgreSQL, MySQL, SQLite (optional)
143
150
  - **Authlib**: OAuth 1.0/2.0 client
144
151
  - **Granian**: High-performance ASGI server
145
- - **Redis** + **Streaq**: Background task processing
152
+ - **Redis** + **Streaq**: Background task processing (optional)
146
153
  - **Typer**: CLI framework
147
154
  - **Rich**: Beautiful terminal output
148
155
  - **Loguru**: Structured logging
@@ -162,6 +169,9 @@ vibetuner scaffold new my-project --defaults
162
169
  # Update existing project
163
170
  vibetuner scaffold update
164
171
 
172
+ # Database management (SQLModel)
173
+ vibetuner db create-schema # Create SQL database tables
174
+
165
175
  # Run development server (in generated projects)
166
176
  vibetuner run dev frontend
167
177
  vibetuner run dev worker
@@ -177,7 +187,7 @@ The `[dev]` extra includes all tools needed for development:
177
187
 
178
188
  - **Ruff**: Fast linting and formatting
179
189
  - **Babel**: i18n message extraction
180
- - **pre-commit**: Git hooks
190
+ - **pre-commit**: Git hooks (prek is a fast pre-commit drop-in replacement)
181
191
  - **Type stubs**: For aioboto3, authlib, PyYAML
182
192
  - And more...
183
193
 
@@ -1,25 +1,27 @@
1
1
  vibetuner/__init__.py,sha256=rFIVCmxkKTT_g477V8biCw0lgpudyuUabXhYxg189lY,90
2
2
  vibetuner/__main__.py,sha256=Ye9oBAgXhcYQ4I4yZli3TIXF5lWQ9yY4tTPs4XnDDUY,29
3
- vibetuner/cli/__init__.py,sha256=9FFy0MTOhWVS-Z310auNTcpbG1xJtku0TS35Qxoyt-Q,3995
4
- vibetuner/cli/run.py,sha256=TILyvy-bZTKWcAK-K2SNYqqD-G3ypCay-ghadGztqRQ,5021
5
- vibetuner/cli/scaffold.py,sha256=qADWxx1gYECQ8N6dgvJmlucT6mZ29rxWu3VZhbWmhC0,5710
6
- vibetuner/config.py,sha256=oG5naa6pu8wM4hzra0xaRQCPnQWbid9hGTJOHfsmHeI,4082
3
+ vibetuner/cli/__init__.py,sha256=Lt3UAQaT8yA0uQYecT915DS_-FiyHg6xdp4deHuP9Gk,3612
4
+ vibetuner/cli/db.py,sha256=fH4gJjMZv6na8uIPgE5Fiv-cGWedegYTLUB2lTxbTR0,1217
5
+ vibetuner/cli/run.py,sha256=1zN0W-cBNlYq3uP3Say1TG6ex9FkkuSBkI35wGqMTNA,5323
6
+ vibetuner/cli/scaffold.py,sha256=o_2BrJ86ZD1lZIC_fcOvHomLTezzfmneabHIv7vM1YE,5968
7
+ vibetuner/config.py,sha256=wtyHvkN2GLHOHDDqnnJPnFTgj3QZ_kBGkUG7PKcUHWg,5747
7
8
  vibetuner/context.py,sha256=h4f4FfkmLlOD6WiSLhx7-IjFvIA4zcrsAp6478l6npg,743
8
- vibetuner/frontend/__init__.py,sha256=DIAnvQHCFNBc5VtBXYE6IdAnIqCYTD_EyFAbmui7vW8,3927
9
+ vibetuner/frontend/__init__.py,sha256=COZuPRzTFUfxeyWkvmz0GxBBFFvBHtf2mMGmLw5fy2c,3965
9
10
  vibetuner/frontend/deps.py,sha256=b3ocC_ryaK2Jp51SfcFqckrXiaL7V-chkFRqLjzgA_c,1296
10
11
  vibetuner/frontend/email.py,sha256=k0d7FCZCge5VYOKp3fLsbx7EA5_SrtBkpMs57o4W7u0,1119
11
12
  vibetuner/frontend/hotreload.py,sha256=Gl7FIKJaiCVVoyWQqdErBUOKDP1cGBFUpGzqHMiJd10,285
12
- vibetuner/frontend/lifespan.py,sha256=ZduSyH6E2_IW9vFWH5jww2R22mRybSm_mNfbtDHnsS0,1074
13
- vibetuner/frontend/middleware.py,sha256=iOqcp-7WwRqHLYa1dg3xDzAXGrpqmYpqBmtQcdd9obY,4890
13
+ vibetuner/frontend/lifespan.py,sha256=Gl9tuqRymxs8_nyimlw_bIdM0ofe_XCJA99wI_YYxvw,1244
14
+ vibetuner/frontend/middleware.py,sha256=lmPAgpkPFFFgEnFs4n0N1aQr4V73_JPMBe3NqO8AWQA,3912
14
15
  vibetuner/frontend/oauth.py,sha256=EzEwoOZ_8xn_CiqAWpNoEdhV2NPxZKKwF2bA6W6Bkj0,5884
16
+ vibetuner/frontend/proxy.py,sha256=rfoQLz-T59eY_xCEHxo9fzYDaS-cTZrcWbiV_Tm3gZU,654
15
17
  vibetuner/frontend/routes/__init__.py,sha256=nHhiylHIUPZ2R-Bd7vXEGHLJBQ7fNuzPTJodjJR3lyc,428
16
18
  vibetuner/frontend/routes/auth.py,sha256=vKE-Dm2yPXReaOLvcxfT4a6df1dKUoteZ4p46v8Elm4,4331
17
- vibetuner/frontend/routes/debug.py,sha256=Mzbyx3gv_mCxg0sdjY4p7LXgH1wI3BoEyn1sRZuGY90,12743
19
+ vibetuner/frontend/routes/debug.py,sha256=hqiuRjcLOvL2DdhA83HUzp5svECKjyFB-LoNn7xDiFE,13269
18
20
  vibetuner/frontend/routes/health.py,sha256=_XkMpdMNUemu7qzkGkqn5TBnZmGrArA3Xps5CWCcGlg,959
19
21
  vibetuner/frontend/routes/language.py,sha256=wHNfdewqWfK-2JLXwglu0Q0b_e00HFGd0A2-PYT44LE,1240
20
22
  vibetuner/frontend/routes/meta.py,sha256=pSyIxQsiB0QZSYwCQbS07KhkT5oHC5r9jvjUDIqZRGw,1409
21
23
  vibetuner/frontend/routes/user.py,sha256=b8ow6IGnfsHosSwSmEIYZtuQJnW_tacnNjp_aMnqWxU,2666
22
- vibetuner/frontend/templates.py,sha256=xHpLMyAEjKWHgbloE40n6Fe3gjTuG5msWeqqYyJO3uU,5308
24
+ vibetuner/frontend/templates.py,sha256=jqMMl1-ECYDW8lyGg3r4dPbd9kZQXy90pUvJxsAIwOg,7616
23
25
  vibetuner/logging.py,sha256=9eNofqVtKZCBDS33NbBI7Sv2875gM8MNStTSCjX2AXQ,2409
24
26
  vibetuner/models/__init__.py,sha256=JvmQvzDIxaI7zlk-ROCWEbuzxXSUOqCshINUjgu-AfQ,325
25
27
  vibetuner/models/blob.py,sha256=F30HFS4Z_Bji_PGPflWIv4dOwqKLsEWQHcjW1Oz_79M,2523
@@ -29,14 +31,16 @@ vibetuner/models/oauth.py,sha256=BdOZbW47Das9ntHTtRmVdl1lB5zLCcXW2fyVJ-tQ_F8,150
29
31
  vibetuner/models/registry.py,sha256=O5YG7vOrWluqpH5N7m44v72wbscMhU_Pu3TJw_u0MTk,311
30
32
  vibetuner/models/types.py,sha256=Lj3ASEvx5eNgQMcVhNyKQHHolJqDxj2yH8S-M9oa4J8,402
31
33
  vibetuner/models/user.py,sha256=ttcSH4mVREPhA6bCFUWXKfJ9_8_Iq3lEYXe3rDrslw4,2696
32
- vibetuner/mongo.py,sha256=BejYrqHrupNfvNhEu6xUakCnRQy3YdiExk2r6hkafOs,1056
33
- vibetuner/paths.py,sha256=IEH_GCJTThUPU0HWxr86j61IcwYgwXBamoWNmaJsxlo,8252
34
+ vibetuner/mongo.py,sha256=f3tVYcDRsIrSCqB340MDA9qt9iesFPAUg0ZUlCGv0l0,2051
35
+ vibetuner/paths.py,sha256=hWWcjwVPNxac74rRuHgHD46CwmQKHJidEALo-euw72k,8360
34
36
  vibetuner/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
- vibetuner/services/blob.py,sha256=-lEGIWe30yR2IuTfy5bB9Sg_PX0HoYC_WMTQ3VN28gU,5660
36
- vibetuner/services/email.py,sha256=IavJZS5MI40LlF_cjBpPPRx_S2r1JD4GcFg3-dWkzPA,1626
37
+ vibetuner/services/blob.py,sha256=mYsMDA04E1fgXLaprWDip28RrxEX60T1G7UT1aMZDBY,5029
38
+ vibetuner/services/email.py,sha256=Y0yKgqki2an7fE6n4hQeROjVglzcqIGBgXICJbKZq0s,1669
39
+ vibetuner/services/s3_storage.py,sha256=purEKXKqb_5iroyDgEWCJ2DRMmG08Jy5tnsc2ZE1An4,15407
40
+ vibetuner/sqlmodel.py,sha256=d0fK9ZlzUGW02rTu5n_k3Buuuu3nI5e5wTmaydnl5CM,3000
37
41
  vibetuner/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
- vibetuner/tasks/lifespan.py,sha256=BKOI-wbMLOqEbR4NgCKI5c9OP8W1RpxOswBL3XzPTWc,861
39
- vibetuner/tasks/worker.py,sha256=s91Pbmz--cV4ygzDuXa-kGLZFe28HSvaXfxhIWJyIhE,340
42
+ vibetuner/tasks/lifespan.py,sha256=IroLZooVmdtQ6MUad2Dwi_40DGSga5__0SCVbtZAP6g,1031
43
+ vibetuner/tasks/worker.py,sha256=brW92T1kdaoLLNulu9K1Hs82ewCvNcKEbYd_8K0Mdcg,384
40
44
  vibetuner/templates/email/magic_link.html.jinja,sha256=DzaCnBsYoau2JQh5enPAa2FMFFTyCwdyiM3vGhBQdtA,553
41
45
  vibetuner/templates/email/magic_link.txt.jinja,sha256=dANak9ion1cpILt45V3GcI2qnL_gKFPj7PsZKYV0m5s,200
42
46
  vibetuner/templates/frontend/base/favicons.html.jinja,sha256=A7s7YXuE82tRd7ZLJs1jGEGwBRiMPrqlWd507xL1iZg,70
@@ -51,21 +55,21 @@ vibetuner/templates/frontend/debug/info.html.jinja,sha256=Z9yZxW-dyOZ1kWsY1_ZX7j
51
55
  vibetuner/templates/frontend/debug/users.html.jinja,sha256=BjTiJbOMadZYZJYvtYW0KeFcYN7ooI7_YylhOnfbLD4,7809
52
56
  vibetuner/templates/frontend/debug/version.html.jinja,sha256=pJ-QuDRuvB7X04nC43upZiXLaFCC6vmI5QhRS62rt6k,2901
53
57
  vibetuner/templates/frontend/email/magic_link.txt.jinja,sha256=fTVl3Wjfvp3EJAB5DYt01EL_O7o9r8lHedDH05YP44c,192
54
- vibetuner/templates/frontend/email_sent.html.jinja,sha256=Pq3J_WOwY_zFe9QJkvO29o6pw06JEnYxh068kyl_ZEg,5236
55
- vibetuner/templates/frontend/index.html.jinja,sha256=m8_xNS1O7JlrfWOHy0y7prf64HyVokQEeKvFqRWjxrQ,925
58
+ vibetuner/templates/frontend/email_sent.html.jinja,sha256=5_Mc3DzgZaGB_SvAHaL7PFRXsGXnBpp1xO9QER7hlOQ,5234
59
+ vibetuner/templates/frontend/index.html.jinja,sha256=SwQPn5oqsZHq7_g4SlgWsrxxVvwuDNVfZ2nuIcRwm4A,921
56
60
  vibetuner/templates/frontend/lang/select.html.jinja,sha256=4jHo8QWvMOIeK_KqHzSaDzgvuT3v8MlmjTrrYIl2sjk,224
57
- vibetuner/templates/frontend/login.html.jinja,sha256=Y_dKk47-H6M8StepiFXntJcorBNXiOXKjORJN--SjOA,5548
61
+ vibetuner/templates/frontend/login.html.jinja,sha256=QihHEjCdxOevOQMDeuTTcbqLiBJ4OorzjunA-E4i-J4,5546
58
62
  vibetuner/templates/frontend/meta/browserconfig.xml.jinja,sha256=5DE-Dowxw3fRg4UJerW6tVrUYdHWUsUOfS_YucoRVXQ,300
59
63
  vibetuner/templates/frontend/meta/robots.txt.jinja,sha256=SUBJqQCOW5FFdD4uIkReo04NcAYnjITLyB4Wk1wBcS4,46
60
64
  vibetuner/templates/frontend/meta/site.webmanifest.jinja,sha256=QCg2Z2GXd2AwJ3C8CnW9Brvu3cbXcZiquLNEzA8FsOc,150
61
65
  vibetuner/templates/frontend/meta/sitemap.xml.jinja,sha256=IhBjk7p5OdqszyK6DR3eUAdeAucKk2s_PpnOfYxgNCo,170
62
- vibetuner/templates/frontend/user/edit.html.jinja,sha256=dhmLFsokTWbtnmIE10S8gC6rDHToC6vNIUB2BRximKQ,5443
63
- vibetuner/templates/frontend/user/profile.html.jinja,sha256=qXFonyeCy99JE5o3rEtaOHtnxgg2-AlNykwIZyxpk_M,9964
66
+ vibetuner/templates/frontend/user/edit.html.jinja,sha256=tvr3FcH_iS_o4_S1xSrgHu-sk9GUSYPvyTS-wi4MUVE,5438
67
+ vibetuner/templates/frontend/user/profile.html.jinja,sha256=xjeZB5B_OUFdwx-c2N3mHN0geGW1ghXBpfLjF_u0sy4,9962
64
68
  vibetuner/templates/markdown/.placeholder,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
69
  vibetuner/templates.py,sha256=xRoMb_oyAI5x4kxfpg56UcLKkT8e9HVn-o3KFAu9ISE,5094
66
70
  vibetuner/time.py,sha256=3_DtveCCzI20ocTnAlTh2u7FByUXtINaUoQZO-_uZow,1188
67
71
  vibetuner/versioning.py,sha256=c7Wg-SM-oJzQqG2RE0O8gZGHzHTgvwqa4yHn3Dk5-Sk,372
68
- vibetuner-2.26.9.dist-info/WHEEL,sha256=w4ZtLaDgMAZW2MMZZwtH8zENekoQYBCeullI-zsXJQk,78
69
- vibetuner-2.26.9.dist-info/entry_points.txt,sha256=aKIj9YCCXizjYupx9PeWkUJePg3ncHke_LTS5rmCsfs,49
70
- vibetuner-2.26.9.dist-info/METADATA,sha256=WTPJkk2ZcYPzpzcWRdWDAnEgXcdjOBD3EgWo_ilp0sQ,8061
71
- vibetuner-2.26.9.dist-info/RECORD,,
72
+ vibetuner-2.44.1.dist-info/WHEEL,sha256=KSLUh82mDPEPk0Bx0ScXlWL64bc8KmzIPNcpQZFV-6E,79
73
+ vibetuner-2.44.1.dist-info/entry_points.txt,sha256=aKIj9YCCXizjYupx9PeWkUJePg3ncHke_LTS5rmCsfs,49
74
+ vibetuner-2.44.1.dist-info/METADATA,sha256=nfq8u-nFfVyzbs99IpeLmumHYEbx6rx0Ja4VFCr_BZQ,8603
75
+ vibetuner-2.44.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: uv 0.9.9
2
+ Generator: uv 0.9.22
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any