- "3.7-dev"
install:
- - pip install pipenv
- - pipenv install --dev
+ - pip install flit
+ - flit install
script:
- bash scripts/test.sh
-from pydantic import BaseModel
-
from fastapi import FastAPI
+from pydantic import BaseModel
class Item(BaseModel):
-from pydantic import BaseModel
-
from fastapi import FastAPI
+from pydantic import BaseModel
class Item(BaseModel):
-from pydantic import BaseModel
-
from fastapi import FastAPI
+from pydantic import BaseModel
class Item(BaseModel):
-from pydantic import BaseModel
-
from fastapi import FastAPI
+from pydantic import BaseModel
class Item(BaseModel):
-from pydantic import BaseModel
-
from fastapi import FastAPI, Path
+from pydantic import BaseModel
app = FastAPI()
-from pydantic import BaseModel
-
from fastapi import FastAPI
+from pydantic import BaseModel
app = FastAPI()
-from pydantic import BaseModel
-
from fastapi import Body, FastAPI
+from pydantic import BaseModel
app = FastAPI()
-from pydantic import BaseModel
-
from fastapi import Body, FastAPI
+from pydantic import BaseModel
app = FastAPI()
-from pydantic import BaseModel
-
from fastapi import Body, FastAPI
+from pydantic import BaseModel
app = FastAPI()
-from pydantic import BaseModel
-
from fastapi import FastAPI
+from pydantic import BaseModel
app = FastAPI()
from typing import List
-from pydantic import BaseModel
-
from fastapi import FastAPI
+from pydantic import BaseModel
app = FastAPI()
from typing import Set
-from pydantic import BaseModel
-
from fastapi import FastAPI
+from pydantic import BaseModel
app = FastAPI()
from typing import Set
-from pydantic import BaseModel
-
from fastapi import FastAPI
+from pydantic import BaseModel
app = FastAPI()
from typing import Set
+from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import UrlStr
-from fastapi import FastAPI
-
app = FastAPI()
from typing import List, Set
+from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import UrlStr
-from fastapi import FastAPI
-
app = FastAPI()
from typing import List, Set
+from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import UrlStr
-from fastapi import FastAPI
-
app = FastAPI()
from typing import List
+from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import UrlStr
-from fastapi import FastAPI
-
app = FastAPI()
-from pydantic import BaseModel, Schema
-
from fastapi import Body, FastAPI
+from pydantic import BaseModel, Schema
app = FastAPI()
-from pydantic import BaseModel
-
from fastapi import Body, FastAPI
+from pydantic import BaseModel
app = FastAPI()
-from starlette.responses import UJSONResponse
-
from fastapi import FastAPI
+from starlette.responses import UJSONResponse
app = FastAPI()
-from starlette.responses import HTMLResponse
-
from fastapi import FastAPI
+from starlette.responses import HTMLResponse
app = FastAPI()
-from starlette.responses import HTMLResponse
-
from fastapi import FastAPI
+from starlette.responses import HTMLResponse
app = FastAPI()
-from starlette.responses import HTMLResponse
-
from fastapi import FastAPI
+from starlette.responses import HTMLResponse
app = FastAPI()
-from pydantic import BaseModel
-
from fastapi import Depends, FastAPI
+from pydantic import BaseModel
app = FastAPI()
from typing import List
-from pydantic import BaseModel
-
from fastapi import Cookie, Depends, FastAPI
+from pydantic import BaseModel
app = FastAPI()
from random import choice
from typing import List
-from pydantic import BaseModel
-
from fastapi import Cookie, Depends, FastAPI
+from pydantic import BaseModel
app = FastAPI()
+from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import EmailStr
-from fastapi import FastAPI
-
app = FastAPI()
+from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import EmailStr
-from fastapi import FastAPI
-
app = FastAPI()
from typing import Optional
+from fastapi import FastAPI
from pydantic import BaseModel
from couchbase import LOCKMODE_WAIT
from couchbase.bucket import Bucket
from couchbase.cluster import Cluster, PasswordAuthenticator
-from fastapi import FastAPI
USERPROFILE_DOC_TYPE = "userprofile"
from typing import Set
+from fastapi import FastAPI
from pydantic import BaseModel
from starlette.status import HTTP_201_CREATED
-from fastapi import FastAPI
-
app = FastAPI()
from typing import Set
-from pydantic import BaseModel
-
from fastapi import FastAPI
+from pydantic import BaseModel
app = FastAPI()
from typing import Set
-from pydantic import BaseModel
-
from fastapi import FastAPI
+from pydantic import BaseModel
app = FastAPI()
from typing import Set
-from pydantic import BaseModel
-
from fastapi import FastAPI
+from pydantic import BaseModel
app = FastAPI()
from typing import Set
-from pydantic import BaseModel
-
from fastapi import FastAPI
+from pydantic import BaseModel
app = FastAPI()
from typing import Set
-from pydantic import BaseModel
-
from fastapi import FastAPI
+from pydantic import BaseModel
app = FastAPI()
+from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import EmailStr
-from fastapi import FastAPI
-
app = FastAPI()
+from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import EmailStr
-from fastapi import FastAPI
-
app = FastAPI()
from typing import Optional
-from pydantic import BaseModel
-
from fastapi import Depends, FastAPI, Security
from fastapi.security import OAuth2PasswordBearer
+from pydantic import BaseModel
app = FastAPI()
from typing import Optional
-from pydantic import BaseModel
-from starlette.exceptions import HTTPException
-
from fastapi import Depends, FastAPI, Security
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
+from pydantic import BaseModel
+from starlette.exceptions import HTTPException
fake_users_db = {
"johndoe": {
from typing import Optional
import jwt
+from fastapi import Depends, FastAPI, Security
+from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from jwt import PyJWTError
from passlib.context import CryptContext
from pydantic import BaseModel
from starlette.exceptions import HTTPException
from starlette.status import HTTP_403_FORBIDDEN
-from fastapi import Depends, FastAPI, Security
-from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
-
# to get a string like this run:
# openssl rand -hex 32
SECRET_KEY = "09d25e094faa6ca2556c818166b7a9563b93f7099f6f0f4caa6cf63b88e8d3e7"
from fastapi import FastAPI
+
from sqlalchemy import Boolean, Column, Integer, String, create_engine
from sqlalchemy.ext.declarative import declarative_base, declared_attr
from sqlalchemy.orm import scoped_session, sessionmaker
from typing import Any, Callable, Dict, List, Optional, Type
+from fastapi import routing
+from fastapi.openapi.docs import get_redoc_html, get_swagger_ui_html
+from fastapi.openapi.utils import get_openapi
from pydantic import BaseModel
from starlette.applications import Starlette
from starlette.exceptions import ExceptionMiddleware, HTTPException
from starlette.requests import Request
from starlette.responses import JSONResponse, Response
-from fastapi import routing
-from fastapi.openapi.docs import get_redoc_html, get_swagger_ui_html
-from fastapi.openapi.utils import get_openapi
-
async def http_exception(request: Request, exc: HTTPException) -> JSONResponse:
return JSONResponse({"detail": exc.detail}, status_code=exc.status_code)
from typing import Callable, List, Sequence
-from pydantic.fields import Field
-
from fastapi.security.base import SecurityBase
+from pydantic.fields import Field
param_supported_types = (str, int, float, bool)
from copy import deepcopy
from typing import Any, Callable, Dict, List, Mapping, Sequence, Tuple, Type
+from fastapi import params
+from fastapi.dependencies.models import Dependant, SecurityRequirement
+from fastapi.security.base import SecurityBase
+from fastapi.utils import get_path_param_names
from pydantic import BaseConfig, Schema, create_model
from pydantic.error_wrappers import ErrorWrapper
from pydantic.errors import MissingError
from starlette.concurrency import run_in_threadpool
from starlette.requests import Request
-from fastapi import params
-from fastapi.dependencies.models import Dependant, SecurityRequirement
-from fastapi.security.base import SecurityBase
-from fastapi.utils import get_path_param_names
-
param_supported_types = (str, int, float, bool)
from typing import Any, Dict, List, Optional, Sequence, Tuple, Type
-from pydantic.fields import Field
-from pydantic.schema import Schema, field_schema, get_model_name_map
-from pydantic.utils import lenient_issubclass
-from starlette.responses import JSONResponse
-from starlette.routing import BaseRoute
-from starlette.status import HTTP_422_UNPROCESSABLE_ENTITY
-
from fastapi import routing
from fastapi.dependencies.models import Dependant
from fastapi.dependencies.utils import get_flat_dependant
from fastapi.openapi.models import OpenAPI
from fastapi.params import Body, Param
from fastapi.utils import get_flat_models_from_routes, get_model_definitions
+from pydantic.fields import Field
+from pydantic.schema import Schema, field_schema, get_model_name_map
+from pydantic.utils import lenient_issubclass
+from starlette.responses import JSONResponse
+from starlette.routing import BaseRoute
+from starlette.status import HTTP_422_UNPROCESSABLE_ENTITY
validation_error_definition = {
"title": "ValidationError",
import logging
from typing import Any, Callable, List, Optional, Type
+from fastapi import params
+from fastapi.dependencies.models import Dependant
+from fastapi.dependencies.utils import get_body_field, get_dependant, solve_dependencies
+from fastapi.encoders import jsonable_encoder
from pydantic import BaseConfig, BaseModel, Schema
from pydantic.error_wrappers import ErrorWrapper, ValidationError
from pydantic.fields import Field
from starlette.routing import get_name, request_response
from starlette.status import HTTP_422_UNPROCESSABLE_ENTITY
-from fastapi import params
-from fastapi.dependencies.models import Dependant
-from fastapi.dependencies.utils import get_body_field, get_dependant, solve_dependencies
-from fastapi.encoders import jsonable_encoder
-
def serialize_response(*, field: Field = None, response: Response) -> Any:
if field:
-from starlette.requests import Request
-
from fastapi.openapi.models import APIKey, APIKeyIn
from fastapi.security.base import SecurityBase
+from starlette.requests import Request
class APIKeyBase(SecurityBase):
-from starlette.requests import Request
-
from fastapi.openapi.models import (
HTTPBase as HTTPBaseModel,
HTTPBearer as HTTPBearerModel,
)
from fastapi.security.base import SecurityBase
+from starlette.requests import Request
class HTTPBase(SecurityBase):
from typing import List, Optional
+from fastapi.openapi.models import OAuth2 as OAuth2Model, OAuthFlows as OAuthFlowsModel
+from fastapi.security.base import SecurityBase
from pydantic import BaseModel, Schema
from starlette.exceptions import HTTPException
from starlette.requests import Request
from starlette.status import HTTP_403_FORBIDDEN
-from fastapi.openapi.models import OAuth2 as OAuth2Model, OAuthFlows as OAuthFlowsModel
-from fastapi.security.base import SecurityBase
-
class OAuth2PasswordRequestData(BaseModel):
grant_type: str = "password"
-from starlette.requests import Request
-
from fastapi.openapi.models import OpenIdConnect as OpenIdConnectModel
from fastapi.security.base import SecurityBase
+from starlette.requests import Request
class OpenIdConnect(SecurityBase):
import re
from typing import Any, Dict, List, Sequence, Set, Type
+from fastapi import routing
+from fastapi.openapi.constants import REF_PREFIX
from pydantic import BaseModel
from pydantic.fields import Field
from pydantic.schema import get_flat_models_from_fields, model_process_schema
from starlette.routing import BaseRoute
-from fastapi import routing
-from fastapi.openapi.constants import REF_PREFIX
-
def get_flat_models_from_routes(
routes: Sequence[Type[BaseRoute]]
export VERSION_SCRIPT="import sys; print('%s.%s' % sys.version_info[0:2])"
export PYTHON_VERSION=`python -c "$VERSION_SCRIPT"`
-export PYTHONPATH=.:./docs/tutorial/src
+export PYTHONPATH=./docs/tutorial/src
# PYTHONPATH=. pytest --cov=fastapi --cov=tests --cov-fail-under=100 --cov-report=term-missing ${@} --cov-report=html
-pipenv run -- pytest --cov=fastapi --cov=tests --cov=docs/tutorial/src --cov-report=term-missing ${@} --cov-report=html
-pipenv run -- mypy fastapi --disallow-untyped-defs
+pytest --cov=fastapi --cov=tests --cov=docs/tutorial/src --cov-report=term-missing ${@} --cov-report=html
+mypy fastapi --disallow-untyped-defs
if [ "${PYTHON_VERSION}" = '3.7' ]; then
echo "Skipping 'black' on 3.7. See issue https://github.com/ambv/black/issues/494"
else
- pipenv run -- black fastapi tests --check
+ black fastapi tests --check
fi
-pipenv run -- isort --multi-line=3 --trailing-comma --force-grid-wrap=0 --combine-as --line-width 88 --recursive --check-only fastapi tests
+isort --multi-line=3 --trailing-comma --force-grid-wrap=0 --combine-as --line-width 88 --recursive --check-only fastapi tests
-from pydantic import BaseModel
-from starlette.responses import HTMLResponse, JSONResponse, PlainTextResponse
-from starlette.status import HTTP_202_ACCEPTED
-
from fastapi import (
Body,
Cookie,
OAuth2PasswordBearer,
OAuth2PasswordRequestForm,
)
+from pydantic import BaseModel
+from starlette.responses import HTMLResponse, JSONResponse, PlainTextResponse
+from starlette.status import HTTP_202_ACCEPTED
from .endpoints.a import router as router_a
from .endpoints.b import router as router_b