use native union type syntax
This commit is contained in:
parent
13b65103fd
commit
3320d53eda
8 changed files with 43 additions and 45 deletions
|
|
@ -9,7 +9,6 @@ from typing import (
|
|||
ClassVar,
|
||||
Container,
|
||||
Literal,
|
||||
Optional,
|
||||
Type,
|
||||
TypeVar,
|
||||
Union,
|
||||
|
|
@ -25,7 +24,7 @@ JSONObject = dict[str, JSON]
|
|||
T = TypeVar("T")
|
||||
|
||||
|
||||
def annotations(tp: Type) -> Optional[tuple]:
|
||||
def annotations(tp: Type) -> tuple | None:
|
||||
return tp.__metadata__ if hasattr(tp, "__metadata__") else None
|
||||
|
||||
|
||||
|
|
@ -61,7 +60,7 @@ def is_optional(tp: Type) -> bool:
|
|||
return len(args) == 2 and type(None) in args
|
||||
|
||||
|
||||
def optional_type(tp: Type) -> Optional[Type]:
|
||||
def optional_type(tp: Type) -> Type | None:
|
||||
"""Return the wrapped type from an optional type.
|
||||
|
||||
For example this will return `int` for `Optional[int]`.
|
||||
|
|
@ -206,7 +205,7 @@ class Progress:
|
|||
type: str = None
|
||||
state: str = None
|
||||
started: datetime = field(default_factory=utcnow)
|
||||
stopped: Optional[str] = None
|
||||
stopped: str | None = None
|
||||
|
||||
@property
|
||||
def _state(self) -> dict:
|
||||
|
|
@ -243,15 +242,15 @@ class Movie:
|
|||
|
||||
id: ULID = field(default_factory=ULID)
|
||||
title: str = None # canonical title (usually English)
|
||||
original_title: Optional[
|
||||
str
|
||||
] = None # original title (usually transscribed to latin script)
|
||||
original_title: str | None = (
|
||||
None # original title (usually transscribed to latin script)
|
||||
)
|
||||
release_year: int = None # canonical release date
|
||||
media_type: str = None
|
||||
imdb_id: str = None
|
||||
imdb_score: Optional[int] = None # range: [0,100]
|
||||
imdb_votes: Optional[int] = None
|
||||
runtime: Optional[int] = None # minutes
|
||||
imdb_score: int | None = None # range: [0,100]
|
||||
imdb_votes: int | None = None
|
||||
runtime: int | None = None # minutes
|
||||
genres: set[str] = None
|
||||
created: datetime = field(default_factory=utcnow)
|
||||
updated: datetime = field(default_factory=utcnow)
|
||||
|
|
@ -292,7 +291,7 @@ dataclass containing the ID of the linked data.
|
|||
The contents of the Relation are ignored or discarded when using
|
||||
`asplain`, `fromplain`, and `validate`.
|
||||
"""
|
||||
Relation = Annotated[Optional[T], _RelationSentinel]
|
||||
Relation = Annotated[T | None, _RelationSentinel]
|
||||
|
||||
|
||||
@dataclass
|
||||
|
|
@ -309,8 +308,8 @@ class Rating:
|
|||
|
||||
score: int = None # range: [0,100]
|
||||
rating_date: datetime = None
|
||||
favorite: Optional[bool] = None
|
||||
finished: Optional[bool] = None
|
||||
favorite: bool | None = None
|
||||
finished: bool | None = None
|
||||
|
||||
def __eq__(self, other):
|
||||
"""Return wether two Ratings are equal.
|
||||
|
|
@ -342,11 +341,11 @@ class User:
|
|||
secret: str = None
|
||||
groups: list[dict[str, str]] = field(default_factory=list)
|
||||
|
||||
def has_access(self, group_id: Union[ULID, str], access: Access = "r"):
|
||||
def has_access(self, group_id: ULID | str, access: Access = "r"):
|
||||
group_id = group_id if isinstance(group_id, str) else str(group_id)
|
||||
return any(g["id"] == group_id and access == g["access"] for g in self.groups)
|
||||
|
||||
def set_access(self, group_id: Union[ULID, str], access: Access):
|
||||
def set_access(self, group_id: ULID | str, access: Access):
|
||||
group_id = group_id if isinstance(group_id, str) else str(group_id)
|
||||
for g in self.groups:
|
||||
if g["id"] == group_id:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue