Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/graphviz/parameters/renderers.py: 69%
32 statements
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-26 06:43 +0000
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-26 06:43 +0000
1"""Rendering renderer parameter handling."""
3import typing
5from . import base
7__all__ = ['RENDERERS', 'verify_renderer', 'Renderer']
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'}
25REQUIRED = False
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)})')
38class Renderer(base.ParameterBase):
39 """Rendering renderer parameter (no default)."""
41 _renderer = None
43 _verify_renderer = staticmethod(verify_renderer)
45 def __init__(self, *, renderer: typing.Optional[str] = None, **kwargs) -> None:
46 super().__init__(**kwargs)
48 self.renderer = renderer
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)
57 @property
58 def renderer(self) -> typing.Optional[str]:
59 """The output renderer used for rendering
60 (``'cairo'``, ``'gd'``, ...)."""
61 return self._renderer
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