File: mixins.py

package info (click to toggle)
python-graphviz 0.21-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,184 kB
  • sloc: python: 4,063; makefile: 13
file content (46 lines) | stat: -rw-r--r-- 1,446 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
"""Mixin classes used to inherit parameter functionality."""

import typing

from . import engines
from . import formats
from . import renderers
from . import formatters

__all__ = ['Parameters']


class Parameters(engines.Engine, formats.Format,
                 renderers.Renderer, formatters.Formatter):
    """Parameters for calling ``graphviz.render()`` and ``graphviz.pipe()``."""

    def _get_parameters(self, *,
                        engine: typing.Optional[str] = None,
                        format: typing.Optional[str] = None,
                        renderer: typing.Optional[str] = None,
                        formatter: typing.Optional[str] = None,
                        verify: bool = False,
                        **kwargs):
        if engine is None:
            engine = self.engine
        elif verify:
            self._verify_engine(engine)

        if format is None:
            format = self.format
        elif verify:
            self._verify_format(format)

        if renderer is None:
            renderer = self.renderer
        elif verify:
            self._verify_renderer(renderer)

        if formatter is None:
            formatter = self.formatter
        elif verify:
            self._verify_formatter(formatter)

        kwargs.update(engine=engine, format=format,
                      renderer=renderer, formatter=formatter)
        return kwargs