Checked with MyPy, Pylint; updated Pylint config

This commit is contained in:
DarkCat09 2023-02-27 19:48:34 +04:00
parent 2a2175e31a
commit a91613cbd3
7 changed files with 133 additions and 123 deletions

View file

@ -1,4 +1,3 @@
import os
import secrets import secrets
from pathlib import Path from pathlib import Path

View file

@ -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
View file

View 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

View file

@ -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
View file

@ -0,0 +1,4 @@
[mypy]
show_error_codes = True
ignore_missing_imports = True
warn_redundant_casts = True

224
pylintrc
View file

@ -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