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

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 formatter parameter handling.""" 

2 

3from collections.abc import Set 

4from typing import Final 

5 

6from . import base 

7 

8__all__ = ['FORMATTERS', 'verify_formatter', 'Formatter'] 

9 

10FORMATTERS: Final[Set] = {'cairo', 

11 'core', 

12 'gd', 

13 'gdiplus', 

14 'gdwbmp', 

15 'xlib'} 

16 

17REQUIRED: Final = False 

18 

19 

20def verify_formatter(formatter: str | None, *, 

21 required: bool = REQUIRED) -> None: 

22 if formatter is None: 

23 if required: 

24 raise ValueError('missing formatter') 

25 elif formatter.lower() not in FORMATTERS: 

26 raise ValueError(f'unknown formatter: {formatter!r}' 

27 f' (must be None or one of {sorted(FORMATTERS)})') 

28 

29 

30class Formatter(base.ParameterBase): 

31 """Rendering engine parameter (no default).""" 

32 

33 _formatter = None 

34 

35 _verify_formatter = staticmethod(verify_formatter) 

36 

37 def __init__(self, *, formatter: str | None = None, **kwargs) -> None: 

38 super().__init__(**kwargs) 

39 

40 self.formatter = formatter 

41 

42 def _copy_kwargs(self, **kwargs): 

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

44 formatter = self._getattr_from_dict('_formatter') 

45 if formatter is not None: 

46 kwargs['formatter'] = formatter 

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

48 

49 @property 

50 def formatter(self) -> str | None: 

51 """The output formatter used for rendering 

52 (``'cairo'``, ``'gd'``, ...).""" 

53 return self._formatter 

54 

55 @formatter.setter 

56 def formatter(self, formatter: str | None) -> None: 

57 if formatter is None: 

58 self.__dict__.pop('_formatter', None) 

59 else: 

60 formatter = formatter.lower() 

61 self._verify_formatter(formatter) 

62 self._formatter = formatter