The following issues were found

tests/test_sub_callbacks.py
27 issues
Unable to import 'pydantic'
Error

Line: 5 Column: 1

              
from fastapi import APIRouter, FastAPI
from fastapi.testclient import TestClient
from pydantic import BaseModel, HttpUrl

app = FastAPI()


class Invoice(BaseModel):

            

Reported by Pylint.

Unused argument 'body'
Error

Line: 32 Column: 26

              @invoices_callback_router.post(
    "{$callback_url}/invoices/{$request.body.id}", response_model=InvoiceEventReceived
)
def invoice_notification(body: InvoiceEvent):
    pass  # pragma: nocover


class Event(BaseModel):
    name: str

            

Reported by Pylint.

Unused argument 'event'
Error

Line: 45 Column: 20

              

@events_callback_router.get("{$callback_url}/events/{$request.body.title}")
def event_callback(event: Event):
    pass  # pragma: nocover


subrouter = APIRouter()


            

Reported by Pylint.

Unused argument 'callback_url'
Error

Line: 53 Column: 38

              

@subrouter.post("/invoices/", callbacks=invoices_callback_router.routes)
def create_invoice(invoice: Invoice, callback_url: Optional[HttpUrl] = None):
    """
    Create an invoice.

    This will (let's imagine) let the API user (some external developer) create an
    invoice.

            

Reported by Pylint.

Unused argument 'invoice'
Error

Line: 53 Column: 20

              

@subrouter.post("/invoices/", callbacks=invoices_callback_router.routes)
def create_invoice(invoice: Invoice, callback_url: Optional[HttpUrl] = None):
    """
    Create an invoice.

    This will (let's imagine) let the API user (some external developer) create an
    invoice.

            

Reported by Pylint.

Missing module docstring
Error

Line: 1 Column: 1

              from typing import Optional

from fastapi import APIRouter, FastAPI
from fastapi.testclient import TestClient
from pydantic import BaseModel, HttpUrl

app = FastAPI()



            

Reported by Pylint.

Too few public methods (0/2)
Error

Line: 10 Column: 1

              app = FastAPI()


class Invoice(BaseModel):
    id: str
    title: Optional[str] = None
    customer: str
    total: float


            

Reported by Pylint.

Missing class docstring
Error

Line: 10 Column: 1

              app = FastAPI()


class Invoice(BaseModel):
    id: str
    title: Optional[str] = None
    customer: str
    total: float


            

Reported by Pylint.

Too few public methods (0/2)
Error

Line: 17 Column: 1

                  total: float


class InvoiceEvent(BaseModel):
    description: str
    paid: bool


class InvoiceEventReceived(BaseModel):

            

Reported by Pylint.

Missing class docstring
Error

Line: 17 Column: 1

                  total: float


class InvoiceEvent(BaseModel):
    description: str
    paid: bool


class InvoiceEventReceived(BaseModel):

            

Reported by Pylint.

fastapi/security/http.py
27 issues
Unable to import 'pydantic'
Error

Line: 10 Column: 1

              from fastapi.openapi.models import HTTPBearer as HTTPBearerModel
from fastapi.security.base import SecurityBase
from fastapi.security.utils import get_authorization_scheme_param
from pydantic import BaseModel
from starlette.requests import Request
from starlette.status import HTTP_401_UNAUTHORIZED, HTTP_403_FORBIDDEN


class HTTPBasicCredentials(BaseModel):

            

Reported by Pylint.

Unable to import 'starlette.requests'
Error

Line: 11 Column: 1

              from fastapi.security.base import SecurityBase
from fastapi.security.utils import get_authorization_scheme_param
from pydantic import BaseModel
from starlette.requests import Request
from starlette.status import HTTP_401_UNAUTHORIZED, HTTP_403_FORBIDDEN


class HTTPBasicCredentials(BaseModel):
    username: str

            

Reported by Pylint.

Unable to import 'starlette.status'
Error

Line: 12 Column: 1

              from fastapi.security.utils import get_authorization_scheme_param
from pydantic import BaseModel
from starlette.requests import Request
from starlette.status import HTTP_401_UNAUTHORIZED, HTTP_403_FORBIDDEN


class HTTPBasicCredentials(BaseModel):
    username: str
    password: str

            

Reported by Pylint.

Unused namedtuple imported from collections
Error

Line: 2 Column: 1

              import binascii
from base64 import b64decode
from typing import Optional

from fastapi.exceptions import HTTPException
from fastapi.openapi.models import HTTPBase as HTTPBaseModel
from fastapi.openapi.models import HTTPBearer as HTTPBearerModel
from fastapi.security.base import SecurityBase
from fastapi.security.utils import get_authorization_scheme_param

            

Reported by Pylint.

__init__ method from base class 'HTTPBase' is not called
Error

Line: 54 Column: 5

              

class HTTPBasic(HTTPBase):
    def __init__(
        self,
        *,
        scheme_name: Optional[str] = None,
        realm: Optional[str] = None,
        description: Optional[str] = None,

            

Reported by Pylint.

Consider explicitly re-raising using the 'from' keyword
Error

Line: 93 Column: 13

                      try:
            data = b64decode(param).decode("ascii")
        except (ValueError, UnicodeDecodeError, binascii.Error):
            raise invalid_user_credentials_exc
        username, separator, password = data.partition(":")
        if not separator:
            raise invalid_user_credentials_exc
        return HTTPBasicCredentials(username=username, password=password)


            

Reported by Pylint.

__init__ method from base class 'HTTPBase' is not called
Error

Line: 101 Column: 5

              

class HTTPBearer(HTTPBase):
    def __init__(
        self,
        *,
        bearerFormat: Optional[str] = None,
        scheme_name: Optional[str] = None,
        description: Optional[str] = None,

            

Reported by Pylint.

__init__ method from base class 'HTTPBase' is not called
Error

Line: 137 Column: 5

              

class HTTPDigest(HTTPBase):
    def __init__(
        self,
        *,
        scheme_name: Optional[str] = None,
        description: Optional[str] = None,
        auto_error: bool = True,

            

Reported by Pylint.

Missing module docstring
Error

Line: 1 Column: 1

              import binascii
from base64 import b64decode
from typing import Optional

from fastapi.exceptions import HTTPException
from fastapi.openapi.models import HTTPBase as HTTPBaseModel
from fastapi.openapi.models import HTTPBearer as HTTPBearerModel
from fastapi.security.base import SecurityBase
from fastapi.security.utils import get_authorization_scheme_param

            

Reported by Pylint.

Missing class docstring
Error

Line: 15 Column: 1

              from starlette.status import HTTP_401_UNAUTHORIZED, HTTP_403_FORBIDDEN


class HTTPBasicCredentials(BaseModel):
    username: str
    password: str


class HTTPAuthorizationCredentials(BaseModel):

            

Reported by Pylint.

.github/actions/watch-previews/app/main.py
25 issues
Unable to import 'httpx'
Error

Line: 6 Column: 1

              from pathlib import Path
from typing import List, Optional

import httpx
from github import Github
from github.NamedUser import NamedUser
from pydantic import BaseModel, BaseSettings, SecretStr

github_api = "https://api.github.com"

            

Reported by Pylint.

Unable to import 'github'
Error

Line: 7 Column: 1

              from typing import List, Optional

import httpx
from github import Github
from github.NamedUser import NamedUser
from pydantic import BaseModel, BaseSettings, SecretStr

github_api = "https://api.github.com"
netlify_api = "https://api.netlify.com"

            

Reported by Pylint.

Unable to import 'github.NamedUser'
Error

Line: 8 Column: 1

              
import httpx
from github import Github
from github.NamedUser import NamedUser
from pydantic import BaseModel, BaseSettings, SecretStr

github_api = "https://api.github.com"
netlify_api = "https://api.netlify.com"


            

Reported by Pylint.

Unable to import 'pydantic'
Error

Line: 9 Column: 1

              import httpx
from github import Github
from github.NamedUser import NamedUser
from pydantic import BaseModel, BaseSettings, SecretStr

github_api = "https://api.github.com"
netlify_api = "https://api.netlify.com"



            

Reported by Pylint.

Redefining name 'commit' from outer scope (line 67)
Error

Line: 39 Column: 17

                  artifacts: List[Artifact]


def get_message(commit: str) -> str:
    return f"Docs preview for commit {commit} at"


if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO)

            

Reported by Pylint.

Use lazy % formatting in logging functions
Error

Line: 46 Column: 5

              if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO)
    settings = Settings()
    logging.info(f"Using config: {settings.json()}")
    g = Github(settings.input_token.get_secret_value())
    repo = g.get_repo(settings.github_repository)
    owner: NamedUser = repo.owner
    headers = {"Authorization": f"token {settings.input_token.get_secret_value()}"}
    prs = list(repo.get_pulls(state="open"))

            

Reported by Pylint.

Use lazy % formatting in logging functions
Error

Line: 60 Column: 9

                  artifacts_response = ArtifactResponse.parse_obj(data)
    for pr in prs:
        logging.info("-----")
        logging.info(f"Processing PR #{pr.number}: {pr.title}")
        pr_comments = list(pr.get_issue_comments())
        pr_commits = list(pr.get_commits())
        last_commit = pr_commits[0]
        for pr_commit in pr_commits:
            if pr_commit.commit.author.date > last_commit.commit.author.date:

            

Reported by Pylint.

Use lazy % formatting in logging functions
Error

Line: 68 Column: 9

                          if pr_commit.commit.author.date > last_commit.commit.author.date:
                last_commit = pr_commit
        commit = last_commit.commit.sha
        logging.info(f"Last commit: {commit}")
        message = get_message(commit)
        notified = False
        for pr_comment in pr_comments:
            if message in pr_comment.body:
                notified = True

            

Reported by Pylint.

Use lazy % formatting in logging functions
Error

Line: 74 Column: 9

                      for pr_comment in pr_comments:
            if message in pr_comment.body:
                notified = True
        logging.info(f"Docs preview was notified: {notified}")
        if not notified:
            artifact_name = f"docs-zip-{commit}"
            use_artifact: Optional[Artifact] = None
            for artifact in artifacts_response.artifacts:
                if artifact.name == artifact_name:

            

Reported by Pylint.

Use lazy % formatting in logging functions
Error

Line: 85 Column: 17

                          if not use_artifact:
                logging.info("Artifact not available")
            else:
                logging.info(f"Existing artifact: {use_artifact.name}")
                response = httpx.post(
                    "https://api.github.com/repos/tiangolo/fastapi/actions/workflows/preview-docs.yml/dispatches",
                    headers=headers,
                    json={
                        "ref": "master",

            

Reported by Pylint.

tests/test_skip_defaults.py
25 issues
Unable to import 'pydantic'
Error

Line: 5 Column: 1

              
from fastapi import FastAPI
from fastapi.testclient import TestClient
from pydantic import BaseModel

app = FastAPI()


class SubModel(BaseModel):

            

Reported by Pylint.

Missing module docstring
Error

Line: 1 Column: 1

              from typing import Optional

from fastapi import FastAPI
from fastapi.testclient import TestClient
from pydantic import BaseModel

app = FastAPI()



            

Reported by Pylint.

Too few public methods (0/2)
Error

Line: 10 Column: 1

              app = FastAPI()


class SubModel(BaseModel):
    a: Optional[str] = "foo"


class Model(BaseModel):
    x: Optional[int]

            

Reported by Pylint.

Missing class docstring
Error

Line: 10 Column: 1

              app = FastAPI()


class SubModel(BaseModel):
    a: Optional[str] = "foo"


class Model(BaseModel):
    x: Optional[int]

            

Reported by Pylint.

Missing class docstring
Error

Line: 14 Column: 1

                  a: Optional[str] = "foo"


class Model(BaseModel):
    x: Optional[int]
    sub: SubModel


class ModelSubclass(Model):

            

Reported by Pylint.

Too few public methods (0/2)
Error

Line: 14 Column: 1

                  a: Optional[str] = "foo"


class Model(BaseModel):
    x: Optional[int]
    sub: SubModel


class ModelSubclass(Model):

            

Reported by Pylint.

Missing class docstring
Error

Line: 19 Column: 1

                  sub: SubModel


class ModelSubclass(Model):
    y: int
    z: int = 0
    w: Optional[int] = None



            

Reported by Pylint.

Too few public methods (0/2)
Error

Line: 19 Column: 1

                  sub: SubModel


class ModelSubclass(Model):
    y: int
    z: int = 0
    w: Optional[int] = None



            

Reported by Pylint.

Too few public methods (0/2)
Error

Line: 25 Column: 1

                  w: Optional[int] = None


class ModelDefaults(BaseModel):
    w: Optional[str] = None
    x: Optional[str] = None
    y: str = "y"
    z: str = "z"


            

Reported by Pylint.

Missing class docstring
Error

Line: 25 Column: 1

                  w: Optional[int] = None


class ModelDefaults(BaseModel):
    w: Optional[str] = None
    x: Optional[str] = None
    y: str = "y"
    z: str = "z"


            

Reported by Pylint.

tests/test_dependency_duplicates.py
25 issues
Unable to import 'pydantic'
Error

Line: 5 Column: 1

              
from fastapi import Depends, FastAPI
from fastapi.testclient import TestClient
from pydantic import BaseModel

app = FastAPI()

client = TestClient(app)


            

Reported by Pylint.

Missing module docstring
Error

Line: 1 Column: 1

              from typing import List

from fastapi import Depends, FastAPI
from fastapi.testclient import TestClient
from pydantic import BaseModel

app = FastAPI()

client = TestClient(app)

            

Reported by Pylint.

Missing class docstring
Error

Line: 12 Column: 1

              client = TestClient(app)


class Item(BaseModel):
    data: str


def duplicate_dependency(item: Item):
    return item

            

Reported by Pylint.

Too few public methods (0/2)
Error

Line: 12 Column: 1

              client = TestClient(app)


class Item(BaseModel):
    data: str


def duplicate_dependency(item: Item):
    return item

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 16 Column: 1

                  data: str


def duplicate_dependency(item: Item):
    return item


def dependency(item2: Item):
    return item2

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 20 Column: 1

                  return item


def dependency(item2: Item):
    return item2


def sub_duplicate_dependency(
    item: Item, sub_item: Item = Depends(duplicate_dependency)

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 24 Column: 1

                  return item2


def sub_duplicate_dependency(
    item: Item, sub_item: Item = Depends(duplicate_dependency)
):
    return [item, sub_item]



            

Reported by Pylint.

Missing function or method docstring
Error

Line: 31 Column: 1

              

@app.post("/with-duplicates")
async def with_duplicates(item: Item, item2: Item = Depends(duplicate_dependency)):
    return [item, item2]


@app.post("/no-duplicates")
async def no_duplicates(item: Item, item2: Item = Depends(dependency)):

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 36 Column: 1

              

@app.post("/no-duplicates")
async def no_duplicates(item: Item, item2: Item = Depends(dependency)):
    return [item, item2]


@app.post("/with-duplicates-sub")
async def no_duplicates_sub(

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 41 Column: 1

              

@app.post("/with-duplicates-sub")
async def no_duplicates_sub(
    item: Item, sub_items: List[Item] = Depends(sub_duplicate_dependency)
):
    return [item, sub_items]



            

Reported by Pylint.

fastapi/datastructures.py
25 issues
Unable to import 'starlette.datastructures'
Error

Line: 3 Column: 1

              from typing import Any, Callable, Iterable, Type, TypeVar

from starlette.datastructures import URL as URL  # noqa: F401
from starlette.datastructures import Address as Address  # noqa: F401
from starlette.datastructures import FormData as FormData  # noqa: F401
from starlette.datastructures import Headers as Headers  # noqa: F401
from starlette.datastructures import QueryParams as QueryParams  # noqa: F401
from starlette.datastructures import State as State  # noqa: F401
from starlette.datastructures import UploadFile as StarletteUploadFile

            

Reported by Pylint.

Unable to import 'starlette.datastructures'
Error

Line: 4 Column: 1

              from typing import Any, Callable, Iterable, Type, TypeVar

from starlette.datastructures import URL as URL  # noqa: F401
from starlette.datastructures import Address as Address  # noqa: F401
from starlette.datastructures import FormData as FormData  # noqa: F401
from starlette.datastructures import Headers as Headers  # noqa: F401
from starlette.datastructures import QueryParams as QueryParams  # noqa: F401
from starlette.datastructures import State as State  # noqa: F401
from starlette.datastructures import UploadFile as StarletteUploadFile

            

Reported by Pylint.

Unable to import 'starlette.datastructures'
Error

Line: 5 Column: 1

              
from starlette.datastructures import URL as URL  # noqa: F401
from starlette.datastructures import Address as Address  # noqa: F401
from starlette.datastructures import FormData as FormData  # noqa: F401
from starlette.datastructures import Headers as Headers  # noqa: F401
from starlette.datastructures import QueryParams as QueryParams  # noqa: F401
from starlette.datastructures import State as State  # noqa: F401
from starlette.datastructures import UploadFile as StarletteUploadFile


            

Reported by Pylint.

Unable to import 'starlette.datastructures'
Error

Line: 6 Column: 1

              from starlette.datastructures import URL as URL  # noqa: F401
from starlette.datastructures import Address as Address  # noqa: F401
from starlette.datastructures import FormData as FormData  # noqa: F401
from starlette.datastructures import Headers as Headers  # noqa: F401
from starlette.datastructures import QueryParams as QueryParams  # noqa: F401
from starlette.datastructures import State as State  # noqa: F401
from starlette.datastructures import UploadFile as StarletteUploadFile



            

Reported by Pylint.

Unable to import 'starlette.datastructures'
Error

Line: 7 Column: 1

              from starlette.datastructures import Address as Address  # noqa: F401
from starlette.datastructures import FormData as FormData  # noqa: F401
from starlette.datastructures import Headers as Headers  # noqa: F401
from starlette.datastructures import QueryParams as QueryParams  # noqa: F401
from starlette.datastructures import State as State  # noqa: F401
from starlette.datastructures import UploadFile as StarletteUploadFile


class UploadFile(StarletteUploadFile):

            

Reported by Pylint.

Unable to import 'starlette.datastructures'
Error

Line: 8 Column: 1

              from starlette.datastructures import FormData as FormData  # noqa: F401
from starlette.datastructures import Headers as Headers  # noqa: F401
from starlette.datastructures import QueryParams as QueryParams  # noqa: F401
from starlette.datastructures import State as State  # noqa: F401
from starlette.datastructures import UploadFile as StarletteUploadFile


class UploadFile(StarletteUploadFile):
    @classmethod

            

Reported by Pylint.

Unable to import 'starlette.datastructures'
Error

Line: 9 Column: 1

              from starlette.datastructures import Headers as Headers  # noqa: F401
from starlette.datastructures import QueryParams as QueryParams  # noqa: F401
from starlette.datastructures import State as State  # noqa: F401
from starlette.datastructures import UploadFile as StarletteUploadFile


class UploadFile(StarletteUploadFile):
    @classmethod
    def __get_validators__(cls: Type["UploadFile"]) -> Iterable[Callable[..., Any]]:

            

Reported by Pylint.

Unused URL imported from starlette.datastructures as URL
Error

Line: 3 Column: 1

              from typing import Any, Callable, Iterable, Type, TypeVar

from starlette.datastructures import URL as URL  # noqa: F401
from starlette.datastructures import Address as Address  # noqa: F401
from starlette.datastructures import FormData as FormData  # noqa: F401
from starlette.datastructures import Headers as Headers  # noqa: F401
from starlette.datastructures import QueryParams as QueryParams  # noqa: F401
from starlette.datastructures import State as State  # noqa: F401
from starlette.datastructures import UploadFile as StarletteUploadFile

            

Reported by Pylint.

Unused Address imported from starlette.datastructures as Address
Error

Line: 4 Column: 1

              from typing import Any, Callable, Iterable, Type, TypeVar

from starlette.datastructures import URL as URL  # noqa: F401
from starlette.datastructures import Address as Address  # noqa: F401
from starlette.datastructures import FormData as FormData  # noqa: F401
from starlette.datastructures import Headers as Headers  # noqa: F401
from starlette.datastructures import QueryParams as QueryParams  # noqa: F401
from starlette.datastructures import State as State  # noqa: F401
from starlette.datastructures import UploadFile as StarletteUploadFile

            

Reported by Pylint.

Unused FormData imported from starlette.datastructures as FormData
Error

Line: 5 Column: 1

              
from starlette.datastructures import URL as URL  # noqa: F401
from starlette.datastructures import Address as Address  # noqa: F401
from starlette.datastructures import FormData as FormData  # noqa: F401
from starlette.datastructures import Headers as Headers  # noqa: F401
from starlette.datastructures import QueryParams as QueryParams  # noqa: F401
from starlette.datastructures import State as State  # noqa: F401
from starlette.datastructures import UploadFile as StarletteUploadFile


            

Reported by Pylint.

tests/test_application.py
24 issues
Unable to import 'pytest'
Error

Line: 1 Column: 1

              import pytest
from fastapi.testclient import TestClient

from .main import app

client = TestClient(app)

openapi_schema = {
    "openapi": "3.0.2",

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 4 Column: 1

              import pytest
from fastapi.testclient import TestClient

from .main import app

client = TestClient(app)

openapi_schema = {
    "openapi": "3.0.2",

            

Reported by Pylint.

Missing module docstring
Error

Line: 1 Column: 1

              import pytest
from fastapi.testclient import TestClient

from .main import app

client = TestClient(app)

openapi_schema = {
    "openapi": "3.0.2",

            

Reported by Pylint.

Too many lines in module (1169/1000)
Error

Line: 1 Column: 1

              import pytest
from fastapi.testclient import TestClient

from .main import app

client = TestClient(app)

openapi_schema = {
    "openapi": "3.0.2",

            

Reported by Pylint.

Line too long (102/100)
Error

Line: 345 Column: 1

                                  },
                },
                "summary": "Get Path Param Min Max Length",
                "operationId": "get_path_param_min_max_length_path_param_min_maxlength__item_id__get",
                "parameters": [
                    {
                        "required": True,
                        "schema": {
                            "title": "Item Id",

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 1133 Column: 1

                      ("/non_decorated_route", 200, {"message": "Hello World"}),
        ("/nonexistent", 404, {"detail": "Not Found"}),
        ("/openapi.json", 200, openapi_schema),
    ],
)
def test_get_path(path, expected_status, expected_response):
    response = client.get(path)
    assert response.status_code == expected_status
    assert response.json() == expected_response

            

Reported by Pylint.

Use of assert detected. The enclosed code will be removed when compiling to optimised byte code.
Security

Line: 1137
Suggestion: https://bandit.readthedocs.io/en/latest/plugins/b101_assert_used.html

              )
def test_get_path(path, expected_status, expected_response):
    response = client.get(path)
    assert response.status_code == expected_status
    assert response.json() == expected_response


def test_swagger_ui():
    response = client.get("/docs")

            

Reported by Bandit.

Use of assert detected. The enclosed code will be removed when compiling to optimised byte code.
Security

Line: 1138
Suggestion: https://bandit.readthedocs.io/en/latest/plugins/b101_assert_used.html

              def test_get_path(path, expected_status, expected_response):
    response = client.get(path)
    assert response.status_code == expected_status
    assert response.json() == expected_response


def test_swagger_ui():
    response = client.get("/docs")
    assert response.status_code == 200, response.text

            

Reported by Bandit.

Missing function or method docstring
Error

Line: 1141 Column: 1

                  assert response.json() == expected_response


def test_swagger_ui():
    response = client.get("/docs")
    assert response.status_code == 200, response.text
    assert response.headers["content-type"] == "text/html; charset=utf-8"
    assert "swagger-ui-dist" in response.text
    assert (

            

Reported by Pylint.

Use of assert detected. The enclosed code will be removed when compiling to optimised byte code.
Security

Line: 1143
Suggestion: https://bandit.readthedocs.io/en/latest/plugins/b101_assert_used.html

              
def test_swagger_ui():
    response = client.get("/docs")
    assert response.status_code == 200, response.text
    assert response.headers["content-type"] == "text/html; charset=utf-8"
    assert "swagger-ui-dist" in response.text
    assert (
        "oauth2RedirectUrl: window.location.origin + '/docs/oauth2-redirect'"
        in response.text

            

Reported by Bandit.

tests/test_filter_pydantic_sub_model.py
24 issues
Unable to import 'pytest'
Error

Line: 3 Column: 1

              from typing import Optional

import pytest
from fastapi import Depends, FastAPI
from fastapi.testclient import TestClient
from pydantic import BaseModel, ValidationError, validator

app = FastAPI()


            

Reported by Pylint.

Unable to import 'pydantic'
Error

Line: 6 Column: 1

              import pytest
from fastapi import Depends, FastAPI
from fastapi.testclient import TestClient
from pydantic import BaseModel, ValidationError, validator

app = FastAPI()


class ModelB(BaseModel):

            

Reported by Pylint.

Method should have "self" as first argument
Error

Line: 25 Column: 5

                  model_b: ModelB

    @validator("name")
    def lower_username(cls, name: str, values):
        if not name.endswith("A"):
            raise ValueError("name must end in A")
        return name



            

Reported by Pylint.

Unused argument 'values'
Error

Line: 25 Column: 40

                  model_b: ModelB

    @validator("name")
    def lower_username(cls, name: str, values):
        if not name.endswith("A"):
            raise ValueError("name must end in A")
        return name



            

Reported by Pylint.

Missing module docstring
Error

Line: 1 Column: 1

              from typing import Optional

import pytest
from fastapi import Depends, FastAPI
from fastapi.testclient import TestClient
from pydantic import BaseModel, ValidationError, validator

app = FastAPI()


            

Reported by Pylint.

Too few public methods (0/2)
Error

Line: 11 Column: 1

              app = FastAPI()


class ModelB(BaseModel):
    username: str


class ModelC(ModelB):
    password: str

            

Reported by Pylint.

Missing class docstring
Error

Line: 11 Column: 1

              app = FastAPI()


class ModelB(BaseModel):
    username: str


class ModelC(ModelB):
    password: str

            

Reported by Pylint.

Too few public methods (0/2)
Error

Line: 15 Column: 1

                  username: str


class ModelC(ModelB):
    password: str


class ModelA(BaseModel):
    name: str

            

Reported by Pylint.

Missing class docstring
Error

Line: 15 Column: 1

                  username: str


class ModelC(ModelB):
    password: str


class ModelA(BaseModel):
    name: str

            

Reported by Pylint.

Too few public methods (1/2)
Error

Line: 19 Column: 1

                  password: str


class ModelA(BaseModel):
    name: str
    description: Optional[str] = None
    model_b: ModelB

    @validator("name")

            

Reported by Pylint.

tests/test_serialize_response_dataclass.py
24 issues
Unable to import 'pydantic.dataclasses'
Error

Line: 5 Column: 1

              
from fastapi import FastAPI
from fastapi.testclient import TestClient
from pydantic.dataclasses import dataclass

app = FastAPI()


@dataclass

            

Reported by Pylint.

Missing module docstring
Error

Line: 1 Column: 1

              from typing import List, Optional

from fastapi import FastAPI
from fastapi.testclient import TestClient
from pydantic.dataclasses import dataclass

app = FastAPI()



            

Reported by Pylint.

Missing class docstring
Error

Line: 11 Column: 1

              

@dataclass
class Item:
    name: str
    price: Optional[float] = None
    owner_ids: Optional[List[int]] = None



            

Reported by Pylint.

Missing function or method docstring
Error

Line: 18 Column: 1

              

@app.get("/items/valid", response_model=Item)
def get_valid():
    return {"name": "valid", "price": 1.0}


@app.get("/items/object", response_model=Item)
def get_object():

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 23 Column: 1

              

@app.get("/items/object", response_model=Item)
def get_object():
    return Item(name="object", price=1.0, owner_ids=[1, 2, 3])


@app.get("/items/coerce", response_model=Item)
def get_coerce():

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 28 Column: 1

              

@app.get("/items/coerce", response_model=Item)
def get_coerce():
    return {"name": "coerce", "price": "1.0"}


@app.get("/items/validlist", response_model=List[Item])
def get_validlist():

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 33 Column: 1

              

@app.get("/items/validlist", response_model=List[Item])
def get_validlist():
    return [
        {"name": "foo"},
        {"name": "bar", "price": 1.0},
        {"name": "baz", "price": 2.0, "owner_ids": [1, 2, 3]},
    ]

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 42 Column: 1

              

@app.get("/items/objectlist", response_model=List[Item])
def get_objectlist():
    return [
        Item(name="foo"),
        Item(name="bar", price=1.0),
        Item(name="baz", price=2.0, owner_ids=[1, 2, 3]),
    ]

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 51 Column: 1

              

@app.get("/items/no-response-model/object")
def get_no_response_model_object():
    return Item(name="object", price=1.0, owner_ids=[1, 2, 3])


@app.get("/items/no-response-model/objectlist")
def get_no_response_model_objectlist():

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 56 Column: 1

              

@app.get("/items/no-response-model/objectlist")
def get_no_response_model_objectlist():
    return [
        Item(name="foo"),
        Item(name="bar", price=1.0),
        Item(name="baz", price=2.0, owner_ids=[1, 2, 3]),
    ]

            

Reported by Pylint.

tests/test_security_oauth2.py
24 issues
Unable to import 'pytest'
Error

Line: 1 Column: 1

              import pytest
from fastapi import Depends, FastAPI, Security
from fastapi.security import OAuth2, OAuth2PasswordRequestFormStrict
from fastapi.testclient import TestClient
from pydantic import BaseModel

app = FastAPI()

reusable_oauth2 = OAuth2(

            

Reported by Pylint.

Unable to import 'pydantic'
Error

Line: 5 Column: 1

              from fastapi import Depends, FastAPI, Security
from fastapi.security import OAuth2, OAuth2PasswordRequestFormStrict
from fastapi.testclient import TestClient
from pydantic import BaseModel

app = FastAPI()

reusable_oauth2 = OAuth2(
    flows={

            

Reported by Pylint.

Unused OAuth2PasswordRequestFormStrict imported from fastapi.security
Error

Line: 3 Column: 1

              import pytest
from fastapi import Depends, FastAPI, Security
from fastapi.security import OAuth2, OAuth2PasswordRequestFormStrict
from fastapi.testclient import TestClient
from pydantic import BaseModel

app = FastAPI()

reusable_oauth2 = OAuth2(

            

Reported by Pylint.

Missing module docstring
Error

Line: 1 Column: 1

              import pytest
from fastapi import Depends, FastAPI, Security
from fastapi.security import OAuth2, OAuth2PasswordRequestFormStrict
from fastapi.testclient import TestClient
from pydantic import BaseModel

app = FastAPI()

reusable_oauth2 = OAuth2(

            

Reported by Pylint.

Missing class docstring
Error

Line: 19 Column: 1

              )


class User(BaseModel):
    username: str


# Here we use string annotations to test them
def get_current_user(oauth_header: "str" = Security(reusable_oauth2)):

            

Reported by Pylint.

Too few public methods (0/2)
Error

Line: 19 Column: 1

              )


class User(BaseModel):
    username: str


# Here we use string annotations to test them
def get_current_user(oauth_header: "str" = Security(reusable_oauth2)):

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 24 Column: 1

              

# Here we use string annotations to test them
def get_current_user(oauth_header: "str" = Security(reusable_oauth2)):
    user = User(username=oauth_header)
    return user


@app.post("/login")

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 30 Column: 1

              

@app.post("/login")
# Here we use string annotations to test them
def login(form_data: "OAuth2PasswordRequestFormStrict" = Depends()):
    return form_data


@app.get("/users/me")

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 36 Column: 1

              

@app.get("/users/me")
# Here we use string annotations to test them
def read_current_user(current_user: "User" = Depends(get_current_user)):
    return current_user


client = TestClient(app)

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 156 Column: 1

              }


def test_openapi_schema():
    response = client.get("/openapi.json")
    assert response.status_code == 200, response.text
    assert response.json() == openapi_schema



            

Reported by Pylint.