<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def parse_units(units_str):
 """ Extract and parse the units Extract the bounds over which the expression is assumed to apply. Parameters units_str Returns ------- Examples -------- ('Widgets/Month', (-10,10,1)) ('Month', [-10, None]) ('Widgets', (0, 100)) ('Widgets', (None, None)) ('', (0, 100)) """

    if not len(units_str):
        return units_str, (None, None)

    if units_str[-1] == ']':
        units, lims = units_str.rsplit('[')  # type: str, str
    else:
        units = units_str
        lims = '?, ?]'

    lims = tuple([float(x) if x.strip() != '?' else None for x in lims.strip(']').split(',')])

    return units.strip(), lims