Skip to content

Letoderea 0.4.0

Compare
Choose a tag to compare
@RF-Tar-Railt RF-Tar-Railt released this 23 Mar 06:10

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
  • ProviderEvent 可以 配合使用:
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