def strfdelta(tdelta, fmt='<STR_LIT>', input_type='<STR_LIT>'):
<EOL>if input_type == '<STR_LIT>':<EOL><INDENT>remainder = int(tdelta.total_seconds())<EOL><DEDENT>elif input_type in ['<STR_LIT:s>', '<STR_LIT>']:<EOL><INDENT>remainder = int(tdelta)<EOL><DEDENT>elif input_type in ['<STR_LIT:m>', '<STR_LIT>']:<EOL><INDENT>remainder = int(tdelta) * <NUM_LIT><EOL><DEDENT>elif input_type in ['<STR_LIT:h>', '<STR_LIT>']:<EOL><INDENT>remainder = int(tdelta) * <NUM_LIT><EOL><DEDENT>elif input_type in ['<STR_LIT:d>', '<STR_LIT>']:<EOL><INDENT>remainder = int(tdelta) * <NUM_LIT><EOL><DEDENT>elif input_type in ['<STR_LIT:w>', '<STR_LIT>']:<EOL><INDENT>remainder = int(tdelta) * <NUM_LIT><EOL><DEDENT>else:<EOL><INDENT>raise ValueError(<EOL>'<STR_LIT>'<EOL>)<EOL><DEDENT>f = Formatter()<EOL>desired_fields = [field_tuple[<NUM_LIT:1>] for field_tuple in f.parse(fmt)]<EOL>possible_fields = ('<STR_LIT>', '<STR_LIT:D>', '<STR_LIT:H>', '<STR_LIT:M>', '<STR_LIT:S>')<EOL>constants = {'<STR_LIT>': <NUM_LIT>, '<STR_LIT:D>': <NUM_LIT>, '<STR_LIT:H>': <NUM_LIT>, '<STR_LIT:M>': <NUM_LIT>, '<STR_LIT:S>': <NUM_LIT:1>}<EOL>values = {}<EOL>for field in possible_fields:<EOL><INDENT>if field in desired_fields and field in constants:<EOL><INDENT>values[field], remainder = divmod(remainder, constants[field])<EOL><DEDENT><DEDENT>return f.format(fmt, **values)<EOL>
Convert a datetime.timedelta object or a regular number to a custom-formatted string.

This function works like the strftime() method works for datetime.datetime
objects.

The fmt argument allows custom formatting to be specified.  Fields can
include seconds, minutes, hours, days, and weeks.  Each field is optional.

Arguments:
    tdelta (datetime.timedelta, int): time delta object containing the duration or an integer
        to go with the input_type.
    fmt (str): Expected format of the time delta. place holders can only be one of the following.
        1. D to extract days from time delta
        2. H to extract hours from time delta
        3. M to extract months from time delta
        4. S to extract seconds from timedelta
    input_type (str):  The input_type argument allows tdelta to be a regular number instead of the
        default, which is a datetime.timedelta object.
        Valid input_type strings:
            1. 's', 'seconds',
            2. 'm', 'minutes',
            3. 'h', 'hours',
            4. 'd', 'days',
            5. 'w', 'weeks'
Returns:
    (str): timedelta object interpolated into a string following the given format.

Examples:
    '{D:02}d {H:02}h {M:02}m {S:02}s' --> '05d 08h 04m 02s' (default)
    '{W}w {D}d {H}:{M:02}:{S:02}'     --> '4w 5d 8:04:02'
    '{D:2}d {H:2}:{M:02}:{S:02}'      --> ' 5d  8:04:02'
    '{H}h {S}s'                       --> '72h 800s'