Letoderea 0.4.0
What's Changed
- 重构了整个 Letoderea。现今的依赖注入基于静态编译后的
Provider
+ 动态的类型推断 - 引入
Provider
,并在Subscriber
注册时确定每个参数可分配的Provider
。当事件传递时每个参数上的Provider
将依次执行。 - 重做
Auxiliary
,并引入Combine
机制,即允许多个Auxiliary
组合,类似A -- AND --> B -- AND --> [C or D or E] -- AND --> F
- 重做
Event
, 现在Event
属于一类协议,仅要求实现一个async def gather
函数,其接受一个context: Contexts
参数,负责将事件参数传入 Contexts 中。例:
class ExampleEvent:
foo: int
bar: str
async def gather(self, context: Contexts):
context["foo"] = self.foo
context["bar"] = self.bar
Provider
与Event
可以 配合使用:
class ExampleProvider(Provider[int]):
async def __call__(self, context: Contexts):
return context["foo"]
class ExampleEvent:
foo: int
bar: str
async def gather(self, context: Contexts):
context["foo"] = self.foo
context["bar"] = self.bar
class BarProvider(Provider[str]):
async def __call__(self, context: Contexts):
return context["bar"]
Full Changelog: 0.3.0...0.4.0