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

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

34 statements  

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

2 

3from collections.abc import Set 

4from typing import Final 

5 

6from . import base 

7 

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

9 

10FORMATS: Final[Set[str]] = {'bmp', # https://graphviz.org/docs/outputs/ 

11 'canon', 'dot', 'gv', 'xdot', 'xdot1.2', 'xdot1.4', 

12 'cgimage', 

13 'cmap', 

14 'eps', 

15 'exr', 

16 'fig', 

17 'gd', 'gd2', 

18 'gif', 

19 'gtk', 

20 'ico', 

21 'imap', 'cmapx', 

22 'imap_np', 'cmapx_np', 

23 'ismap', 

24 'jp2', 

25 'jpg', 'jpeg', 'jpe', 

26 'json', 'json0', 'dot_json', 'xdot_json', # Graphviz 2.40 

27 'pct', 'pict', 

28 'pdf', 

29 'pic', 

30 'plain', 'plain-ext', 

31 'png', 

32 'pov', 

33 'ps', 

34 'ps2', 

35 'psd', 

36 'sgi', 

37 'svg', 'svg_inline', 'svgz', # svg_linline: Graphviz 10.0.1 

38 'tga', 

39 'tif', 'tiff', 

40 'tk', 

41 'vml', 'vmlz', 

42 'vrml', 

43 'wbmp', 

44 'webp', 

45 'xlib', 'x11'} 

46 

47DEFAULT_FORMAT: Final = 'pdf' 

48 

49REQUIRED: Final = True 

50 

51 

52def verify_format(format: str, *, required: bool = REQUIRED) -> None: 

53 if format is None: 

54 if required: 

55 raise ValueError('missing format') 

56 elif format.lower() not in FORMATS: 

57 raise ValueError(f'unknown format: {format!r}' 

58 f' (must be one of {sorted(FORMATS)})') 

59 

60 

61class Format(base.ParameterBase): 

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

63 

64 _format = DEFAULT_FORMAT 

65 

66 _verify_format = staticmethod(verify_format) 

67 

68 def __init__(self, *, format: str | None = None, **kwargs) -> None: 

69 super().__init__(**kwargs) 

70 

71 if format is not None: 

72 self.format = format 

73 

74 def _copy_kwargs(self, **kwargs): 

75 """Return the kwargs to create a copy of the instance.""" 

76 format = self._getattr_from_dict('_format') 

77 if format is not None: 

78 kwargs['format'] = format 

79 return super()._copy_kwargs(**kwargs) 

80 

81 @property 

82 def format(self) -> str: 

83 """The output format used for rendering 

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

85 return self._format 

86 

87 @format.setter 

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

89 format = format.lower() 

90 self._verify_format(format) 

91 self._format = format