diff --git a/README.md b/README.md index 664bb3a..c8102b5 100644 --- a/README.md +++ b/README.md @@ -3,13 +3,13 @@ and Result from [returns](https://returns.readthedocs.io/en/latest/pages/result. so that both primary (200) and [additional](https://fastapi.tiangolo.com/advanced/additional-responses/) response types can be inferred from the path operation type signature. -Install as user +Install as user: ```bash pip install git+https://github.com/amacfie/fastapi_returns_inferring_router ``` -Install as developer +Install as developer: ```bash pip install --editable . ``` diff --git a/fastapi_returns_inferring_router/__init__.py b/fastapi_returns_inferring_router/__init__.py index bff7477..0aa12d0 100644 --- a/fastapi_returns_inferring_router/__init__.py +++ b/fastapi_returns_inferring_router/__init__.py @@ -3,9 +3,12 @@ from typing import (TYPE_CHECKING, Any, Callable, Union, get_args, get_origin, get_type_hints) from fastapi import APIRouter +from fastapi.datastructures import DefaultPlaceholder from fastapi.encoders import jsonable_encoder from fastapi.responses import JSONResponse from returns.result import Result, Success, Failure +from semantic_version import Version +import fastapi class ReturnsInferringRouter(APIRouter): @@ -47,8 +50,7 @@ def new_endpoint(*args, **kwargs): # pydantic maps None to something openapi doesn't recognize if suc_type is None: suc_type = Any - if kwargs.get("response_model") is None: - kwargs["response_model"] = suc_type + kwargs["response_model"] = suc_type if ( kwargs.get("responses") is None or @@ -87,7 +89,7 @@ def new_endpoint(*args, **kwargs): responses[code] = {"model": fail_model} kwargs["responses"] = responses - else: + elif Version(fastapi.__version__) < Version("0.89.0"): # same pydantic issue as above if return_type is None: return_type = Any diff --git a/setup.cfg b/setup.cfg index 2a80157..65cfd35 100644 --- a/setup.cfg +++ b/setup.cfg @@ -8,6 +8,7 @@ install_requires = fastapi==0.* returns==0.* build + semantic-version==2.* sphinx==4.* twine python_requires = >=3.10, <4