Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/graphviz/parameters/renderers.py: 70%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

33 statements  

1"""Rendering renderer parameter handling.""" 

2 

3import typing 

4 

5from . import base 

6 

7__all__ = ['RENDERERS', 'verify_renderer', 'Renderer'] 

8 

9RENDERERS = {'cairo', # $ dot -T: 

10 'dot', 

11 'fig', 

12 'gd', 

13 'gdiplus', 

14 'map', 

15 'pic', 

16 'pov', 

17 'ps', 

18 'svg', 

19 'tk', 

20 'vml', 

21 'vrml', 

22 'xdot'} 

23 

24 

25REQUIRED = False 

26 

27 

28def verify_renderer(renderer: typing.Optional[str], *, 

29 required: bool = REQUIRED) -> None: 

30 if renderer is None: 

31 if required: 

32 raise ValueError('missing renderer') 

33 elif renderer.lower() not in RENDERERS: 

34 raise ValueError(f'unknown renderer: {renderer!r}' 

35 f' (must be None or one of {sorted(RENDERERS)})') 

36 

37 

38class Renderer(base.ParameterBase): 

39 """Rendering renderer parameter (no default).""" 

40 

41 _renderer = None 

42 

43 _verify_renderer = staticmethod(verify_renderer) 

44 

45 def __init__(self, *, renderer: typing.Optional[str] = None, **kwargs) -> None: 

46 super().__init__(**kwargs) 

47 

48 self.renderer = renderer 

49 

50 def _copy_kwargs(self, **kwargs): 

51 """Return the kwargs to create a copy of the instance.""" 

52 renderer = self._getattr_from_dict('_renderer') 

53 if renderer is not None: 

54 kwargs['renderer'] = renderer 

55 return super()._copy_kwargs(**kwargs) 

56 

57 @property 

58 def renderer(self) -> typing.Optional[str]: 

59 """The output renderer used for rendering 

60 (``'cairo'``, ``'gd'``, ...).""" 

61 return self._renderer 

62 

63 @renderer.setter 

64 def renderer(self, renderer: typing.Optional[str]) -> None: 

65 if renderer is None: 

66 self.__dict__.pop('_renderer', None) 

67 else: 

68 renderer = renderer.lower() 

69 self._verify_renderer(renderer) 

70 self._renderer = renderer