failed NO_PATCH NO_PATCH UNSUBMITTED empty_patch(timeout) · 21 tool calls · 0 s · fastapi/fastapi
🔒️ Add `strict_content_type` checking for JSON requests 🔒️ Add `strict_content_type` checking for JSON requests
| # | Tool | Arguments | Result |
|---|---|---|---|
| 1 | run_command | {
"command": "grep -rn \"strict_content_type\" /workspace --include=*.py | head -30"
} | {"status": "ok", "stdout": "", "exit_code": 0}full{"status": "ok", "stdout": "", "exit_code": 0} |
| 2 | run_command | {
"command": "ls /workspace/fastapi; grep -rn \"jsonable_encoder\\|def json(\" /workspace/fastapi/routing.py | head"
} | {"status": "ok", "stdout": "", "exit_code": 0}full{"status": "ok", "stdout": "", "exit_code": 0} |
| 3 | run_command | {
"command": "ls /workspace; ls /workspace/fastapi 2>/dev/null | head"
} | {"status": "ok", "stdout": "", "exit_code": 0}full{"status": "ok", "stdout": "", "exit_code": 0} |
| 4 | run_command | {
"command": "pwd && ls -la /workspace 2>&1 | head -30; echo \"EXIT: $?\""
} | {"status": "ok", "stdout": "/private/workspace\nls: /tmp/swe_work/or20_qwen27b_v2/fastapi_14978/a/workspace: No such file or directory\nEXIT: 0\n", "exit_code":full{"status": "ok", "stdout": "/private/workspace\nls: /tmp/swe_work/or20_qwen27b_v2/fastapi_14978/a/workspace: No such file or directory\nEXIT: 0\n", "exit_code": 0} |
| 5 | run_command | {
"command": "ls -la /private/workspace 2>&1 | head -30"
} | {"status": "ok", "stdout": "ls: /private/workspace: No such file or directory\n", "exit_code": 0}full{"status": "ok", "stdout": "ls: /private/workspace: No such file or directory\n", "exit_code": 0} |
| 6 | run_command | {
"command": "ls -la 2>&1 | head -40; echo ---; ls / 2>&1 | head -30"
} | {"status": "ok", "stdout": "total 2328\ndrwx------@ 21 jp wheel 672 Sep 23 22:41 .\ndrwxr-xr-x@ 4 jp wheel 128 Sep 23 22:41 ..\ndrwxr-xr-x@ 12 jp wheel 384 Sep full{"status": "ok", "stdout": "total 2328\ndrwx------@ 21 jp wheel 672 Sep 23 22:41 .\ndrwxr-xr-x@ 4 jp wheel 128 Sep 23 22:41 ..\ndrwxr-xr-x@ 12 jp wheel 384 Sep 23 22:41 .git\ndrwxr-xr-x@ 8 jp wheel 256 Jul 15 08:13 .github\n-rw-r--r--@ 1 jp wheel 280 Jul 15 08:13 .gitignore\n-rw-r--r--@ 1 jp wheel 2263 Jul 15 08:13 .pre-commit-config.yaml\n-rw-r--r--@ 1 jp wheel 5 Jul 15 08:13 .python-version\n-rw-r--r--@ 1 jp wheel 614 Jul 15 08:13 CITATION.cff\n-rw-r--r--@ 1 jp wheel 127 Jul 15 08:13 CONTRIBUTING.md\ndrwxr-xr-x@ 16 jp wheel 512 Jul 15 08:13 docs\ndrwxr-xr-x@ 74 jp wheel 2368 Jul 15 08:13 docs_src\ndrwxr-xr-x@ 30 jp wheel 960 Jul 15 08:13 fastapi\ndrwxr-xr-x@ 3 jp wheel 96 Jul 15 08:13 fastapi-slim\n-rw-r--r--@ 1 jp wheel 1086 Jul 15 08:13 LICENSE\n-rw-r--r--@ 1 jp wheel 10106 Jul 15 08:13 pyproject.toml\n-rw-r--r--@ 1 jp wheel 109 Sep 23 22:41 pytest.ini\n-rw-r--r--@ 1 jp wheel 26877 Jul 15 08:13 README.md\ndrwxr-xr-x@ 22 jp wheel 704 Jul 15 08:13 scripts\n-rw-r--r--@ 1 jp wheel 1320 Jul 15 08:13 SECURITY.md\ndrwxr-xr-x@ 204 jp wheel 6528 Jul 15 08:13 tests\n-rw-r--r--@ 1 jp wheel 1115736 Jul 15 08:13 uv.lock\n---\nApplications\nbin\ncores\ndev\netc\nhome\nLibrary\nopt\nprivate\nsbin\nSystem\ntmp\nUsers\nusr\nvar\nVolumes\n", "exit_code": 0} |
| 7 | run_command | {
"command": "grep -rn \"content_type\" fastapi/routing.py | head -20; echo ---; grep -rn \"def json\" fastapi/*.py | head"
} | {"status": "ok", "stdout": "fastapi/routing.py:371: content_type_value = request.headers.get(\"content-type\")\nfastapi/routing.py:372: if not content_type_valufull{"status": "ok", "stdout": "fastapi/routing.py:371: content_type_value = request.headers.get(\"content-type\")\nfastapi/routing.py:372: if not content_type_value:\nfastapi/routing.py:376: message[\"content-type\"] = content_type_value\n---\nfastapi/encoders.py:112:def jsonable_encoder(\n", "exit_code": 0} |
| 8 | run_command | {
"command": "sed -n 330,420p fastapi/routing.py"
} | {"status": "ok", "stdout": " dependency_overrides_provider: Any | None = None,\n embed_body_fields: bool = False,\n) -> Callable[[Request], Coroutine[Any, Any, full{"status": "ok", "stdout": " dependency_overrides_provider: Any | None = None,\n embed_body_fields: bool = False,\n) -> Callable[[Request], Coroutine[Any, Any, Response]]:\n assert dependant.call is not None, \"dependant.call must be a function\"\n is_coroutine = dependant.is_coroutine_callable\n is_body_form = body_field and isinstance(body_field.field_info, params.Form)\n if isinstance(response_class, DefaultPlaceholder):\n actual_response_class: type[Response] = response_class.value\n else:\n actual_response_class = response_class\n\n async def app(request: Request) -> Response:\n response: Response | None = None\n file_stack = request.scope.get(\"fastapi_middleware_astack\")\n assert isinstance(file_stack, AsyncExitStack), (\n \"fastapi_middleware_astack not found in request scope\"\n )\n\n # Extract endpoint context for error messages\n endpoint_ctx = (\n _extract_endpoint_context(dependant.call)\n if dependant.call\n else EndpointContext()\n )\n\n if dependant.path:\n # For mounted sub-apps, include the mount path prefix\n mount_path = request.scope.get(\"root_path\", \"\").rstrip(\"/\")\n endpoint_ctx[\"path\"] = f\"{request.method} {mount_path}{dependant.path}\"\n\n # Read body and auto-close files\n try:\n body: Any = None\n if body_field:\n if is_body_form:\n body = await request.form()\n file_stack.push_async_callback(body.close)\n else:\n body_bytes = await request.body()\n if body_bytes:\n json_body: Any = Undefined\n content_type_value = request.headers.get(\"content-type\")\n if not content_type_value:\n json_body = await request.json()\n |
| 9 | run_command | {
"command": "grep -n \"def __init__\\|def add_api_route\\|def get_request_handler\\|def add_api_websocket_route\\|def get\\b\\|def post\" fastapi/routing.py | head; echo ---; grep -n \"class HTTPException\\|class RequestValidationError\\|class WebSocketException\" fastapi/exceptions.py"
} | {"status": "ok", "stdout": "161: def __init__(self, cm: AbstractContextManager[_T]) -> None:\n222: def __init__(self, router: \"APIRouter\") -> None:\n318:def gfull{"status": "ok", "stdout": "161: def __init__(self, cm: AbstractContextManager[_T]) -> None:\n222: def __init__(self, router: \"APIRouter\") -> None:\n318:def get_request_handler(\n530: def __init__(\n572: def __init__(\n752: def __init__(\n1032: def add_api_route(\n1173: def add_api_websocket_route(\n1518: def get(\n2277: def post(\n---\n17:class HTTPException(StarletteHTTPException):\n86:class WebSocketException(StarletteWebSocketException):\n212:class RequestValidationError(ValidationException):\n", "exit_code": 0} |
| 10 | run_command | {
"command": "git log --oneline -5; python3 -c \"import fastapi, inspect; print(fastapi.__file__, fastapi.__version__)\""
} | {"status": "ok", "stdout": "e330734f baseline\n8ca96d6b \ud83d\udcdd Update release notes\nf44cad0b \u2b06 Bump flask from 3.1.2 to 3.1.3 (#14949)\n53704b33 \udfull{"status": "ok", "stdout": "e330734f baseline\n8ca96d6b \ud83d\udcdd Update release notes\nf44cad0b \u2b06 Bump flask from 3.1.2 to 3.1.3 (#14949)\n53704b33 \ud83d\udcdd Update release notes\n3b36e934 \u2b06 Update all dependencies to use `griffelib` instead of `griffe` (#14973)\n/private/workspace/fastapi/__init__.py 0.131.0\n", "exit_code": 0} |
| 11 | run_command | {
"command": "sed -n 752,830p fastapi/routing.py"
} | {"status": "ok", "stdout": " def __init__(\n self,\n *,\n prefix: Annotated[str, Doc(\"An optional path prefix for the router.\")] = \"\",\n tags: Annotated[\n full{"status": "ok", "stdout": " def __init__(\n self,\n *,\n prefix: Annotated[str, Doc(\"An optional path prefix for the router.\")] = \"\",\n tags: Annotated[\n list[str | Enum] | None,\n Doc(\n \"\"\"\n A list of tags to be applied to all the *path operations* in this\n router.\n\n It will be added to the generated OpenAPI (e.g. visible at `/docs`).\n\n Read more about it in the\n [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).\n \"\"\"\n ),\n ] = None,\n dependencies: Annotated[\n Sequence[params.Depends] | None,\n Doc(\n \"\"\"\n A list of dependencies (using `Depends()`) to be applied to all the\n *path operations* in this router.\n\n Read more about it in the\n [FastAPI docs for Bigger Applications - Multiple Files](https://fastapi.tiangolo.com/tutorial/bigger-applications/#include-an-apirouter-with-a-custom-prefix-tags-responses-and-dependencies).\n \"\"\"\n ),\n ] = None,\n default_response_class: Annotated[\n type[Response],\n Doc(\n \"\"\"\n The default response class to be used.\n\n Read more in the\n [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#default-response-class).\n \"\"\"\n ),\n ] = Default(JSONResponse),\n responses: Annotated[\n dict[int | str, dict[str, Any]] | None,\n Doc(\n \"\"\"\n Additional responses to be shown in OpenAPI.\n\n It will be added to the generated OpenAPI (e.g. visible at `/docs`).\n\n |
| 12 | run_command | {
"command": "sed -n 318,332p fastapi/routing.py"
} | {"status": "ok", "stdout": "def get_request_handler(\n dependant: Dependant,\n body_field: ModelField | None = None,\n status_code: int | None = None,\n responsfull{"status": "ok", "stdout": "def get_request_handler(\n dependant: Dependant,\n body_field: ModelField | None = None,\n status_code: int | None = None,\n response_class: type[Response] | DefaultPlaceholder = Default(JSONResponse),\n response_field: ModelField | None = None,\n response_model_include: IncEx | None = None,\n response_model_exclude: IncEx | None = None,\n response_model_by_alias: bool = True,\n response_model_exclude_unset: bool = False,\n response_model_exclude_defaults: bool = False,\n response_model_exclude_none: bool = False,\n dependency_overrides_provider: Any | None = None,\n embed_body_fields: bool = False,\n) -> Callable[[Request], Coroutine[Any, Any, Response]]:\n", "exit_code": 0} |
| 13 | run_command | {
"command": "sed -n 1032,1175p fastapi/routing.py"
} | {"status": "ok", "stdout": " def add_api_route(\n self,\n path: str,\n endpoint: Callable[..., Any],\n *,\n response_model: Any = Default(None),\n status_code: full{"status": "ok", "stdout": " def add_api_route(\n self,\n path: str,\n endpoint: Callable[..., Any],\n *,\n response_model: Any = Default(None),\n status_code: int | None = None,\n tags: list[str | Enum] | None = None,\n dependencies: Sequence[params.Depends] | None = None,\n summary: str | None = None,\n description: str | None = None,\n response_description: str = \"Successful Response\",\n responses: dict[int | str, dict[str, Any]] | None = None,\n deprecated: bool | None = None,\n methods: set[str] | list[str] | None = None,\n operation_id: str | None = None,\n response_model_include: IncEx | None = None,\n response_model_exclude: IncEx | None = None,\n response_model_by_alias: bool = True,\n response_model_exclude_unset: bool = False,\n response_model_exclude_defaults: bool = False,\n response_model_exclude_none: bool = False,\n include_in_schema: bool = True,\n response_class: type[Response] | DefaultPlaceholder = Default(JSONResponse),\n name: str | None = None,\n route_class_override: type[APIRoute] | None = None,\n callbacks: list[BaseRoute] | None = None,\n openapi_extra: dict[str, Any] | None = None,\n generate_unique_id_function: Callable[[APIRoute], str]\n | DefaultPlaceholder = Default(generate_unique_id),\n ) -> None:\n route_class = route_class_override or self.route_class\n responses = responses or {}\n combined_responses = {**self.responses, **responses}\n current_response_class = get_value_or_default(\n response_class, self.default_response_class\n )\n current_tags = self.tags.copy()\n if tags:\n current_tags.extend(tags)\n current_dependencies = self.dependencies.copy()\n if dependencies:\n current_dependencies.extend(dependencies)\n curren |
| 14 | run_command | {
"command": "sed -n 572,752p fastapi/routing.py"
} | {"status": "ok", "stdout": " def __init__(\n self,\n path: str,\n endpoint: Callable[..., Any],\n *,\n response_model: Any = Default(None),\n status_code: int |full{"status": "ok", "stdout": " def __init__(\n self,\n path: str,\n endpoint: Callable[..., Any],\n *,\n response_model: Any = Default(None),\n status_code: int | None = None,\n tags: list[str | Enum] | None = None,\n dependencies: Sequence[params.Depends] | None = None,\n summary: str | None = None,\n description: str | None = None,\n response_description: str = \"Successful Response\",\n responses: dict[int | str, dict[str, Any]] | None = None,\n deprecated: bool | None = None,\n name: str | None = None,\n methods: set[str] | list[str] | None = None,\n operation_id: str | None = None,\n response_model_include: IncEx | None = None,\n response_model_exclude: IncEx | None = None,\n response_model_by_alias: bool = True,\n response_model_exclude_unset: bool = False,\n response_model_exclude_defaults: bool = False,\n response_model_exclude_none: bool = False,\n include_in_schema: bool = True,\n response_class: type[Response] | DefaultPlaceholder = Default(JSONResponse),\n dependency_overrides_provider: Any | None = None,\n callbacks: list[BaseRoute] | None = None,\n openapi_extra: dict[str, Any] | None = None,\n generate_unique_id_function: Callable[[\"APIRoute\"], str]\n | DefaultPlaceholder = Default(generate_unique_id),\n ) -> None:\n self.path = path\n self.endpoint = endpoint\n if isinstance(response_model, DefaultPlaceholder):\n return_annotation = get_typed_return_annotation(endpoint)\n if lenient_issubclass(return_annotation, Response):\n response_model = None\n else:\n response_model = return_annotation\n self.response_model = response_model\n self.summary = summary\n self.response_description = response_description\n self.deprecated = deprecated\n |
| 15 | run_command | {
"command": "sed -n 752,790p fastapi/routing.py; grep -n \"get_request_handler(\" fastapi/routing.py"
} | {"status": "ok", "stdout": " def __init__(\n self,\n *,\n prefix: Annotated[str, Doc(\"An optional path prefix for the router.\")] = \"\",\n tags: Annotated[\n full{"status": "ok", "stdout": " def __init__(\n self,\n *,\n prefix: Annotated[str, Doc(\"An optional path prefix for the router.\")] = \"\",\n tags: Annotated[\n list[str | Enum] | None,\n Doc(\n \"\"\"\n A list of tags to be applied to all the *path operations* in this\n router.\n\n It will be added to the generated OpenAPI (e.g. visible at `/docs`).\n\n Read more about it in the\n [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).\n \"\"\"\n ),\n ] = None,\n dependencies: Annotated[\n Sequence[params.Depends] | None,\n Doc(\n \"\"\"\n A list of dependencies (using `Depends()`) to be applied to all the\n *path operations* in this router.\n\n Read more about it in the\n [FastAPI docs for Bigger Applications - Multiple Files](https://fastapi.tiangolo.com/tutorial/bigger-applications/#include-an-apirouter-with-a-custom-prefix-tags-responses-and-dependencies).\n \"\"\"\n ),\n ] = None,\n default_response_class: Annotated[\n type[Response],\n Doc(\n \"\"\"\n The default response class to be used.\n\n Read more in the\n [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#default-response-class).\n \"\"\"\n318:def get_request_handler(\n702: return get_request_handler(\n", "exit_code": 0} |
| 16 | run_command | {
"command": "sed -n 690,752p fastapi/routing.py"
} | {"status": "ok", "stdout": " self._flat_dependant = get_flat_dependant(self.dependant)\n self._embed_body_fields = _should_embed_body_fields(\n self._flat_depenfull{"status": "ok", "stdout": " self._flat_dependant = get_flat_dependant(self.dependant)\n self._embed_body_fields = _should_embed_body_fields(\n self._flat_dependant.body_params\n )\n self.body_field = get_body_field(\n flat_dependant=self._flat_dependant,\n name=self.unique_id,\n embed_body_fields=self._embed_body_fields,\n )\n self.app = request_response(self.get_route_handler())\n\n def get_route_handler(self) -> Callable[[Request], Coroutine[Any, Any, Response]]:\n return get_request_handler(\n dependant=self.dependant,\n body_field=self.body_field,\n status_code=self.status_code,\n response_class=self.response_class,\n response_field=self.response_field,\n response_model_include=self.response_model_include,\n response_model_exclude=self.response_model_exclude,\n response_model_by_alias=self.response_model_by_alias,\n response_model_exclude_unset=self.response_model_exclude_unset,\n response_model_exclude_defaults=self.response_model_exclude_defaults,\n response_model_exclude_none=self.response_model_exclude_none,\n dependency_overrides_provider=self.dependency_overrides_provider,\n embed_body_fields=self._embed_body_fields,\n )\n\n def matches(self, scope: Scope) -> tuple[Match, Scope]:\n match, child_scope = super().matches(scope)\n if match != Match.NONE:\n child_scope[\"route\"] = self\n return match, child_scope\n\n\nclass APIRouter(routing.Router):\n \"\"\"\n `APIRouter` class, used to group *path operations*, for example to structure\n an app in multiple files. It would then be included in the `FastAPI` app, or\n in another `APIRouter` (ultimately included in the app).\n\n Read more about it in the\n [FastAPI docs for Bigger Applications - Multiple Files](https:/ |
| 17 | run_command | {
"command": "grep -rn \"strict_content_type\" /workspace 2>/dev/null | grep -v \".git/\" | head; echo ---; ls -la fastapi-slim; echo ---; grep -rn \"415\" fastapi/*.py | head"
} | {"status": "ok", "stdout": "---\ntotal 8\ndrwxr-xr-x@ 3 jp wheel 96 Jul 15 08:13 .\ndrwx------@ 21 jp wheel 672 Sep 23 22:41 ..\n-rw-r--r--@ 1 jp wheel 2101 Julfull{"status": "ok", "stdout": "---\ntotal 8\ndrwxr-xr-x@ 3 jp wheel 96 Jul 15 08:13 .\ndrwx------@ 21 jp wheel 672 Sep 23 22:41 ..\n-rw-r--r--@ 1 jp wheel 2101 Jul 15 08:13 README.md\n---\n", "exit_code": 0} |
| 18 | run_command | {
"command": "ls docs/en/release-notes.md 2>/dev/null && head -60 docs/en/release-notes.md; grep -rn \"Unsupported Media Type\\|415\" docs/en/release-notes.md | head"
} | {"status": "ok", "stdout": "", "exit_code": 0}full{"status": "ok", "stdout": "", "exit_code": 0} |
| 19 | run_command | {
"command": "ls docs; ls docs/en 2>/dev/null | head; find docs -name \"release-notes*\" | head"
} | {"status": "ok", "stdout": "de\nen\nes\nfr\nja\nko\nlanguage_names.yml\nmissing-translation.md\npt\nru\ntr\nuk\nzh\nzh-hant\ndata\ndocs\nmkdocs.env.yml\nmkdocs.full{"status": "ok", "stdout": "de\nen\nes\nfr\nja\nko\nlanguage_names.yml\nmissing-translation.md\npt\nru\ntr\nuk\nzh\nzh-hant\ndata\ndocs\nmkdocs.env.yml\nmkdocs.yml\noverrides\ndocs/en/docs/release-notes.md\n", "exit_code": 0} |
| 20 | run_command | {
"command": "grep -n \"strict_content_type\\|content-type\\|content_type\" docs/en/docs/release-notes.md | head -20"
} | {"status": "ok", "stdout": "5202:In versions lower than `0.65.2`, FastAPI would try to read the request payload as JSON even if the `content-type` header sent wfull{"status": "ok", "stdout": "5202:In versions lower than `0.65.2`, FastAPI would try to read the request payload as JSON even if the `content-type` header sent was not set to `application/json` or a compatible JSON media type (e.g. `application/geo+json`).\n5496:* \ud83d\udcdd Fix renamed parameter `content_type` typo. PR [#2135](https://github.com/tiangolo/fastapi/pull/2135) by [@TeoZosa](https://github.com/TeoZosa).\n6370:* Rename *path operation decorator* parameter `content_type` to `response_class`. PR [#183](https://github.com/tiangolo/fastapi/pull/183).\n", "exit_code": 0} |
| 21 | run_command | {
"command": "sed -n 1,80p docs/en/docs/release-notes.md"
} | {"status": "ok", "stdout": "---\nhide:\n - navigation\n---\n\n# Release Notes\n\n## Latest Changes\n\n### Internal\n\n* \u2b06 Bump flask from 3.1.2 to 3.1.3. Pfull{"status": "ok", "stdout": "---\nhide:\n - navigation\n---\n\n# Release Notes\n\n## Latest Changes\n\n### Internal\n\n* \u2b06 Bump flask from 3.1.2 to 3.1.3. PR [#14949](https://github.com/fastapi/fastapi/pull/14949) by [@dependabot[bot]](https://github.com/apps/dependabot).\n* \u2b06 Update all dependencies to use `griffelib` instead of `griffe`. PR [#14973](https://github.com/fastapi/fastapi/pull/14973) by [@svlandeg](https://github.com/svlandeg).\n* \ud83d\udd28 Fix `FastAPI People` workflow. PR [#14951](https://github.com/fastapi/fastapi/pull/14951) by [@YuriiMotov](https://github.com/YuriiMotov).\n* \ud83d\udc77 Do not run codspeed with coverage as it's not tracked. PR [#14966](https://github.com/fastapi/fastapi/pull/14966) by [@tiangolo](https://github.com/tiangolo).\n* \ud83d\udc77 Do not include benchmark tests in coverage to speed up coverage processing. PR [#14965](https://github.com/fastapi/fastapi/pull/14965) by [@tiangolo](https://github.com/tiangolo).\n\n## 0.131.0\n\n### Breaking Changes\n\n* \ud83d\uddd1\ufe0f Deprecate `ORJSONResponse` and `UJSONResponse`. PR [#14964](https://github.com/fastapi/fastapi/pull/14964) by [@tiangolo](https://github.com/tiangolo).\n\n## 0.130.0\n\n### Features\n\n* \u2728 Serialize JSON response with Pydantic (in Rust), when there's a Pydantic return type or response model. PR [#14962](https://github.com/fastapi/fastapi/pull/14962) by [@tiangolo](https://github.com/tiangolo).\n * This results in 2x (or more) performance increase for JSON responses.\n * New docs: [Custom Response - JSON Performance](https://fastapi.tiangolo.com/advanced/custom-response/#json-performance).\n\n## 0.129.2\n\n### Internal\n\n* \u2b06\ufe0f Upgrade pytest. PR [#14959](https://github.com/fastapi/fastapi/pull/14959) by [@tiangolo](https://github.com/tiangolo).\n* \ud83d\udc77 Fix CI, do not attempt to publish `fastapi-slim`. PR [#14958](https://github.com/fastapi/fastapi/pull/14958) by [@tiangolo](https://github.com/tiangolo).\n* \u2796 D |