aboutsummaryrefslogtreecommitdiff
path: root/tools/cru-py/cru/_decorator.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/cru-py/cru/_decorator.py')
-rw-r--r--tools/cru-py/cru/_decorator.py97
1 files changed, 0 insertions, 97 deletions
diff --git a/tools/cru-py/cru/_decorator.py b/tools/cru-py/cru/_decorator.py
deleted file mode 100644
index 137fc05..0000000
--- a/tools/cru-py/cru/_decorator.py
+++ /dev/null
@@ -1,97 +0,0 @@
-from __future__ import annotations
-
-from collections.abc import Callable
-from typing import (
- Concatenate,
- Generic,
- ParamSpec,
- TypeVar,
- cast,
-)
-
-from ._base import CRU
-
-_P = ParamSpec("_P")
-_T = TypeVar("_T")
-_O = TypeVar("_O")
-_R = TypeVar("_R")
-
-
-class CruDecorator:
-
- class ConvertResult(Generic[_T, _O]):
- def __init__(
- self,
- converter: Callable[[_T], _O],
- ) -> None:
- self.converter = converter
-
- def __call__(self, origin: Callable[_P, _T]) -> Callable[_P, _O]:
- converter = self.converter
-
- def real_impl(*args: _P.args, **kwargs: _P.kwargs) -> _O:
- return converter(origin(*args, **kwargs))
-
- return real_impl
-
- class ImplementedBy(Generic[_T, _O, _P, _R]):
- def __init__(
- self,
- impl: Callable[Concatenate[_O, _P], _R],
- converter: Callable[[_T], _O],
- ) -> None:
- self.impl = impl
- self.converter = converter
-
- def __call__(
- self, _origin: Callable[[_T], None]
- ) -> Callable[Concatenate[_T, _P], _R]:
- converter = self.converter
- impl = self.impl
-
- def real_impl(_self: _T, *args: _P.args, **kwargs: _P.kwargs) -> _R:
- return cast(Callable[Concatenate[_O, _P], _R], impl)(
- converter(_self), *args, **kwargs
- )
-
- return real_impl
-
- @staticmethod
- def create_factory(converter: Callable[[_T], _O]) -> Callable[
- [Callable[Concatenate[_O, _P], _R]],
- CruDecorator.ImplementedBy[_T, _O, _P, _R],
- ]:
- def create(
- m: Callable[Concatenate[_O, _P], _R],
- ) -> CruDecorator.ImplementedBy[_T, _O, _P, _R]:
- return CruDecorator.ImplementedBy(m, converter)
-
- return create
-
- class ImplementedByNoSelf(Generic[_P, _R]):
- def __init__(self, impl: Callable[_P, _R]) -> None:
- self.impl = impl
-
- def __call__(
- self, _origin: Callable[[_T], None]
- ) -> Callable[Concatenate[_T, _P], _R]:
- impl = self.impl
-
- def real_impl(_self: _T, *args: _P.args, **kwargs: _P.kwargs) -> _R:
- return cast(Callable[_P, _R], impl)(*args, **kwargs)
-
- return real_impl
-
- @staticmethod
- def create_factory() -> (
- Callable[[Callable[_P, _R]], CruDecorator.ImplementedByNoSelf[_P, _R]]
- ):
- def create(
- m: Callable[_P, _R],
- ) -> CruDecorator.ImplementedByNoSelf[_P, _R]:
- return CruDecorator.ImplementedByNoSelf(m)
-
- return create
-
-
-CRU.add_objects(CruDecorator)