|
3 | 3 |
|
4 | 4 | __all__ = ("BaseSubprocessor", "CallResultT", "ContextT")
|
5 | 5 |
|
6 |
| -import dataclasses |
7 | 6 | import typing
|
8 | 7 |
|
9 | 8 | from ..context import BaseProcessorContext
|
|
14 | 13 | CallResultT = typing.TypeVar("CallResultT", bound=typing.Any)
|
15 | 14 |
|
16 | 15 |
|
17 |
| -@dataclasses.dataclass(unsafe_hash=True) |
18 | 16 | class BaseSubprocessor(typing.Generic[ContextT, CallResultT], metaclass=MetaSubprocessor):
|
19 |
| - context: ContextT = dataclasses.field(init=False, hash=False) |
20 |
| - call_result: CallResultT = dataclasses.field(init=False, hash=False) |
| 17 | + _context: ContextT | None = None |
| 18 | + _call_result: CallResultT | None = None |
21 | 19 |
|
22 | 20 | def __call__(self) -> CallResultT:
|
23 | 21 | msg = "Base subprocess call method is required to be implemented"
|
24 | 22 | raise NotImplementedError(msg)
|
| 23 | + |
| 24 | + @property |
| 25 | + def context(self) -> ContextT | None: |
| 26 | + return self._context |
| 27 | + |
| 28 | + @context.setter |
| 29 | + def context(self, value: ContextT) -> None: |
| 30 | + self._context = value # noqa: WPS601 |
| 31 | + |
| 32 | + @property |
| 33 | + def call_result(self) -> CallResultT | None: |
| 34 | + return self._call_result |
| 35 | + |
| 36 | + @call_result.setter |
| 37 | + def call_result(self, value: CallResultT) -> None: |
| 38 | + self._call_result = value # noqa: WPS601 |
| 39 | + |
| 40 | + def __repr__(self): |
| 41 | + context_str = f"{self.context!r}" |
| 42 | + call_result_str = f"{self.call_result!r}" |
| 43 | + return f"{self.__class__.__name__}({context_str=}, {call_result_str=})" |
| 44 | + |
| 45 | + def __hash__(self): |
| 46 | + return hash(f"{self.__class__.__name__}{id(self)}") |
0 commit comments