|
1 |
| -from datetime import date, datetime, timedelta |
| 1 | +from datetime import date, datetime, time as dt_time, timedelta |
2 | 2 | import functools
|
3 | 3 | import operator
|
4 |
| -from typing import Optional |
| 4 | +from typing import List, Optional |
5 | 5 |
|
6 | 6 | from dateutil.easter import easter
|
7 | 7 | import numpy as np
|
@@ -577,6 +577,9 @@ def onOffset(self, dt):
|
577 | 577 |
|
578 | 578 |
|
579 | 579 | class BusinessHourMixin(BusinessMixin):
|
| 580 | + start: List[dt_time] |
| 581 | + end: List[dt_time] |
| 582 | + n: int |
580 | 583 |
|
581 | 584 | def __init__(self, start='09:00', end='17:00', offset=timedelta(0)):
|
582 | 585 | # must be validated here to equality check
|
@@ -717,16 +720,15 @@ def _prev_opening_time(self, other: datetime) -> datetime:
|
717 | 720 | """
|
718 | 721 | return self._next_opening_time(other, sign=-1)
|
719 | 722 |
|
720 |
| - def _get_business_hours_by_sec(self, start: datetime, end: datetime |
721 |
| - ) -> int: |
| 723 | + def _get_business_hours_by_sec(self, start: dt_time, end: dt_time) -> int: |
722 | 724 | """
|
723 | 725 | Return business hours in a day by seconds.
|
724 | 726 | """
|
725 | 727 | # create dummy datetime to calculate businesshours in a day
|
726 | 728 | dtstart = datetime(2014, 4, 1, start.hour, start.minute)
|
727 | 729 | day = 1 if start < end else 2
|
728 | 730 | until = datetime(2014, 4, day, end.hour, end.minute)
|
729 |
| - return (until - dtstart).total_seconds() |
| 731 | + return int((until - dtstart).total_seconds()) |
730 | 732 |
|
731 | 733 | @apply_wraps
|
732 | 734 | def rollback(self, dt: datetime) -> datetime:
|
@@ -771,6 +773,7 @@ def _get_closing_time(self, dt: datetime) -> datetime:
|
771 | 773 | if st.hour == dt.hour and st.minute == dt.minute:
|
772 | 774 | return dt + timedelta(
|
773 | 775 | seconds=self._get_business_hours_by_sec(st, self.end[i]))
|
| 776 | + assert False |
774 | 777 |
|
775 | 778 | @apply_wraps
|
776 | 779 | def apply(self, other):
|
|
0 commit comments