Skip to content

Commit

Permalink
🐛 兼容3.10的NamedTuple多继承
Browse files Browse the repository at this point in the history
  • Loading branch information
AzideCupric committed Jun 28, 2024
1 parent 2f2e57a commit ba3df50
Showing 1 changed file with 29 additions and 6 deletions.
35 changes: 29 additions & 6 deletions nonebot_bison/platform/bilibili/retry.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import sys
import random
from functools import wraps
from dataclasses import dataclass
Expand Down Expand Up @@ -36,14 +37,36 @@ class Action(Generic[TState, TEvent], Protocol):
def __call__(self, from_: TState, event: TEvent, to: TState) -> Coroutine[Any, Any, ActionReturn]: ...


class Transition(Generic[TState, TEvent], NamedTuple):
action: Action[TState, TEvent]
to: TState
# Python 3.11+ 才支持 NamedTuple和TypedDict使用多继承添加泛型
if sys.version_info >= (3, 11):

class Transition(Generic[TState, TEvent], NamedTuple):
action: Action[TState, TEvent]
to: TState

class StateGraph(Generic[TState, TEvent], TypedDict):
transitions: dict[TState, dict[TEvent, Transition[TState, TEvent]]]
initial: TState
class StateGraph(Generic[TState, TEvent], TypedDict):
transitions: dict[TState, dict[TEvent, Transition[TState, TEvent]]]
initial: TState

elif TYPE_CHECKING:

class Transition(Generic[TState, TEvent], NamedTuple):
action: Action[TState, TEvent]
to: TState

class StateGraph(Generic[TState, TEvent], TypedDict):
transitions: dict[TState, dict[TEvent, Transition[TState, TEvent]]]
initial: TState

else:

class Transition(NamedTuple):
action: Action
to: StrEnum

class StateGraph(TypedDict):
transitions: dict[StrEnum, dict[StrEnum, Transition]]
initial: StrEnum


class FSM(Generic[TState, TEvent]):
Expand Down

0 comments on commit ba3df50

Please sign in to comment.