Replaced importing the "typing" module as "t" with importing the individual names in the "typing" module. Since Python 3.9 introduced type hinting generics in standard collections, we do not have as many names to import now. This is also to be consistent with the practices of most major and standard packages and examples.

This commit is contained in:
2023-04-26 18:22:45 +08:00
parent ee5b447c23
commit cda9e4e3c6
25 changed files with 116 additions and 113 deletions

View File

@ -20,10 +20,10 @@ warnings from the IDE.
This module should not import any other module from the application.
"""
import typing as t
from typing import Any
def s(message: t.Any) -> str:
def s(message: Any) -> str:
"""Casts the LazyString message to the string type.
:param message: The message.

View File

@ -17,12 +17,13 @@
"""The current assets and liabilities account.
"""
import typing as t
from typing import Self
import sqlalchemy as sa
from accounting import db
from accounting.locale import gettext
from accounting.models import Account
import sqlalchemy as sa
class CurrentAccount:
@ -54,7 +55,7 @@ class CurrentAccount:
return self.str
@classmethod
def current_assets_and_liabilities(cls) -> t.Self:
def current_assets_and_liabilities(cls) -> Self:
"""Returns the pseudo account for all current assets and liabilities.
:return: The pseudo account for all current assets and liabilities.
@ -67,7 +68,7 @@ class CurrentAccount:
return account
@classmethod
def accounts(cls) -> list[t.Self]:
def accounts(cls) -> list[Self]:
"""Returns the current assets and liabilities accounts.
:return: The current assets and liabilities accounts.

View File

@ -19,7 +19,7 @@
This module should not import any other module from the application.
"""
import typing as t
from typing import Any
from flask import flash
from flask_wtf import FlaskForm
@ -34,7 +34,7 @@ def flash_form_errors(form: FlaskForm) -> None:
__flash_errors(form.errors)
def __flash_errors(error: t.Any) -> None:
def __flash_errors(error: Any) -> None:
"""Flash all errors recursively.
:param error: The errors.

View File

@ -17,7 +17,7 @@
"""The SQLAlchemy alias for the offset items.
"""
import typing as t
from typing import Any
import sqlalchemy as sa
@ -30,10 +30,10 @@ def offset_alias() -> sa.Alias:
:return: The SQLAlchemy alias for the offset items.
"""
def as_from(model_cls: t.Any) -> sa.FromClause:
def as_from(model_cls: Any) -> sa.FromClause:
return model_cls
def as_alias(alias: t.Any) -> sa.Alias:
def as_alias(alias: Any) -> sa.Alias:
return alias
return as_alias(sa.alias(as_from(JournalEntryLineItem), name="offset"))

View File

@ -19,7 +19,7 @@
This module should not import any other module from the application.
"""
import typing as t
from typing import TypeVar, Generic
from urllib.parse import urlparse, parse_qsl, urlencode, urlunparse, \
ParseResult
@ -62,10 +62,10 @@ class Redirection(RequestRedirect):
DEFAULT_PAGE_SIZE: int = 10
"""The default page size."""
T = t.TypeVar("T")
T = TypeVar("T")
class Pagination(t.Generic[T]):
class Pagination(Generic[T]):
"""The pagination utility."""
def __init__(self, items: list[T], is_reversed: bool = False):
@ -91,7 +91,7 @@ class Pagination(t.Generic[T]):
"""The options to the number of items in a page."""
class AbstractPagination(t.Generic[T]):
class AbstractPagination(Generic[T]):
"""An abstract pagination."""
def __init__(self):

View File

@ -19,21 +19,21 @@
This module should not import any other module from the application.
"""
import typing as t
from collections.abc import Callable
from flask import abort, Blueprint, Response
from accounting.utils.user import get_current_user, UserUtilityInterface
def has_permission(rule: t.Callable[[], bool]) -> t.Callable:
def has_permission(rule: Callable[[], bool]) -> Callable:
"""The permission decorator to check whether the current user is allowed.
:param rule: The permission rule.
:return: The view decorator.
"""
def decorator(view: t.Callable) -> t.Callable:
def decorator(view: Callable) -> Callable:
"""The view decorator to decorate a view with permission tests.
:param view: The view.
@ -61,16 +61,16 @@ def has_permission(rule: t.Callable[[], bool]) -> t.Callable:
return decorator
__can_view_func: t.Callable[[], bool] = lambda: True
__can_view_func: Callable[[], bool] = lambda: True
"""The callback that returns whether the current user can view the accounting
data."""
__can_edit_func: t.Callable[[], bool] = lambda: True
__can_edit_func: Callable[[], bool] = lambda: True
"""The callback that returns whether the current user can edit the accounting
data."""
__can_admin_func: t.Callable[[], bool] = lambda: True
__can_admin_func: Callable[[], bool] = lambda: True
"""The callback that returns whether the current user can administrate the
accounting settings."""
_unauthorized_func: t.Callable[[], Response | None] \
_unauthorized_func: Callable[[], Response | None] \
= lambda: Response(status=403)
"""The callback that returns the response to require the user to log in."""

View File

@ -19,13 +19,13 @@
This module should not import any other module from the application.
"""
import typing as t
from secrets import randbelow
from typing import Type
from accounting import db
def new_id(cls: t.Type):
def new_id(cls: Type):
"""Returns a new random ID for the data model.
:param cls: The data model.

View File

@ -19,17 +19,17 @@
This module should not import any other module from the application.
"""
import typing as t
from abc import ABC, abstractmethod
from typing import TypeVar, Generic, Type
import sqlalchemy as sa
from flask import g, Response
from flask_sqlalchemy.model import Model
T = t.TypeVar("T", bound=Model)
T = TypeVar("T", bound=Model)
class UserUtilityInterface(t.Generic[T], ABC):
class UserUtilityInterface(Generic[T], ABC):
"""The interface for the user utilities."""
@abstractmethod
@ -72,7 +72,7 @@ class UserUtilityInterface(t.Generic[T], ABC):
@property
@abstractmethod
def cls(self) -> t.Type[T]:
def cls(self) -> Type[T]:
"""Returns the class of the user data model.
:return: The class of the user data model.
@ -112,7 +112,7 @@ class UserUtilityInterface(t.Generic[T], ABC):
__user_utils: UserUtilityInterface
"""The user utilities."""
user_cls: t.Type[Model] = Model
user_cls: Type[Model] = Model
"""The user class."""
user_pk_column: sa.Column = sa.Column(sa.Integer)
"""The primary key column of the user class."""