structure saas with tools
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
"""Rendering formatter parameter handling."""
|
||||
|
||||
import typing
|
||||
|
||||
from . import base
|
||||
|
||||
__all__ = ['FORMATTERS', 'verify_formatter', 'Formatter']
|
||||
|
||||
FORMATTERS = {'cairo',
|
||||
'core',
|
||||
'gd',
|
||||
'gdiplus',
|
||||
'gdwbmp',
|
||||
'xlib'}
|
||||
|
||||
REQUIRED = False
|
||||
|
||||
|
||||
def verify_formatter(formatter: typing.Optional[str], *,
|
||||
required: bool = REQUIRED) -> None:
|
||||
if formatter is None:
|
||||
if required:
|
||||
raise ValueError('missing formatter')
|
||||
elif formatter.lower() not in FORMATTERS:
|
||||
raise ValueError(f'unknown formatter: {formatter!r}'
|
||||
f' (must be None or one of {sorted(FORMATTERS)})')
|
||||
|
||||
|
||||
class Formatter(base.ParameterBase):
|
||||
"""Rendering engine parameter (no default)."""
|
||||
|
||||
_formatter = None
|
||||
|
||||
_verify_formatter = staticmethod(verify_formatter)
|
||||
|
||||
def __init__(self, *, formatter: typing.Optional[str] = None, **kwargs) -> None:
|
||||
super().__init__(**kwargs)
|
||||
|
||||
self.formatter = formatter
|
||||
|
||||
def _copy_kwargs(self, **kwargs):
|
||||
"""Return the kwargs to create a copy of the instance."""
|
||||
formatter = self._getattr_from_dict('_formatter')
|
||||
if formatter is not None:
|
||||
kwargs['formatter'] = formatter
|
||||
return super()._copy_kwargs(**kwargs)
|
||||
|
||||
@property
|
||||
def formatter(self) -> typing.Optional[str]:
|
||||
"""The output formatter used for rendering
|
||||
(``'cairo'``, ``'gd'``, ...)."""
|
||||
return self._formatter
|
||||
|
||||
@formatter.setter
|
||||
def formatter(self, formatter: typing.Optional[str]) -> None:
|
||||
if formatter is None:
|
||||
self.__dict__.pop('_formatter', None)
|
||||
else:
|
||||
formatter = formatter.lower()
|
||||
self._verify_formatter(formatter)
|
||||
self._formatter = formatter
|
||||
Reference in New Issue
Block a user