Coverage for src/pystencilssfg/composer/mixin.py: 80%

15 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-04 07:16 +0000

1from __future__ import annotations 

2 

3from ..context import SfgContext, SfgCursor 

4from .basic_composer import SfgBasicComposer 

5 

6 

7class SfgComposerMixIn: 

8 # type: ignore 

9 def __new__(cls, *args, **kwargs): 

10 if not issubclass(cls, SfgBasicComposer): 

11 raise Exception(f"{cls} must be mixed-in with SfgBasicComposer.") 

12 else: 

13 return super().__new__(cls) 

14 

15 def __init__(self) -> None: 

16 self._ctx: SfgContext 

17 self._cursor: SfgCursor 

18 

19 @property 

20 def _composer(self) -> SfgBasicComposer: 

21 assert isinstance(self, SfgBasicComposer) 

22 return self