docs: def parse_timedelta(text):
      """Robustly parses a short text description of a time period into a
      :class:`datetime.timedelta`. Supports weeks, days, hours, minutes,
      and seconds, with or without decimal points:
  
      Args:
          text (str): Text to parse.
      Returns:
          datetime.timedelta
      Raises:
          ValueError: on parse failure.
  
      >>> parse_td('1d 2h 3.5m 0s')
      datetime.timedelta(1, 7410)
  
      Also supports full words and whitespace.
  
      >>> parse_td('2 weeks 1 day')
      datetime.timedelta(15)
  
      Negative times are supported, too:
  
      >>> parse_td('-1.5 weeks 3m 20s')
      datetime.timedelta(-11, 43400)
      """
      td_kwargs = {}
      for match in _PARSE_TD_RE.finditer(text):
          value, unit = match.group('value'), match.group('unit')
          try:
              unit_key = _PARSE_TD_KW_MAP[unit]
          except KeyError:
              raise ValueError('invalid time unit %r, expected one of %r'
                               % (unit, _PARSE_TD_KW_MAP.keys()))
          try:
              value = float(value)
          except ValueError:
              raise ValueError('invalid time value for unit %r: %r'
                               % (unit, value))
          td_kwargs[unit_key] = value
      return timedelta(**td_kwargs)