code: def iterbusinessdays(self, d1, d2):
          
          assert d2 >= d1
          if d1.date() == d2.date() and d2.time() < self.business_hours[0]:
              return
          first = True
          for dt in self.iterdays(d1, d2):
              if first and d1.time() > self.business_hours[1]:
                  first = False
                  continue
              first = False
              if not self.isweekend(dt) and not self.isholiday(dt):
                  yield dt
docs: Date iterator returning dates in d1 <= x < d2, excluding weekends and holidays