class_docstr: HolidayCalendar implementation.
  
  Requires the calendar to be bounded. Constructs tables of precomputed values
  of interest for each day in the calendar, which enables better performance
  compared to a more flexible UnboundedHolidayCalendar.
  
  Each instance should be used in the context of only one graph. E.g. one can't
  create a BoundedHolidayCalendar in one tf.function and reuse it in another.
class_docstr_tok: ["HolidayCalendar","implementation",".","Requires","the","calendar","to","be","bounded",".","Constructs","tables","of","precomputed","values","of","interest","for","each","day","in","the","calendar",",","which","enables","better","performance","compared","to","a","more","flexible","UnboundedHolidayCalendar",".","Each","instance","should","be","used","in","the","context","of","only","one","graph",".","E.g",".","one","can't","create","a","BoundedHolidayCalendar","in","one","tf.function","and","reuse","it","in","another","."]
code: def _compute_rolled_dates_table_without_cache(self, convention):
      is_bus_day = self._compute_is_bus_day_table()
      cumul_bus_days = self._compute_cumul_bus_days_table()
      bus_day_ordinals = self._compute_bus_day_ordinals_table()
  
      if convention == constants.BusinessDayConvention.FOLLOWING:
          return tf.gather(bus_day_ordinals, cumul_bus_days)
  
      if convention == constants.BusinessDayConvention.PRECEDING:
          return tf.gather(
              bus_day_ordinals, cumul_bus_days - (1 - is_bus_day)
          )
  
      following = self._compute_rolled_dates_table(
          constants.BusinessDayConvention.FOLLOWING
      )
      preceding = self._compute_rolled_dates_table(
          constants.BusinessDayConvention.PRECEDING
      )
      dates_following = dt.from_ordinals(following)
      dates_preceding = dt.from_ordinals(preceding)
      original_dates = dt.from_ordinals(
          tf.range(
              self._ordinal_offset - 1,
              self._ordinal_offset + self._calendar_size + 1,
          )
      )
  
      if (
          convention
          == constants.BusinessDayConvention.MODIFIED_FOLLOWING
      ):
          return tf.where(
              tf.equal(dates_following.month(), original_dates.month()),
              following,
              preceding,
          )
  
      if (
          convention
          == constants.BusinessDayConvention.MODIFIED_PRECEDING
      ):
          return tf.where(
              tf.equal(dates_preceding.month(), original_dates.month()),
              preceding,
              following,
          )
  
      raise ValueError("Unrecognized convention: {}".format(convention))
  
imports: import attr
  import tensorflow.compat.v2
  from tf_quant_finance.datetime import constants
  from tf_quant_finance.datetime import date_tensor
  from tf_quant_finance.datetime import holiday_calendar
  from tf_quant_finance.datetime import periods
label_desc: Use image node_id 11 for calling the BoundedHolidayCalendar obj's underlying member method code with example usage: obj._compute_rolled_dates_table_without_cache(convention) and returns: tf, tf, tf, tf