# `gbp.format` module documentation

Part of `gbp`

Format a message

Function | format_str | Format a string with the given dict. Be a bit more verbose than default python about the error cause.
Function | format_b | String-like interpolation for bytes objects.

def format_str(msg, args):

Format a string with the given dict. Be a bit more verbose than default python about the error cause.

    >>> format_str("%(foo)", {})
    Traceback (most recent call last):
    ...
    gbp.errors.GbpError: Failed to format %(foo): Missing value 'foo' in {}
    >>> format_str("%(foo)", {'foo': 'bar'})
    Traceback (most recent call last):
    ...
    gbp.errors.GbpError: Failed to format %(foo) with {'foo': 'bar'}: incomplete format
    >>> format_str("A %(foo)s is a %(bar)s", {'foo': 'dog', 'bar': 'mamal'})
    'A dog is a mamal'

def format_b(fmtstr, *args):

String-like interpolation for bytes objects.

NOTE: This is a compatibility wrapper for older versions (<3.5) of Python 3 which do not support the percent operator ('%') for bytes objects. This function should be removed (and replaced by simple '%') when Python 3.5 has gained wide enough adoption.

    >>> format_b(b'%s %d', b'foo', 123)
    b'foo 123'
    >>> format_b(b'foo 123')
    b'foo 123'
    >>> format_b('%s %d', b'foo', 123)
    Traceback (most recent call last):
    ...
    AttributeError: 'str' object has no attribute 'decode'