code: def _encode_datetime_with_cftime(dates, units, calendar):
      
      cftime = _import_cftime()
  
      if np.issubdtype(dates.dtype, np.datetime64):
          # numpy's broken datetime conversion only works for us precision
          dates = dates.astype('M8[us]').astype(datetime)
  
      def encode_datetime(d):
          return np.nan if d is None else cftime.date2num(d, units, calendar)
  
      return np.vectorize(encode_datetime)(dates)
docs: Fallback method for encoding dates using cftime.
  
      This method is more flexible than xarray's parsing using datetime64[ns]
      arrays but also slower because it loops over each element.