File: mixins.py

package info (click to toggle)
python-graphviz 0.20.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,188 kB
  • sloc: python: 4,098; makefile: 13
file content (76 lines) | stat: -rw-r--r-- 2,319 bytes parent folder | download | duplicates (2)
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
"""Mixin classes used by Base subclasses to inherit backend functionality."""

import os
import typing

from .. import parameters

from . import piping
from . import rendering
from . import unflattening
from . import viewing

__all__ = ['Render', 'Pipe', 'Unflatten', 'View']


class Render(parameters.Parameters):
    """Parameters for calling and calling ``graphviz.render()``."""

    def _get_render_parameters(self,
                               outfile: typing.Union[os.PathLike, str, None] = None,
                               raise_if_result_exists: bool = False,
                               overwrite_source: bool = False,
                               **kwargs):
        kwargs = self._get_parameters(**kwargs)
        kwargs.update(outfile=outfile,
                      raise_if_result_exists=raise_if_result_exists,
                      overwrite_filepath=overwrite_source)
        return [kwargs.pop('engine'), kwargs.pop('format')], kwargs

    @property
    def _render(_):  # noqa: N805
        """Simplify ``._render()`` mocking."""
        return rendering.render


class Pipe(parameters.Parameters):
    """Parameters for calling and calling ``graphviz.pipe()``."""

    _get_format = staticmethod(rendering.get_format)

    _get_filepath = staticmethod(rendering.get_filepath)

    def _get_pipe_parameters(self, **kwargs):
        kwargs = self._get_parameters(**kwargs)
        return [kwargs.pop('engine'), kwargs.pop('format')], kwargs

    @property
    def _pipe_lines(_):  # noqa: N805
        """Simplify ``._pipe_lines()`` mocking."""
        return piping.pipe_lines

    @property
    def _pipe_lines_string(_):  # noqa: N805
        """Simplify ``._pipe_lines_string()`` mocking."""
        return piping.pipe_lines_string


class Unflatten:

    @property
    def _unflatten(_):  # noqa: N805
        """Simplify ``._unflatten mocking."""
        return unflattening.unflatten


class View:
    """Open filepath with its default viewing application
        (platform-specific)."""

    _view_darwin = staticmethod(viewing.view_darwin)

    _view_freebsd = staticmethod(viewing.view_unixoid)

    _view_linux = staticmethod(viewing.view_unixoid)

    _view_windows = staticmethod(viewing.view_windows)