code: def get_next_invalid_time_from_t(self, timestamp):
          # pylint: disable=too-many-branches
          
          timestamp = int(timestamp)
          original_t = timestamp
  
          dr_mins = []
          for daterange in self.dateranges:
              timestamp = original_t
              cont = True
              while cont:
                  start = daterange.get_next_valid_time_from_t(timestamp)
                  if start is not None:
                      end = daterange.get_next_invalid_time_from_t(start)
                      dr_mins.append((start, end))
                      timestamp = end
                  else:
                      cont = False
                  if timestamp > original_t + (3600 * 24 * 365):
                      cont = False
          periods = merge_periods(dr_mins)
  
          # manage exclude periods
          dr_mins = []
          for exclude in self.exclude:
              for daterange in exclude.dateranges:
                  timestamp = original_t
                  cont = True
                  while cont:
                      start = daterange.get_next_valid_time_from_t(timestamp)
                      if start is not None:
                          end = daterange.get_next_invalid_time_from_t(start)
                          dr_mins.append((start, end))
                          timestamp = end
                      else:
                          cont = False
                      if timestamp > original_t + (3600 * 24 * 365):
                          cont = False
          if not dr_mins:
              periods_exclude = []
          else:
              periods_exclude = merge_periods(dr_mins)
  
          if len(periods) >= 1:
              # if first valid period is after original timestamp, the first invalid time
              # is the original timestamp
              if periods[0][0] > original_t:
                  return original_t
              # check the first period + first period of exclude
              if len(periods_exclude) >= 1:
                  if periods_exclude[0][0] < periods[0][1]:
                      return periods_exclude[0][0]
              return periods[0][1]
          return original_t
docs: Get the next invalid time
  
          :param timestamp: timestamp in seconds (of course)
          :type timestamp: int or float
          :return: timestamp of next invalid time
          :rtype: int or float