Source code for pytablewriter._function

"""
.. codeauthor:: Tsuyoshi Hombashi <tsuyoshi.hombashi@gmail.com>
"""

from datetime import datetime
from enum import Enum
from typing import Any, Optional, Type

import dataproperty
from pathvalidate import replace_symbol
from tabledata._core import TableData


def quote_datetime_formatter(value: datetime) -> str:
    return f'"{value.strftime(dataproperty.DefaultValue.DATETIME_FORMAT):s}"'


def dateutil_datetime_formatter(value: datetime) -> str:
    return 'dateutil.parser.parse("{:s}")'.format(
        value.strftime(dataproperty.DefaultValue.DATETIME_FORMAT)
    )


[docs] def dumps_tabledata(value: TableData, format_name: str = "rst_grid_table", **kwargs: Any) -> str: """ :param tabledata.TableData value: Tabular data to dump. :param str format_name: Dumped format name of tabular data. Available formats are described in :py:meth:`~pytablewriter.TableWriterFactory.create_from_format_name` :Example: .. code:: python >>> dumps_tabledata(value) .. table:: sample_data ====== ====== ====== attr_a attr_b attr_c ====== ====== ====== 1 4.0 a 2 2.1 bb 3 120.9 ccc ====== ====== ====== """ from ._factory import TableWriterFactory if not value: raise TypeError("value must be a tabledata.TableData instance") writer = TableWriterFactory.create_from_format_name(format_name) for attr_name, attr_value in kwargs.items(): setattr(writer, attr_name, attr_value) writer.from_tabledata(value) return writer.dumps()
def normalize_enum( value: Any, enum_class: Type[Enum], validate: bool = True, default: Optional[Enum] = None ) -> Any: if value is None: return default if isinstance(value, enum_class): return value try: return enum_class[replace_symbol(value.strip(), "_").upper()] except AttributeError: if validate: raise TypeError(f"value must be a {enum_class} or a str: actual={type(value)}") except KeyError: if validate: raise ValueError( "invalid valid found: expected={}, actual={}".format( "/".join(item.name for item in enum_class), value ) ) return value