Welcome, guest | Sign In | My Account | Store | Cart
from string import Formatter

class EmptyNoneType(object):

    def __nonzero__(self):
        return False

    def __str__(self):
        return ''

    def __getattr__(self, name):
        return EmptyNone

    def __getitem__(self, idx):
        return EmptyNone
    

EmptyNone = EmptyNoneType()

class EmptyNoneFormatter(Formatter):

    def get_value(self, field_name, args, kwds):
        v = Formatter.get_value(self, field_name, args, kwds)
        if v is None:
            return EmptyNone
        return v

def test_getattr_on_None():
    fmt = EmptyNoneFormatter()
    assert fmt.format('{0}', None) == ''
    assert fmt.format('{0.foo}', None) == ''
    assert fmt.format('{0[0]}', None) == ''

    assert fmt.format('{bar}', bar=None) == ''
    assert fmt.format('{bar.foo}', bar=None) == ''
    assert fmt.format('{bar[0]}', bar=None) == ''

History