🎨 Lint and format tutorial src files

This commit is contained in:
Sebastián Ramírez 2018-12-13 21:48:37 +04:00
parent d9fbead646
commit b0d62b3410
60 changed files with 166 additions and 234 deletions

View File

@ -2,6 +2,7 @@ from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}

View File

@ -2,6 +2,7 @@ from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id):
return {"item_id": item_id}

View File

@ -2,6 +2,7 @@ from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}

View File

@ -1,8 +1,10 @@
from fastapi import FastAPI
from uuid import UUID
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: UUID):
return {"item_id": item_id}

View File

@ -2,11 +2,8 @@ from fastapi import FastAPI
app = FastAPI()
fake_items_db = [
{"item_name": "Foo"},
{"item_name": "Bar"},
{"item_name": "Baz"},
]
fake_items_db = [{"item_name": "Foo"}, {"item_name": "Bar"}, {"item_name": "Baz"}]
@app.get("/items/")
async def read_item(skip: int = 0, limit: int = 100):

View File

@ -1,8 +1,8 @@
from fastapi import FastAPI
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: str, q: str = None):
if q:

View File

@ -2,11 +2,14 @@ from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: str, q: str = None, short: bool = False):
item = {"item_id": item_id}
if q:
item.update({"q": q})
if not short:
item.update({"description": "This is an amazing item that has a long description"})
item.update(
{"description": "This is an amazing item that has a long description"}
)
return item

View File

@ -2,11 +2,16 @@ from fastapi import FastAPI
app = FastAPI()
@app.get("/users/{user_id}/items/{item_id}")
async def read_user_item(user_id: int, item_id: str, q: str = None, short: bool = False):
async def read_user_item(
user_id: int, item_id: str, q: str = None, short: bool = False
):
item = {"item_id": item_id, "owner_id": user_id}
if q:
item.update({"q": q})
if not short:
item.update({"description": "This is an amazing item that has a long description"})
item.update(
{"description": "This is an amazing item that has a long description"}
)
return item

View File

@ -2,11 +2,16 @@ from fastapi import FastAPI
app = FastAPI()
@app.get("/users/{user_id}/items/{item_id}")
async def read_user_item(user_id: int, item_id: str, needy: str, q: str = None, short: bool = False):
async def read_user_item(
user_id: int, item_id: str, needy: str, q: str = None, short: bool = False
):
item = {"item_id": item_id, "owner_id": user_id, "needy": needy}
if q:
item.update({"q": q})
if not short:
item.update({"description": "This is an amazing item that has a long description"})
item.update(
{"description": "This is an amazing item that has a long description"}
)
return item

View File

@ -1,6 +1,7 @@
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str = None
@ -10,6 +11,7 @@ class Item(BaseModel):
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
return item

View File

@ -1,6 +1,7 @@
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str = None
@ -10,6 +11,7 @@ class Item(BaseModel):
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
item_dict = item.dict()

View File

@ -1,6 +1,7 @@
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str = None
@ -10,6 +11,7 @@ class Item(BaseModel):
app = FastAPI()
@app.put("/items/{item_id}")
async def create_item(item_id: int, item: Item):
return {"item_id": item_id, **item.dict()}

View File

@ -1,6 +1,7 @@
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str = None
@ -10,6 +11,7 @@ class Item(BaseModel):
app = FastAPI()
@app.put("/items/{item_id}")
async def create_item(item_id: int, item: Item, q: str = None):
result = {"item_id": item_id, **item.dict()}

View File

@ -4,7 +4,9 @@ app = FastAPI()
@app.get("/items/")
async def read_items(q: str = Query(None, min_length=3, max_length=50, regex="^fixedquery$")):
async def read_items(
q: str = Query(None, min_length=3, max_length=50, regex="^fixedquery$")
):
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
if q:
results.update({"q": q})

View File

@ -1,4 +1,4 @@
from fastapi import FastAPI, Query, Path
from fastapi import FastAPI, Path, Query
app = FastAPI()

View File

@ -1,12 +1,11 @@
from fastapi import FastAPI, Query, Path
from fastapi import FastAPI, Path
app = FastAPI()
@app.get("/items/{item_id}")
async def read_items(
q: str,
item_id: int = Path(..., title="The ID of the item to get"),
q: str, item_id: int = Path(..., title="The ID of the item to get")
):
results = {"item_id": item_id}
if q:

View File

@ -1,13 +1,11 @@
from fastapi import FastAPI, Query, Path
from fastapi import FastAPI, Path
app = FastAPI()
@app.get("/items/{item_id}")
async def read_items(
*,
item_id: int = Path(..., title="The ID of the item to get"),
q: str,
*, item_id: int = Path(..., title="The ID of the item to get"), q: str
):
results = {"item_id": item_id}
if q:

View File

@ -1,13 +1,11 @@
from fastapi import FastAPI, Query, Path
from fastapi import FastAPI, Path
app = FastAPI()
@app.get("/items/{item_id}")
async def read_items(
*,
item_id: int = Path(..., title="The ID of the item to get", ge=1),
q: str,
*, item_id: int = Path(..., title="The ID of the item to get", ge=1), q: str
):
results = {"item_id": item_id}
if q:

View File

@ -1,4 +1,4 @@
from fastapi import FastAPI, Query, Path
from fastapi import FastAPI, Path
app = FastAPI()

View File

@ -1,4 +1,4 @@
from fastapi import FastAPI, Query, Path
from fastapi import FastAPI, Path, Query
app = FastAPI()

View File

@ -1,4 +1,4 @@
from fastapi import FastAPI, Query, Path
from fastapi import FastAPI, Path
from pydantic import BaseModel
app = FastAPI()

View File

@ -1,4 +1,4 @@
from fastapi import FastAPI, Query, Path
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
@ -17,11 +17,6 @@ class User(BaseModel):
@app.put("/items/{item_id}")
async def update_item(
*,
item_id: int,
item: Item,
user: User,
):
async def update_item(*, item_id: int, item: Item, user: User):
results = {"item_id": item_id, "item": item, "user": user}
return results

View File

@ -1,4 +1,4 @@
from fastapi import FastAPI, Query, Path, Body
from fastapi import Body, FastAPI
from pydantic import BaseModel
app = FastAPI()
@ -18,11 +18,12 @@ class User(BaseModel):
@app.put("/items/{item_id}")
async def update_item(
*,
item_id: int,
item: Item,
user: User,
access_token: str = Body(...),
*, item_id: int, item: Item, user: User, access_token: str = Body(...)
):
results = {"item_id": item_id, "item": item, "user": user, "access_token": access_token}
results = {
"item_id": item_id,
"item": item,
"user": user,
"access_token": access_token,
}
return results

View File

@ -1,4 +1,4 @@
from fastapi import FastAPI, Query, Path, Body
from fastapi import Body, FastAPI
from pydantic import BaseModel
app = FastAPI()
@ -25,7 +25,12 @@ async def update_item(
access_token: str = Body(...),
q: str = None,
):
results = {"item_id": item_id, "item": item, "user": user, "access_token": access_token}
results = {
"item_id": item_id,
"item": item,
"user": user,
"access_token": access_token,
}
if q:
results.update({"q": q})
return results

View File

@ -1,4 +1,4 @@
from fastapi import FastAPI, Query, Path, Body
from fastapi import Body, FastAPI
from pydantic import BaseModel
app = FastAPI()
@ -12,10 +12,6 @@ class Item(BaseModel):
@app.put("/items/{item_id}")
async def update_item(
*,
item_id: int,
item: Item = Body(..., embed=True),
):
async def update_item(*, item_id: int, item: Item = Body(..., embed=True)):
results = {"item_id": item_id, "item": item}
return results

View File

@ -1,4 +1,4 @@
from fastapi import FastAPI, Query, Path, Body
from fastapi import Body, FastAPI
from pydantic import BaseModel, Schema
app = FastAPI()
@ -12,10 +12,6 @@ class Item(BaseModel):
@app.put("/items/{item_id}")
async def update_item(
*,
item_id: int,
item: Item = Body(..., embed=True),
):
async def update_item(*, item_id: int, item: Item = Body(..., embed=True)):
results = {"item_id": item_id, "item": item}
return results

View File

@ -1,4 +1,4 @@
from fastapi import FastAPI, Query, Path, Body
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
@ -13,10 +13,6 @@ class Item(BaseModel):
@app.put("/items/{item_id}")
async def update_item(
*,
item_id: int,
item: Item,
):
async def update_item(*, item_id: int, item: Item):
results = {"item_id": item_id, "item": item}
return results

View File

@ -1,7 +1,8 @@
from fastapi import Body, FastAPI, Path, Query
from pydantic import BaseModel
from typing import List
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
@ -14,10 +15,6 @@ class Item(BaseModel):
@app.put("/items/{item_id}")
async def update_item(
*,
item_id: int,
item: Item,
):
async def update_item(*, item_id: int, item: Item):
results = {"item_id": item_id, "item": item}
return results

View File

@ -1,7 +1,8 @@
from fastapi import Body, FastAPI, Path, Query
from pydantic import BaseModel
from typing import Set
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
@ -14,10 +15,6 @@ class Item(BaseModel):
@app.put("/items/{item_id}")
async def update_item(
*,
item_id: int,
item: Item,
):
async def update_item(*, item_id: int, item: Item):
results = {"item_id": item_id, "item": item}
return results

View File

@ -1,7 +1,8 @@
from fastapi import Body, FastAPI, Path, Query
from pydantic import BaseModel
from typing import Set
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
@ -20,10 +21,6 @@ class Item(BaseModel):
@app.put("/items/{item_id}")
async def update_item(
*,
item_id: int,
item: Item,
):
async def update_item(*, item_id: int, item: Item):
results = {"item_id": item_id, "item": item}
return results

View File

@ -1,7 +1,8 @@
from fastapi import Body, FastAPI, Path, Query
from typing import Set
from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import UrlStr
from typing import Set
app = FastAPI()
@ -21,10 +22,6 @@ class Item(BaseModel):
@app.put("/items/{item_id}")
async def update_item(
*,
item_id: int,
item: Item,
):
async def update_item(*, item_id: int, item: Item):
results = {"item_id": item_id, "item": item}
return results

View File

@ -1,7 +1,8 @@
from fastapi import Body, FastAPI, Path, Query
from typing import List, Set
from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import UrlStr
from typing import Set, List
app = FastAPI()
@ -21,10 +22,6 @@ class Item(BaseModel):
@app.put("/items/{item_id}")
async def update_item(
*,
item_id: int,
item: Item,
):
async def update_item(*, item_id: int, item: Item):
results = {"item_id": item_id, "item": item}
return results

View File

@ -1,7 +1,8 @@
from fastapi import Body, FastAPI, Path, Query
from typing import List, Set
from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import UrlStr
from typing import Set, List
app = FastAPI()

View File

@ -1,7 +1,8 @@
from fastapi import Body, FastAPI, Path, Query
from typing import List
from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import UrlStr
from typing import Set, List
app = FastAPI()

View File

@ -1,7 +1,4 @@
from fastapi import FastAPI, Cookie
from pydantic import BaseModel
from pydantic.types import UrlStr
from typing import Set, List
from fastapi import Cookie, FastAPI
app = FastAPI()

View File

@ -1,7 +1,4 @@
from fastapi import FastAPI, Header
from pydantic import BaseModel
from pydantic.types import UrlStr
from typing import Set, List
app = FastAPI()

View File

@ -1,7 +1,4 @@
from fastapi import FastAPI, Header
from pydantic import BaseModel
from pydantic.types import UrlStr
from typing import Set, List
app = FastAPI()

View File

@ -1,7 +1,7 @@
from fastapi import Body, FastAPI, Path, Query
from typing import Set
from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import UrlStr
from typing import Set, List
app = FastAPI()

View File

@ -1,7 +1,6 @@
from fastapi import Body, FastAPI, Path, Query
from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import EmailStr
from typing import Set, List
app = FastAPI()
@ -11,7 +10,6 @@ class UserIn(BaseModel):
password: str
email: EmailStr
full_name: str = None
# Don't do this in production!

View File

@ -1,7 +1,6 @@
from fastapi import Body, FastAPI, Path, Query
from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import EmailStr
from typing import Set, List
app = FastAPI()

View File

@ -1,8 +1,6 @@
from fastapi import Body, FastAPI, Path, Query
from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import EmailStr
from typing import Set, List
from uuid import UUID, uuid4
app = FastAPI()
@ -37,6 +35,7 @@ def fake_save_user(user_in: UserIn):
print("User saved! ..not really")
return user_in_db
@app.post("/user/", response_model=UserOut)
async def create_user(*, user_in: UserIn):
user_saved = fake_save_user(user_in)

View File

@ -1,15 +1,16 @@
from fastapi import Body, FastAPI, Path, Query
from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import EmailStr
from typing import Set, List
app = FastAPI()
class UserBase(BaseModel):
username: str
email: EmailStr
full_name: str = None
class UserIn(UserBase):
password: str
@ -17,9 +18,10 @@ class UserIn(UserBase):
class UserOut(UserBase):
pass
class UserInDB(UserBase):
hashed_password: str
def fake_password_hasher(raw_password: str):
return "supersecret" + raw_password
@ -31,6 +33,7 @@ def fake_save_user(user_in: UserIn):
print("User saved! ..not really")
return user_in_db
@app.post("/user/", response_model=UserOut)
async def create_user(*, user_in: UserIn):
user_saved = fake_save_user(user_in)

View File

@ -1,7 +1,4 @@
from fastapi import Body, FastAPI, Path, Query, Form
from pydantic import BaseModel
from pydantic.types import EmailStr
from typing import Set, List
from fastapi import FastAPI, Form
app = FastAPI()

View File

@ -1,7 +1,4 @@
from fastapi import Body, FastAPI, Path, Query, File
from pydantic import BaseModel
from pydantic.types import EmailStr
from typing import Set, List
from fastapi import FastAPI, File
app = FastAPI()

View File

@ -1,7 +1,4 @@
from fastapi import Body, FastAPI, Path, Query, File, Form
from pydantic import BaseModel
from pydantic.types import EmailStr
from typing import Set, List
from fastapi import FastAPI, File, Form
app = FastAPI()

View File

@ -1,8 +1,8 @@
from fastapi import Body, FastAPI, Path, Query
from starlette.status import HTTP_201_CREATED
from typing import Set
from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import UrlStr
from typing import Set, List
from starlette.status import HTTP_201_CREATED
app = FastAPI()

View File

@ -1,8 +1,7 @@
from fastapi import Body, FastAPI, Path, Query
from starlette.status import HTTP_201_CREATED
from typing import Set
from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import UrlStr
from typing import Set, List
app = FastAPI()

View File

@ -1,8 +1,7 @@
from fastapi import Body, FastAPI, Path, Query
from starlette.status import HTTP_201_CREATED
from typing import Set
from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import UrlStr
from typing import Set, List
app = FastAPI()

View File

@ -1,8 +1,7 @@
from fastapi import Body, FastAPI, Path, Query
from starlette.status import HTTP_201_CREATED
from typing import Set
from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import UrlStr
from typing import Set, List
app = FastAPI()

View File

@ -1,8 +1,7 @@
from fastapi import Body, FastAPI, Path, Query
from starlette.status import HTTP_201_CREATED
from typing import Set
from fastapi import FastAPI
from pydantic import BaseModel
from pydantic.types import UrlStr
from typing import Set, List
app = FastAPI()
@ -15,7 +14,12 @@ class Item(BaseModel):
tags: Set[str] = []
@app.post("/items/", response_model=Item, summary="Create an item", response_description="The created item")
@app.post(
"/items/",
response_model=Item,
summary="Create an item",
response_description="The created item",
)
async def create_item(*, item: Item):
"""
Create an item with all the information:

View File

@ -1,9 +1,4 @@
from typing import List, Set
from fastapi import Body, FastAPI, Path, Query
from pydantic import BaseModel
from pydantic.types import UrlStr
from starlette.status import HTTP_201_CREATED
from fastapi import FastAPI
app = FastAPI()

View File

@ -1,9 +1,4 @@
from typing import List, Set
from fastapi import Body, FastAPI, Path, Query
from pydantic import BaseModel
from pydantic.types import UrlStr
from starlette.status import HTTP_201_CREATED
from fastapi import FastAPI
app = FastAPI()

View File

@ -1,9 +1,4 @@
from typing import List, Set
from fastapi import Body, FastAPI, Path, Query
from pydantic import BaseModel
from pydantic.types import UrlStr
from starlette.status import HTTP_201_CREATED
from fastapi import FastAPI
app = FastAPI()

View File

@ -1,9 +1,4 @@
from typing import List, Set
from fastapi import Body, FastAPI, Path, Query
from pydantic import BaseModel
from pydantic.types import UrlStr
from starlette.status import HTTP_201_CREATED
from fastapi import FastAPI
from starlette.responses import UJSONResponse
app = FastAPI()

View File

@ -1,9 +1,4 @@
from typing import List, Set
from fastapi import Body, FastAPI, Path, Query
from pydantic import BaseModel
from pydantic.types import UrlStr
from starlette.status import HTTP_201_CREATED
from fastapi import FastAPI
from starlette.responses import HTMLResponse
app = FastAPI()

View File

@ -1,10 +1,5 @@
from typing import List, Set
from fastapi import Body, FastAPI, Path, Query, Depends
from fastapi import Depends, FastAPI
from pydantic import BaseModel
from pydantic.types import UrlStr
from starlette.status import HTTP_201_CREATED
from starlette.responses import HTMLResponse
app = FastAPI()
@ -27,6 +22,6 @@ async def read_items(commons: CommonQueryParams = Depends(common_parameters)):
response = {}
if commons.q:
response.update({"q": commons.q})
items = fake_items_db[commons.skip:commons.limit]
items = fake_items_db[commons.skip : commons.limit]
response.update({"items": items})
return response

View File

@ -1,10 +1,7 @@
from typing import List, Set
from typing import List
from fastapi import Body, FastAPI, Path, Query, Depends, Cookie
from fastapi import Cookie, Depends, FastAPI
from pydantic import BaseModel
from pydantic.types import UrlStr
from starlette.status import HTTP_201_CREATED
from starlette.responses import HTMLResponse
app = FastAPI()
@ -30,6 +27,8 @@ async def get_tracked_interests(track_code: str = Cookie(None)):
@app.get("/interests/")
async def read_interests(tracked_interests: InterestsTracker = Depends(get_tracked_interests)):
async def read_interests(
tracked_interests: InterestsTracker = Depends(get_tracked_interests)
):
response = {"interests": tracked_interests.interests}
return response

View File

@ -1,11 +1,8 @@
from typing import List, Set
from fastapi import Body, FastAPI, Path, Query, Depends, Cookie
from pydantic import BaseModel
from pydantic.types import UrlStr
from starlette.status import HTTP_201_CREATED
from starlette.responses import HTMLResponse
from random import choice
from typing import List
from fastapi import Cookie, Depends, FastAPI
from pydantic import BaseModel
app = FastAPI()
@ -21,6 +18,7 @@ fake_tracked_users_db = {
"Baz": {"track_code": "Baz", "interests": ["gaming", "virtual reality"]},
}
async def get_tracked_interests(track_code: str = Cookie(None)):
if track_code in fake_tracked_users_db:
track_dict = fake_tracked_users_db[track_code]
@ -28,10 +26,11 @@ async def get_tracked_interests(track_code: str = Cookie(None)):
return track
return None
class ComplexTracker:
def __init__(self, tracker: InterestsTracker = Depends(get_tracked_interests)):
self.tracker = tracker
def random_interest(self):
"""
Get a random interest from the tracked ones for the current user.
@ -39,7 +38,9 @@ class ComplexTracker:
"""
if self.tracker.interests:
return choice(self.tracker.interests)
return choice(["sports", "movies", "food", "shows", "gaming", "virtual reality"])
return choice(
["sports", "movies", "food", "shows", "gaming", "virtual reality"]
)
@app.get("/suggested-category")

View File

@ -1,17 +1,8 @@
from typing import List, Set
from fastapi import FastAPI
from fastapi import Body, FastAPI, Path, Query, Depends, Cookie
from pydantic import BaseModel
from pydantic.types import UrlStr
from starlette.status import HTTP_201_CREATED
from starlette.responses import HTMLResponse
from random import choice
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy import Column, Integer, DateTime, String, Boolean, ForeignKey
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
# SQLAlchemy specific code, as with any other app
@ -22,6 +13,7 @@ SQLALCHEMY_DATABASE_URI = "postgresql://user:password@postgresserver/db"
# automatic __tablename__ attributes. So you don't have to declare them.
# So, your models will behave very similarly to, for example, Flask-SQLAlchemy
class CustomBase:
# Generate __tablename__ automatically
@declared_attr
@ -49,6 +41,7 @@ db_session = scoped_session(
def get_user(username, db_session):
return db_session.query(User).filter(User.id == username).first()
# FastAPI specific code
app = FastAPI()

View File

@ -1,21 +1,12 @@
from typing import List, Set
from fastapi import Body, FastAPI, Path, Query, Depends, Cookie
from pydantic import BaseModel
from pydantic.types import UrlStr
from starlette.status import HTTP_201_CREATED
from starlette.responses import HTMLResponse
from random import choice
from typing import List, Optional, Union
from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel
from app.models.config import USERPROFILE_DOC_TYPE
from app.models.role import RoleEnum
from couchbase import LOCKMODE_WAIT
from couchbase.bucket import Bucket
from couchbase.cluster import Cluster, PasswordAuthenticator
from couchbase import LOCKMODE_WAIT
def get_bucket():