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

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

34 statements  

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

2 

3from collections.abc import Set 

4from typing import Final 

5 

6from . import base 

7 

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

9 

10RENDERERS: Final[Set[str]] = {'cairo', # $ dot -T: 

11 'dot', 

12 'fig', 

13 'gd', 

14 'gdiplus', 

15 'map', 

16 'pic', 

17 'pov', 

18 'ps', 

19 'svg', 

20 'tk', 

21 'vml', 

22 'vrml', 

23 'xdot'} 

24 

25 

26REQUIRED: Final = False 

27 

28 

29def verify_renderer(renderer: str | None, *, 

30 required: bool = REQUIRED) -> None: 

31 if renderer is None: 

32 if required: 

33 raise ValueError('missing renderer') 

34 elif renderer.lower() not in RENDERERS: 

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

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

37 

38 

39class Renderer(base.ParameterBase): 

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

41 

42 _renderer = None 

43 

44 _verify_renderer = staticmethod(verify_renderer) 

45 

46 def __init__(self, *, renderer: str | None = None, **kwargs) -> None: 

47 super().__init__(**kwargs) 

48 

49 self.renderer = renderer 

50 

51 def _copy_kwargs(self, **kwargs): 

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

53 renderer = self._getattr_from_dict('_renderer') 

54 if renderer is not None: 

55 kwargs['renderer'] = renderer 

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

57 

58 @property 

59 def renderer(self) -> str | None: 

60 """The output renderer used for rendering 

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

62 return self._renderer 

63 

64 @renderer.setter 

65 def renderer(self, renderer: str | None) -> None: 

66 if renderer is None: 

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

68 else: 

69 renderer = renderer.lower() 

70 self._verify_renderer(renderer) 

71 self._renderer = renderer