Checked with MyPy, Pylint; updated Pylint config
This commit is contained in:
parent
2a2175e31a
commit
a91613cbd3
7 changed files with 133 additions and 123 deletions
|
@ -1,4 +1,3 @@
|
||||||
import os
|
|
||||||
import secrets
|
import secrets
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
|
@ -16,12 +16,12 @@ from .common import templates
|
||||||
def with_redirect(
|
def with_redirect(
|
||||||
url: str = '/',
|
url: str = '/',
|
||||||
code: int = 302,
|
code: int = 302,
|
||||||
*args, **kwargs) -> RedirectResponse:
|
**kwargs) -> RedirectResponse:
|
||||||
"""Return a redirect to the page specified in `url`.
|
"""Return a redirect to the page specified in `url`.
|
||||||
By default, code is 302 so method is changed to GET.
|
By default, code is 302 so method is changed to GET.
|
||||||
To leave the same HTTP method, use 307 status code
|
To leave the same HTTP method, use 307 status code
|
||||||
or call `with_redirect_307` function.
|
or call `with_redirect_307` function.
|
||||||
`args` and `kwargs` are passed directly
|
`kwargs` are passed directly
|
||||||
to the Response contructor
|
to the Response contructor
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
@ -35,16 +35,16 @@ def with_redirect(
|
||||||
return RedirectResponse(
|
return RedirectResponse(
|
||||||
url=url,
|
url=url,
|
||||||
status_code=code,
|
status_code=code,
|
||||||
*args, **kwargs,
|
**kwargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def with_text(
|
def with_text(
|
||||||
content: str,
|
content: str,
|
||||||
code: int = 200,
|
code: int = 200,
|
||||||
*args, **kwargs) -> PlainTextResponse:
|
**kwargs) -> PlainTextResponse:
|
||||||
"""Return a plain text to the user.
|
"""Return a plain text to the user.
|
||||||
`args` and `kwargs` are passed directly
|
`kwargs` are passed directly
|
||||||
to the Response contructor
|
to the Response contructor
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
@ -58,7 +58,7 @@ def with_text(
|
||||||
return PlainTextResponse(
|
return PlainTextResponse(
|
||||||
content=content,
|
content=content,
|
||||||
status_code=code,
|
status_code=code,
|
||||||
*args, **kwargs,
|
**kwargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -117,10 +117,10 @@ def with_file(
|
||||||
path: os.PathLike,
|
path: os.PathLike,
|
||||||
mime: Optional[str] = None,
|
mime: Optional[str] = None,
|
||||||
code: int = 200,
|
code: int = 200,
|
||||||
*args, **kwargs) -> FileResponse:
|
**kwargs) -> FileResponse:
|
||||||
"""Send the file specified in `path`
|
"""Send the file specified in `path`
|
||||||
automatically guessing its mimetype if `mime` is None.
|
automatically guessing its mimetype if `mime` is None.
|
||||||
`args` and `kwargs` are passed directly
|
`kwargs` are passed directly
|
||||||
to the Response contructor
|
to the Response contructor
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
@ -139,7 +139,7 @@ def with_file(
|
||||||
mimetypes.guess_type(path)[0]
|
mimetypes.guess_type(path)[0]
|
||||||
),
|
),
|
||||||
status_code=code,
|
status_code=code,
|
||||||
*args, **kwargs,
|
**kwargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
0
app/sql/__init__.py
Normal file
0
app/sql/__init__.py
Normal file
|
@ -3,11 +3,12 @@ from typing import AsyncGenerator
|
||||||
from pydantic import BaseSettings
|
from pydantic import BaseSettings
|
||||||
|
|
||||||
from sqlalchemy import create_engine
|
from sqlalchemy import create_engine
|
||||||
from sqlalchemy_utils import database_exists
|
|
||||||
from sqlalchemy_utils import create_database
|
|
||||||
from sqlalchemy.orm import Session, sessionmaker
|
from sqlalchemy.orm import Session, sessionmaker
|
||||||
from sqlalchemy.ext.declarative import declarative_base
|
from sqlalchemy.ext.declarative import declarative_base
|
||||||
|
|
||||||
|
from sqlalchemy_utils import database_exists
|
||||||
|
from sqlalchemy_utils import create_database
|
||||||
|
|
||||||
|
|
||||||
# Database configuration
|
# Database configuration
|
||||||
class SqlSettings(BaseSettings):
|
class SqlSettings(BaseSettings):
|
||||||
|
@ -21,10 +22,12 @@ class SqlSettings(BaseSettings):
|
||||||
sql_settings = SqlSettings()
|
sql_settings = SqlSettings()
|
||||||
|
|
||||||
# DB connection URL
|
# DB connection URL
|
||||||
|
# pylint: disable=consider-using-f-string
|
||||||
db_url = (
|
db_url = (
|
||||||
'mysql://{db_user}:{db_password}@'
|
'mysql://{db_user}:{db_password}@'
|
||||||
'{db_host}:{db_port}/{db_database}'
|
'{db_host}:{db_port}/{db_database}'
|
||||||
).format(**sql_settings.dict())
|
).format(**sql_settings.dict())
|
||||||
|
# pylint: enable=consider-using-f-string
|
||||||
|
|
||||||
|
|
||||||
# SQLAlchemy engine object
|
# SQLAlchemy engine object
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel # pylint: disable=no-name-in-module
|
||||||
|
|
||||||
|
|
||||||
# Pydantic class for
|
# Pydantic class for
|
||||||
|
|
4
mypy.ini
Normal file
4
mypy.ini
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
[mypy]
|
||||||
|
show_error_codes = True
|
||||||
|
ignore_missing_imports = True
|
||||||
|
warn_redundant_casts = True
|
224
pylintrc
224
pylintrc
|
@ -1,5 +1,6 @@
|
||||||
[MAIN]
|
[MAIN]
|
||||||
analyse-fallback-blocks=no
|
analyse-fallback-blocks=no
|
||||||
|
clear-cache-post-run=no
|
||||||
extension-pkg-allow-list=
|
extension-pkg-allow-list=
|
||||||
extension-pkg-whitelist=
|
extension-pkg-whitelist=
|
||||||
fail-on=
|
fail-on=
|
||||||
|
@ -17,113 +18,6 @@ recursive=no
|
||||||
suggestion-mode=yes
|
suggestion-mode=yes
|
||||||
unsafe-load-any-extension=no
|
unsafe-load-any-extension=no
|
||||||
|
|
||||||
[REPORTS]
|
|
||||||
evaluation=max(0, 0 if fatal else 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10))
|
|
||||||
msg-template=
|
|
||||||
reports=no
|
|
||||||
score=yes
|
|
||||||
|
|
||||||
[MESSAGES CONTROL]
|
|
||||||
confidence=HIGH,
|
|
||||||
CONTROL_FLOW,
|
|
||||||
INFERENCE,
|
|
||||||
INFERENCE_FAILURE,
|
|
||||||
UNDEFINED
|
|
||||||
disable=raw-checker-failed,
|
|
||||||
bad-inline-option,
|
|
||||||
locally-disabled,
|
|
||||||
file-ignored,
|
|
||||||
suppressed-message,
|
|
||||||
useless-suppression,
|
|
||||||
deprecated-pragma,
|
|
||||||
use-symbolic-message-instead
|
|
||||||
enable=c-extension-no-member
|
|
||||||
|
|
||||||
[SIMILARITIES]
|
|
||||||
ignore-comments=yes
|
|
||||||
ignore-docstrings=yes
|
|
||||||
ignore-imports=yes
|
|
||||||
ignore-signatures=yes
|
|
||||||
min-similarity-lines=4
|
|
||||||
|
|
||||||
[MISCELLANEOUS]
|
|
||||||
notes=FIXME,
|
|
||||||
XXX,
|
|
||||||
TODO
|
|
||||||
notes-rgx=
|
|
||||||
|
|
||||||
[DESIGN]
|
|
||||||
exclude-too-few-public-methods=
|
|
||||||
ignored-parents=
|
|
||||||
max-args=5
|
|
||||||
max-attributes=7
|
|
||||||
max-bool-expr=5
|
|
||||||
max-branches=12
|
|
||||||
max-locals=15
|
|
||||||
max-parents=7
|
|
||||||
max-public-methods=20
|
|
||||||
max-returns=6
|
|
||||||
max-statements=50
|
|
||||||
min-public-methods=1
|
|
||||||
|
|
||||||
[STRING]
|
|
||||||
check-quote-consistency=no
|
|
||||||
check-str-concat-over-line-jumps=no
|
|
||||||
|
|
||||||
[CLASSES]
|
|
||||||
check-protected-access-in-special-methods=no
|
|
||||||
defining-attr-methods=__init__,
|
|
||||||
__new__,
|
|
||||||
setUp,
|
|
||||||
__post_init__
|
|
||||||
exclude-protected=_asdict,
|
|
||||||
_fields,
|
|
||||||
_replace,
|
|
||||||
_source,
|
|
||||||
_make
|
|
||||||
valid-classmethod-first-arg=cls
|
|
||||||
valid-metaclass-classmethod-first-arg=cls
|
|
||||||
|
|
||||||
[FORMAT]
|
|
||||||
expected-line-ending-format=
|
|
||||||
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
|
|
||||||
indent-after-paren=4
|
|
||||||
indent-string=' '
|
|
||||||
max-line-length=100
|
|
||||||
max-module-lines=1000
|
|
||||||
single-line-class-stmt=no
|
|
||||||
single-line-if-stmt=no
|
|
||||||
|
|
||||||
[IMPORTS]
|
|
||||||
allow-any-import-level=
|
|
||||||
allow-wildcard-with-all=no
|
|
||||||
deprecated-modules=
|
|
||||||
ext-import-graph=
|
|
||||||
import-graph=
|
|
||||||
int-import-graph=
|
|
||||||
known-standard-library=
|
|
||||||
known-third-party=enchant
|
|
||||||
preferred-modules=
|
|
||||||
|
|
||||||
[VARIABLES]
|
|
||||||
additional-builtins=
|
|
||||||
allow-global-unused-variables=yes
|
|
||||||
allowed-redefined-builtins=
|
|
||||||
callbacks=cb_,
|
|
||||||
_cb
|
|
||||||
dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_
|
|
||||||
ignored-argument-names=_.*|^ignored_|^unused_
|
|
||||||
init-import=no
|
|
||||||
redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io
|
|
||||||
|
|
||||||
[LOGGING]
|
|
||||||
logging-format-style=old
|
|
||||||
logging-modules=logging
|
|
||||||
|
|
||||||
[EXCEPTIONS]
|
|
||||||
overgeneral-exceptions=BaseException,
|
|
||||||
Exception
|
|
||||||
|
|
||||||
[BASIC]
|
[BASIC]
|
||||||
argument-naming-style=snake_case
|
argument-naming-style=snake_case
|
||||||
attr-naming-style=snake_case
|
attr-naming-style=snake_case
|
||||||
|
@ -158,6 +52,105 @@ no-docstring-rgx=^_
|
||||||
property-classes=abc.abstractproperty
|
property-classes=abc.abstractproperty
|
||||||
variable-naming-style=snake_case
|
variable-naming-style=snake_case
|
||||||
|
|
||||||
|
[CLASSES]
|
||||||
|
check-protected-access-in-special-methods=no
|
||||||
|
defining-attr-methods=__init__,
|
||||||
|
__new__,
|
||||||
|
setUp,
|
||||||
|
__post_init__
|
||||||
|
exclude-protected=_asdict,
|
||||||
|
_fields,
|
||||||
|
_replace,
|
||||||
|
_source,
|
||||||
|
_make
|
||||||
|
valid-classmethod-first-arg=cls
|
||||||
|
valid-metaclass-classmethod-first-arg=mcs
|
||||||
|
|
||||||
|
[DESIGN]
|
||||||
|
exclude-too-few-public-methods=
|
||||||
|
ignored-parents=
|
||||||
|
max-args=5
|
||||||
|
max-attributes=7
|
||||||
|
max-bool-expr=5
|
||||||
|
max-branches=12
|
||||||
|
max-locals=15
|
||||||
|
max-parents=7
|
||||||
|
max-public-methods=20
|
||||||
|
max-returns=6
|
||||||
|
max-statements=50
|
||||||
|
min-public-methods=0
|
||||||
|
|
||||||
|
[EXCEPTIONS]
|
||||||
|
overgeneral-exceptions=builtins.BaseException,builtins.Exception
|
||||||
|
|
||||||
|
[FORMAT]
|
||||||
|
expected-line-ending-format=
|
||||||
|
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
|
||||||
|
indent-after-paren=4
|
||||||
|
indent-string=' '
|
||||||
|
max-line-length=100
|
||||||
|
max-module-lines=1000
|
||||||
|
single-line-class-stmt=no
|
||||||
|
single-line-if-stmt=no
|
||||||
|
|
||||||
|
[IMPORTS]
|
||||||
|
allow-any-import-level=
|
||||||
|
allow-reexport-from-package=no
|
||||||
|
allow-wildcard-with-all=no
|
||||||
|
deprecated-modules=
|
||||||
|
ext-import-graph=
|
||||||
|
import-graph=
|
||||||
|
int-import-graph=
|
||||||
|
known-standard-library=
|
||||||
|
known-third-party=enchant
|
||||||
|
preferred-modules=
|
||||||
|
|
||||||
|
[LOGGING]
|
||||||
|
logging-format-style=old
|
||||||
|
logging-modules=logging
|
||||||
|
|
||||||
|
[MESSAGES CONTROL]
|
||||||
|
confidence=HIGH,
|
||||||
|
CONTROL_FLOW,
|
||||||
|
INFERENCE,
|
||||||
|
INFERENCE_FAILURE,
|
||||||
|
UNDEFINED
|
||||||
|
disable=raw-checker-failed,
|
||||||
|
bad-inline-option,
|
||||||
|
locally-disabled,
|
||||||
|
file-ignored,
|
||||||
|
suppressed-message,
|
||||||
|
useless-suppression,
|
||||||
|
deprecated-pragma,
|
||||||
|
use-symbolic-message-instead
|
||||||
|
enable=c-extension-no-member
|
||||||
|
|
||||||
|
[METHOD_ARGS]
|
||||||
|
timeout-methods=requests.api.delete,requests.api.get,requests.api.head,requests.api.options,requests.api.patch,requests.api.post,requests.api.put,requests.api.request
|
||||||
|
|
||||||
|
[MISCELLANEOUS]
|
||||||
|
notes=FIXME,
|
||||||
|
XXX,
|
||||||
|
TODO
|
||||||
|
notes-rgx=
|
||||||
|
|
||||||
|
[REFACTORING]
|
||||||
|
max-nested-blocks=5
|
||||||
|
never-returning-functions=sys.exit,argparse.parse_error
|
||||||
|
|
||||||
|
[REPORTS]
|
||||||
|
evaluation=max(0, 0 if fatal else 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10))
|
||||||
|
msg-template=
|
||||||
|
reports=no
|
||||||
|
score=yes
|
||||||
|
|
||||||
|
[SIMILARITIES]
|
||||||
|
ignore-comments=yes
|
||||||
|
ignore-docstrings=yes
|
||||||
|
ignore-imports=yes
|
||||||
|
ignore-signatures=yes
|
||||||
|
min-similarity-lines=4
|
||||||
|
|
||||||
[SPELLING]
|
[SPELLING]
|
||||||
max-spelling-suggestions=4
|
max-spelling-suggestions=4
|
||||||
spelling-dict=
|
spelling-dict=
|
||||||
|
@ -166,6 +159,10 @@ spelling-ignore-words=
|
||||||
spelling-private-dict-file=
|
spelling-private-dict-file=
|
||||||
spelling-store-unknown-words=no
|
spelling-store-unknown-words=no
|
||||||
|
|
||||||
|
[STRING]
|
||||||
|
check-quote-consistency=no
|
||||||
|
check-str-concat-over-line-jumps=no
|
||||||
|
|
||||||
[TYPECHECK]
|
[TYPECHECK]
|
||||||
contextmanager-decorators=contextlib.contextmanager
|
contextmanager-decorators=contextlib.contextmanager
|
||||||
generated-members=
|
generated-members=
|
||||||
|
@ -182,6 +179,13 @@ missing-member-max-choices=1
|
||||||
mixin-class-rgx=.*[Mm]ixin
|
mixin-class-rgx=.*[Mm]ixin
|
||||||
signature-mutators=
|
signature-mutators=
|
||||||
|
|
||||||
[REFACTORING]
|
[VARIABLES]
|
||||||
max-nested-blocks=5
|
additional-builtins=
|
||||||
never-returning-functions=sys.exit,argparse.parse_error
|
allow-global-unused-variables=yes
|
||||||
|
allowed-redefined-builtins=
|
||||||
|
callbacks=cb_,
|
||||||
|
_cb
|
||||||
|
dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_
|
||||||
|
ignored-argument-names=_.*|^ignored_|^unused_
|
||||||
|
init-import=no
|
||||||
|
redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io
|
||||||
|
|
Loading…
Reference in a new issue