Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-fastapi for openSUSE:Factory 
checked in at 2026-04-08 17:13:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-fastapi (Old)
 and      /work/SRC/openSUSE:Factory/.python-fastapi.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-fastapi"

Wed Apr  8 17:13:28 2026 rev:49 rq:1344811 version:0.135.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-fastapi/python-fastapi.changes    
2026-03-30 18:30:54.654101681 +0200
+++ /work/SRC/openSUSE:Factory/.python-fastapi.new.21863/python-fastapi.changes 
2026-04-08 17:13:34.338597232 +0200
@@ -1,0 +2,7 @@
+Mon Apr  6 21:34:31 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 0.135.3:
+  * Add support for `@app.vibe()`. PR #15280 by @tiangolo.
+  * Fix typo for `client_secret` in OAuth2 form docstrings.
+
+-------------------------------------------------------------------

Old:
----
  fastapi-0.135.2.tar.gz

New:
----
  fastapi-0.135.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-fastapi.spec ++++++
--- /var/tmp/diff_new_pack.eJozDd/_old  2026-04-08 17:13:35.042626177 +0200
+++ /var/tmp/diff_new_pack.eJozDd/_new  2026-04-08 17:13:35.042626177 +0200
@@ -31,7 +31,7 @@
 %endif
 %{?sle15_python_module_pythons}
 Name:           python-fastapi%{psuffix}
-Version:        0.135.2
+Version:        0.135.3
 Release:        0
 Summary:        FastAPI framework
 License:        MIT

++++++ fastapi-0.135.2.tar.gz -> fastapi-0.135.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastapi-0.135.2/PKG-INFO new/fastapi-0.135.3/PKG-INFO
--- old/fastapi-0.135.2/PKG-INFO        1970-01-01 01:00:00.000000000 +0100
+++ new/fastapi-0.135.3/PKG-INFO        1970-01-01 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: fastapi
-Version: 0.135.2
+Version: 0.135.3
 Summary: FastAPI framework, high performance, easy to learn, fast to code, 
ready for production
 Author-Email: =?utf-8?q?Sebasti=C3=A1n_Ram=C3=ADrez?= <[email protected]>
 License-Expression: MIT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastapi-0.135.2/docs_src/vibe/tutorial001_py310.py 
new/fastapi-0.135.3/docs_src/vibe/tutorial001_py310.py
--- old/fastapi-0.135.2/docs_src/vibe/tutorial001_py310.py      1970-01-01 
01:00:00.000000000 +0100
+++ new/fastapi-0.135.3/docs_src/vibe/tutorial001_py310.py      2026-04-01 
18:23:54.173744000 +0200
@@ -0,0 +1,12 @@
+from typing import Any
+
+from fastapi import FastAPI
+
+app = FastAPI()
+
+
[email protected](
+    "/vibe/",
+    prompt="pls return json of users from database. make no mistakes",
+)
+async def ai_vibes(body: Any): ...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastapi-0.135.2/fastapi/__init__.py 
new/fastapi-0.135.3/fastapi/__init__.py
--- old/fastapi-0.135.2/fastapi/__init__.py     2026-03-23 15:12:36.013052200 
+0100
+++ new/fastapi-0.135.3/fastapi/__init__.py     2026-04-01 18:23:54.174515500 
+0200
@@ -1,6 +1,6 @@
 """FastAPI framework, high performance, easy to learn, fast to code, ready for 
production"""
 
-__version__ = "0.135.2"
+__version__ = "0.135.3"
 
 from starlette import status as status
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastapi-0.135.2/fastapi/applications.py 
new/fastapi-0.135.3/fastapi/applications.py
--- old/fastapi-0.135.2/fastapi/applications.py 2026-03-23 15:12:36.013278200 
+0100
+++ new/fastapi-0.135.3/fastapi/applications.py 2026-04-01 18:23:54.174717200 
+0200
@@ -10,7 +10,11 @@
     request_validation_exception_handler,
     websocket_request_validation_exception_handler,
 )
-from fastapi.exceptions import RequestValidationError, 
WebSocketRequestValidationError
+from fastapi.exceptions import (
+    FastAPIError,
+    RequestValidationError,
+    WebSocketRequestValidationError,
+)
 from fastapi.logger import logger
 from fastapi.middleware.asyncexitstack import AsyncExitStackMiddleware
 from fastapi.openapi.docs import (
@@ -4559,6 +4563,60 @@
             generate_unique_id_function=generate_unique_id_function,
         )
 
+    def vibe(
+        self,
+        path: Annotated[
+            str,
+            Doc(
+                """
+                The URL path to be used for this *path operation*.
+
+                For example, in `http://example.com/vibes`, the path is 
`/vibes`.
+                """
+            ),
+        ],
+        *,
+        prompt: Annotated[
+            str,
+            Doc(
+                """
+                The prompt to send to the LLM provider along with the payload.
+
+                This tells the LLM what to do with the request body.
+                """
+            ),
+        ] = "",
+    ) -> Callable[[DecoratedCallable], DecoratedCallable]:
+        """
+        Add a *vibe coding path operation* that receives any HTTP method
+        and any payload.
+
+        It's intended to receive the request and send the payload directly
+        to an LLM provider, and return the response as is.
+
+        Embrace the freedom and flexibility of not having any data validation,
+        documentation, or serialization.
+
+        ## Example
+
+        ```python
+        from typing import Any
+
+        from fastapi import FastAPI
+
+        app = FastAPI()
+
+
+        @app.vibe(
+            "/vibe/",
+            prompt="pls return json of users from database. make no mistakes",
+        )
+        async def ai_vibes(body: Any):
+            ...
+        ```
+        """
+        raise FastAPIError("Are you kidding me? Happy April Fool's")
+
     def websocket_route(
         self, path: str, name: str | None = None
     ) -> Callable[[DecoratedCallable], DecoratedCallable]:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastapi-0.135.2/fastapi/security/oauth2.py 
new/fastapi-0.135.3/fastapi/security/oauth2.py
--- old/fastapi-0.135.2/fastapi/security/oauth2.py      2026-03-23 
15:12:36.015823100 +0100
+++ new/fastapi-0.135.3/fastapi/security/oauth2.py      2026-04-01 
18:23:54.177489300 +0200
@@ -143,7 +143,7 @@
             Form(json_schema_extra={"format": "password"}),
             Doc(
                 """
-                If there's a `client_password` (and a `client_id`), they can 
be sent
+                If there's a `client_secret` (and a `client_id`), they can be 
sent
                 as part of the form fields. But the OAuth2 specification 
recommends
                 sending the `client_id` and `client_secret` (if any) using 
HTTP Basic
                 auth.
@@ -309,7 +309,7 @@
             Form(),
             Doc(
                 """
-                If there's a `client_password` (and a `client_id`), they can 
be sent
+                If there's a `client_secret` (and a `client_id`), they can be 
sent
                 as part of the form fields. But the OAuth2 specification 
recommends
                 sending the `client_id` and `client_secret` (if any) using 
HTTP Basic
                 auth.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastapi-0.135.2/pyproject.toml 
new/fastapi-0.135.3/pyproject.toml
--- old/fastapi-0.135.2/pyproject.toml  2026-03-23 15:12:39.849004300 +0100
+++ new/fastapi-0.135.3/pyproject.toml  2026-04-01 18:23:56.667643000 +0200
@@ -52,7 +52,7 @@
     "typing-inspection>=0.4.2",
     "annotated-doc>=0.0.2",
 ]
-version = "0.135.2"
+version = "0.135.3"
 
 [project.urls]
 Homepage = "https://github.com/fastapi/fastapi";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastapi-0.135.2/scripts/lint.sh 
new/fastapi-0.135.3/scripts/lint.sh
--- old/fastapi-0.135.2/scripts/lint.sh 2026-03-23 15:12:36.016618000 +0100
+++ new/fastapi-0.135.3/scripts/lint.sh 2026-04-01 18:23:54.178063000 +0200
@@ -4,5 +4,6 @@
 set -x
 
 mypy fastapi
+ty check fastapi
 ruff check fastapi tests docs_src scripts
 ruff format fastapi tests --check
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fastapi-0.135.2/tests/test_vibe.py 
new/fastapi-0.135.3/tests/test_vibe.py
--- old/fastapi-0.135.2/tests/test_vibe.py      1970-01-01 01:00:00.000000000 
+0100
+++ new/fastapi-0.135.3/tests/test_vibe.py      2026-04-01 18:23:54.208743300 
+0200
@@ -0,0 +1,17 @@
+from typing import Any
+
+import pytest
+from fastapi import FastAPI
+from fastapi.exceptions import FastAPIError
+
+
+def test_vibe_raises():
+    with pytest.raises(FastAPIError, match="Are you kidding me"):
+        app = FastAPI()
+
+        @app.vibe(
+            "/vibe/",
+            prompt="pls return json of users from database. make no mistakes",
+        )
+        async def ai_vibes(body: Any):  # pragma: nocover
+            pass

Reply via email to