1"""Mixin classes used to inherit parameter functionality."""
2
3import typing
4
5from . import engines
6from . import formats
7from . import renderers
8from . import formatters
9
10__all__ = ['Parameters']
11
12
13class Parameters(engines.Engine, formats.Format,
14 renderers.Renderer, formatters.Formatter):
15 """Parameters for calling ``graphviz.render()`` and ``graphviz.pipe()``."""
16
17 def _get_parameters(self, *,
18 engine: typing.Optional[str] = None,
19 format: typing.Optional[str] = None,
20 renderer: typing.Optional[str] = None,
21 formatter: typing.Optional[str] = None,
22 verify: bool = False,
23 **kwargs):
24 if engine is None:
25 engine = self.engine
26 elif verify:
27 self._verify_engine(engine)
28
29 if format is None:
30 format = self.format
31 elif verify:
32 self._verify_format(format)
33
34 if renderer is None:
35 renderer = self.renderer
36 elif verify:
37 self._verify_renderer(renderer)
38
39 if formatter is None:
40 formatter = self.formatter
41 elif verify:
42 self._verify_formatter(formatter)
43
44 kwargs.update(engine=engine, format=format,
45 renderer=renderer, formatter=formatter)
46 return kwargs