Skip to content

FormatSet

exprint.formatter.FormatSet

FormatSet(formatter: Formatter)

Class for formatting set of items.

Source code in exprint/formatter.py
def __init__(self, formatter: Formatter):
    super().__init__(formatter, "{", "}")

_cache instance-attribute

_cache = None

_head instance-attribute

_head = bracket_head

_length instance-attribute

_length = 0

_tail instance-attribute

_tail = bracket_tail

_values instance-attribute

_values = []

_widths instance-attribute

_widths = []

formatter instance-attribute

formatter: Formatter = formatter

Formatter class.

value

value(value: Any) -> FormatSeq

Adds a value to the sequence output.

Parameters:

Name Type Description Default

value

Any

Value to add.

required

Returns:

Type Description
FormatSeq

Itself

Examples:

>>> f = Formatter()
>>> f.format_list().value(seq[0])
Source code in exprint/formatter.py
def value(self, value: Any) -> FormatSeq:
    """
    Adds a value to the sequence output.

    Parameters
    ----------
    value : Any
        Value to add.

    Returns
    -------
    FormatSeq
        Itself

    Examples
    --------

    >>> f = Formatter()
    >>> f.format_list().value(seq[0])
    """
    return self.value_with(lambda f: f.format_any(value))

value_with

value_with(
    value_fmt: Callable[[Formatter], Format],
) -> FormatSeq

Adds a value to the sequence output. Equivalent to FormatSeq.value but formats the value using a function.

Parameters:

Name Type Description Default

value_fmt

Callable[[Formatter], Format]

Value function.

required

Returns:

Type Description
FormatSeq

Itself

Examples:

>>> f = Formatter()
>>> f.format_list().value_with(lambda f: f.format_any(seq[0]))
Source code in exprint/formatter.py
def value_with(self, value_fmt: Callable[[Formatter], Format]) -> FormatSeq:
    """
    Adds a value to the sequence output. Equivalent to `FormatSeq.value`
    but formats the value using a function.

    Parameters
    ----------
    value_fmt : Callable[[Formatter], Format]
        Value function.

    Returns
    -------
    FormatSeq
        Itself

    Examples
    --------

    >>> f = Formatter()
    >>> f.format_list().value_with(lambda f: f.format_any(seq[0]))
    """
    if len(self._widths) < self.formatter.max_elements():
        value = value_fmt(self.formatter)
        self._widths.append(value.width())
        self._values.append(value)
    self._length += 1
    return self

values

values(values: SizedIterable) -> FormatSeq

Adds all values to the sequence output.

Parameters:

Name Type Description Default

values

SizedIterable

Sequence of values which must be iterable and sized.

required

Returns:

Type Description
FormatSeq

Itself

Examples:

>>> f = Formatter()
>>> f.format_list().values(seq)
Source code in exprint/formatter.py
def values(self, values: SizedIterable) -> FormatSeq:
    """
    Adds all values to the sequence output.

    Parameters
    ----------
    values : SizedIterable
        Sequence of values which must be iterable and sized.

    Returns
    -------
    FormatSeq
        Itself

    Examples
    --------

    >>> f = Formatter()
    >>> f.format_list().values(seq)
    """
    self._length += len(values)
    offset = self.formatter.max_elements() - len(self._widths)
    values = [self.formatter.format_any(value) for value in islice(values, offset)]
    self._widths.extend(value.width() for value in values)
    self._values.extend(values)
    return self