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