code: def infer_freq(index, warn=True):
      
      import pandas as pd
  
      if isinstance(index, ABCSeries):
          values = index._values
          if not (is_datetime64_dtype(values) or
                  is_timedelta64_dtype(values) or
                  values.dtype == object):
              raise TypeError("cannot infer freq from a non-convertible dtype "
                              "on a Series of {dtype}".format(dtype=index.dtype))
          index = values
  
      if is_period_arraylike(index):
          raise TypeError("PeriodIndex given. Check the `freq` attribute "
                          "instead of using infer_freq.")
      elif is_timedelta64_dtype(index):
          # Allow TimedeltaIndex and TimedeltaArray
          inferer = _TimedeltaFrequencyInferer(index, warn=warn)
          return inferer.get_freq()
  
      if isinstance(index, pd.Index) and not isinstance(index, pd.DatetimeIndex):
          if isinstance(index, (pd.Int64Index, pd.Float64Index)):
              raise TypeError("cannot infer freq from a non-convertible index "
                              "type {type}".format(type=type(index)))
          index = index.values
  
      if not isinstance(index, pd.DatetimeIndex):
          try:
              index = pd.DatetimeIndex(index)
          except AmbiguousTimeError:
              index = pd.DatetimeIndex(index.asi8)
  
      inferer = _FrequencyInferer(index, warn=warn)
      return inferer.get_freq()
docs: Infer the most likely frequency given the input index. If the frequency is
      uncertain, a warning will be printed.
  
      Parameters
      ----------
      index : DatetimeIndex or TimedeltaIndex
        if passed a Series will use the values of the series (NOT THE INDEX)
      warn : boolean, default True
  
      Returns
      -------
      str or None
          None if no discernible frequency
          TypeError if the index is not datetime-like
          ValueError if there are less than three values.