code: def infer_trading_calendar(factor_idx, prices_idx):
      
      full_idx = factor_idx.union(prices_idx)
  
      traded_weekdays = []
      holidays = []
  
      days_of_the_week = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
      for day, day_str in enumerate(days_of_the_week):
  
          weekday_mask = (full_idx.dayofweek == day)
  
          # drop days of the week that are not traded at all
          if not weekday_mask.any():
              continue
          traded_weekdays.append(day_str)
  
          # look for holidays
          used_weekdays = full_idx[weekday_mask].normalize()
          all_weekdays = pd.date_range(full_idx.min(), full_idx.max(),
                                       freq=CustomBusinessDay(weekmask=day_str)
                                       ).normalize()
          _holidays = all_weekdays.difference(used_weekdays)
          _holidays = [timestamp.date() for timestamp in _holidays]
          holidays.extend(_holidays)
  
      traded_weekdays = ' '.join(traded_weekdays)
      return CustomBusinessDay(weekmask=traded_weekdays, holidays=holidays)
docs: Infer the trading calendar from factor and price information.
  
      Parameters
      ----------
      factor_idx : pd.DatetimeIndex
          The factor datetimes for which we are computing the forward returns
      prices_idx : pd.DatetimeIndex
          The prices datetimes associated withthe factor data
  
      Returns
      -------
      calendar : pd.DateOffset