Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/graphviz/parameters/formats.py: 66%
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 format parameter handling."""
3import typing
5from . import base
7__all__ = ['FORMATS', 'verify_format', 'Format']
9FORMATS = {'bmp', # https://graphviz.org/docs/outputs/
10 'canon', 'dot', 'gv', 'xdot', 'xdot1.2', 'xdot1.4',
11 'cgimage',
12 'cmap',
13 'eps',
14 'exr',
15 'fig',
16 'gd', 'gd2',
17 'gif',
18 'gtk',
19 'ico',
20 'imap', 'cmapx',
21 'imap_np', 'cmapx_np',
22 'ismap',
23 'jp2',
24 'jpg', 'jpeg', 'jpe',
25 'json', 'json0', 'dot_json', 'xdot_json', # Graphviz 2.40
26 'pct', 'pict',
27 'pdf',
28 'pic',
29 'plain', 'plain-ext',
30 'png',
31 'pov',
32 'ps',
33 'ps2',
34 'psd',
35 'sgi',
36 'svg', 'svgz',
37 'tga',
38 'tif', 'tiff',
39 'tk',
40 'vml', 'vmlz',
41 'vrml',
42 'wbmp',
43 'webp',
44 'xlib', 'x11'}
46DEFAULT_FORMAT = 'pdf'
48REQUIRED = True
51def verify_format(format: str, *, required: bool = REQUIRED) -> None:
52 if format is None:
53 if required:
54 raise ValueError('missing format')
55 elif format.lower() not in FORMATS:
56 raise ValueError(f'unknown format: {format!r}'
57 f' (must be one of {sorted(FORMATS)})')
60class Format(base.ParameterBase):
61 """Rendering format parameter with ``'pdf'`` default."""
63 _format = DEFAULT_FORMAT
65 _verify_format = staticmethod(verify_format)
67 def __init__(self, *, format: typing.Optional[str] = None, **kwargs) -> None:
68 super().__init__(**kwargs)
70 if format is not None:
71 self.format = format
73 def _copy_kwargs(self, **kwargs):
74 """Return the kwargs to create a copy of the instance."""
75 format = self._getattr_from_dict('_format')
76 if format is not None:
77 kwargs['format'] = format
78 return super()._copy_kwargs(**kwargs)
80 @property
81 def format(self) -> str:
82 """The output format used for rendering
83 (``'pdf'``, ``'png'``, ...)."""
84 return self._format
86 @format.setter
87 def format(self, format: str) -> None:
88 format = format.lower()
89 self._verify_format(format)
90 self._format = format