code: def diff_custom_calendar_timedeltas(start, end, freq):
      
      if not isinstance(freq, (Day, BusinessDay, CustomBusinessDay)):
          raise ValueError("freq must be Day, BusinessDay or CustomBusinessDay")
  
      weekmask = getattr(freq, 'weekmask', None)
      holidays = getattr(freq, 'holidays', None)
  
      if weekmask is None and holidays is None:
          if isinstance(freq, Day):
              weekmask = 'Mon Tue Wed Thu Fri Sat Sun'
              holidays = []
          elif isinstance(freq, BusinessDay):
              weekmask = 'Mon Tue Wed Thu Fri'
              holidays = []
  
      if weekmask is not None and holidays is not None:
          # we prefer this method as it is faster
          actual_days = np.busday_count(np.array(start).astype('datetime64[D]'),
                                        np.array(end).astype('datetime64[D]'),
                                        weekmask, holidays)
      else:
          # default, it is slow
          actual_days = pd.date_range(start, end, freq=freq).shape[0] - 1
          if not freq.onOffset(start):
              actual_days -= 1
  
      timediff = end - start
      delta_days = timediff.components.days - actual_days
      return timediff - pd.Timedelta(days=delta_days)
docs: Compute the difference between two pd.Timedelta taking into consideration
      custom frequency, which is used to deal with custom calendars, such as a
      trading calendar
  
      Parameters
      ----------
      start : pd.Timestamp
      end : pd.Timestamp
      freq : CustomBusinessDay (see infer_trading_calendar)
      freq : pd.DataOffset (CustomBusinessDay, Day or BDay)
  
      Returns
      -------
      pd.Timedelta
          end - start