Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/graphviz/parameters/formats.py: 67%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

33 statements  

1"""Rendering format parameter handling.""" 

2 

3import typing 

4 

5from . import base 

6 

7__all__ = ['FORMATS', 'verify_format', 'Format'] 

8 

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', 'svg_inline', 'svgz', # svg_linline: Graphviz 10.0.1 

37 'tga', 

38 'tif', 'tiff', 

39 'tk', 

40 'vml', 'vmlz', 

41 'vrml', 

42 'wbmp', 

43 'webp', 

44 'xlib', 'x11'} 

45 

46DEFAULT_FORMAT = 'pdf' 

47 

48REQUIRED = True 

49 

50 

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)})') 

58 

59 

60class Format(base.ParameterBase): 

61 """Rendering format parameter with ``'pdf'`` default.""" 

62 

63 _format = DEFAULT_FORMAT 

64 

65 _verify_format = staticmethod(verify_format) 

66 

67 def __init__(self, *, format: typing.Optional[str] = None, **kwargs) -> None: 

68 super().__init__(**kwargs) 

69 

70 if format is not None: 

71 self.format = format 

72 

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) 

79 

80 @property 

81 def format(self) -> str: 

82 """The output format used for rendering 

83 (``'pdf'``, ``'png'``, ...).""" 

84 return self._format 

85 

86 @format.setter 

87 def format(self, format: str) -> None: 

88 format = format.lower() 

89 self._verify_format(format) 

90 self._format = format