def numericbrute(rangelist, zeropadding=0, template=None, defaults=False,
    staticbrute=[]):
    """numericbrute gives a yield generator. accepts either zeropadding or template as optional argument"""
    for statictry in staticbrute:
        yield statictry
    if defaults:
        for i in range(1000, 9999, 100):
            yield '%04i' % i
        for i in range(1001, 9999, 100):
            yield '%04i' % i
        for i in range(0, 9):
            for l in range(1, 8):
                yield '%s' % i * l
        for i in range(100, 999):
            yield '%s' % i
        for i in range(10000, 99999, 100):
            yield '%04i' % i
        for i in range(10001, 99999, 100):
            yield '%04i' % i
        for i in ['1234', '2345', '3456', '4567', '5678', '6789', '7890',
            '0123']:
            yield i
        for i in ['12345', '23456', '34567', '45678', '56789', '67890', '01234'
            ]:
            yield i
    if zeropadding > 0:
        format = '%%0%su' % zeropadding
    elif template is not None:
        format = template
    else:
        format = '%u'
    format % 1
    for x in rangelist:
        for y in x:
            r = format % y
            yield r
