Added codestyle check and lint to the build action (#798)

* Applied `make format`

* Added format-check to makefile

* Added a "Check codestyle" step to the build action.

* Rerun `make format`

* Added a "lint" target to makefile

* Added lint step to the build action

* Added W503 to the list of ignored flake8 errors.

See https://www.flake8rules.com/rules/W503.html
This commit is contained in:
Matyáš Richter
2021-11-23 08:13:11 +01:00
committed by GitHub
parent 0f68923b8b
commit 48d1be87a4
12 changed files with 46 additions and 47 deletions

View File

@ -20,6 +20,10 @@ jobs:
run: |
python -m pip install --upgrade pip
pip install -r requirements.dev.txt
- name: Check codestyle
run: make format-check
- name: Lint
run: make lint
- name: Test with pytest
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

View File

@ -7,6 +7,18 @@ isort-docs:
format: isort-src isort-docs
black .
isort-src-check:
isort --check-only ./fastapi_users ./tests
isort-docs-check:
isort --check-only ./docs/src -o fastapi_users
format-check: isort-src-check isort-docs-check
black --check .
lint:
flake8 ./fastapi_users ./tests
test:
pytest --cov=fastapi_users/ --cov-report=term-missing --cov-fail-under=100

View File

@ -1,10 +1,9 @@
import contextlib
from fastapi_users.manager import UserAlreadyExists
from app.db import get_user_db
from app.models import UserCreate
from app.users import get_user_manager
from fastapi_users.manager import UserAlreadyExists
get_user_db_context = contextlib.asynccontextmanager(get_user_db)
get_user_manager_context = contextlib.asynccontextmanager(get_user_manager)

View File

@ -21,7 +21,10 @@ def get_register_router(
router = APIRouter()
@router.post(
"/register", response_model=user_model, status_code=status.HTTP_201_CREATED, name="register:register"
"/register",
response_model=user_model,
status_code=status.HTTP_201_CREATED,
name="register:register",
)
async def register(
request: Request,

View File

@ -19,7 +19,11 @@ def get_reset_password_router(
"""Generate a router with the reset password routes."""
router = APIRouter()
@router.post("/forgot-password", status_code=status.HTTP_202_ACCEPTED, name="reset:forgot_password")
@router.post(
"/forgot-password",
status_code=status.HTTP_202_ACCEPTED,
name="reset:forgot_password",
)
async def forgot_password(
request: Request,
email: EmailStr = Body(..., embed=True),

View File

@ -52,7 +52,7 @@ def get_users_router(
"/me",
response_model=user_model,
dependencies=[Depends(get_current_active_user)],
name="users:current_user"
name="users:current_user",
)
async def update_me(
request: Request,
@ -82,7 +82,7 @@ def get_users_router(
"/{id:uuid}",
response_model=user_model,
dependencies=[Depends(get_current_superuser)],
name="users:user"
name="users:user",
)
async def get_user(user=Depends(get_user_or_404)):
return user
@ -91,7 +91,7 @@ def get_users_router(
"/{id:uuid}",
response_model=user_model,
dependencies=[Depends(get_current_superuser)],
name="users:user"
name="users:user",
)
async def update_user(
user_update: user_update_model, # type: ignore
@ -122,7 +122,7 @@ def get_users_router(
status_code=status.HTTP_204_NO_CONTENT,
response_class=Response,
dependencies=[Depends(get_current_superuser)],
name="users:user"
name="users:user",
)
async def delete_user(
user=Depends(get_user_or_404),

View File

@ -21,7 +21,11 @@ def get_verify_router(
):
router = APIRouter()
@router.post("/request-verify-token", status_code=status.HTTP_202_ACCEPTED, name="verify:request-token")
@router.post(
"/request-verify-token",
status_code=status.HTTP_202_ACCEPTED,
name="verify:request-token",
)
async def request_verify_token(
request: Request,
email: EmailStr = Body(..., embed=True),

View File

@ -11,7 +11,7 @@ replace = __version__ = "{new_version}"
exclude = docs
max-line-length = 88
docstring-convention = numpy
ignore = D1
ignore = D1, W503
[isort]
profile = black

View File

@ -157,17 +157,11 @@ class TestLogin:
data = cast(Dict[str, Any], response.json())
assert data["detail"] == ErrorCode.LOGIN_BAD_CREDENTIALS
async def test_login_namespace(
self,
path,
app_factory
):
async def test_login_namespace(self, path, app_factory):
split_url = app_factory(True).url_path_for("auth:login").split("/")
assert split_url[len(split_url) - 1] in path
@pytest.mark.router
@pytest.mark.parametrize("path", ["/mock/logout", "/mock-bis/logout"])
@pytest.mark.asyncio
@ -210,10 +204,6 @@ class TestLogout:
)
assert response.status_code == status.HTTP_200_OK
async def test_logout_namespace(
self,
path,
app_factory
):
async def test_logout_namespace(self, path, app_factory):
split_url = app_factory(True).url_path_for("auth:logout").split("/")
assert split_url[len(split_url) - 1] in path

View File

@ -105,9 +105,7 @@ class TestRegister:
@pytest.mark.asyncio
async def test_register_namespace(
get_user_manager
):
async def test_register_namespace(get_user_manager):
app = FastAPI()
app.include_router(
get_register_router(

View File

@ -151,22 +151,14 @@ class TestResetPassword:
@pytest.mark.asyncio
async def test_forgot_password_namespace(
get_user_manager
):
async def test_forgot_password_namespace(get_user_manager):
app = FastAPI()
app.include_router(
get_reset_password_router(get_user_manager)
)
app.include_router(get_reset_password_router(get_user_manager))
assert app.url_path_for("reset:forgot_password") == "/forgot-password"
@pytest.mark.asyncio
async def test_reset_password_namespace(
get_user_manager
):
async def test_reset_password_namespace(get_user_manager):
app = FastAPI()
app.include_router(
get_reset_password_router(get_user_manager)
)
app.include_router(get_reset_password_router(get_user_manager))
assert app.url_path_for("reset:reset_password") == "/reset-password"

View File

@ -98,10 +98,7 @@ class TestMe:
assert data["id"] == str(verified_user.id)
assert data["email"] == verified_user.email
async def test_current_user_namespace(
self,
app_factory
):
async def test_current_user_namespace(self, app_factory):
assert app_factory(True).url_path_for("users:current_user") == "/me"
@ -486,11 +483,7 @@ class TestGetUser:
assert data["id"] == str(user.id)
assert "hashed_password" not in data
async def test_get_user_namespace(
self,
app_factory,
user: UserDB
):
async def test_get_user_namespace(self, app_factory, user: UserDB):
assert app_factory(True).url_path_for("users:user", id=user.id) == f"/{user.id}"