parent
cc47762e9d
commit
592710a28c
|
@ -214,14 +214,31 @@ def stock_markets() -> list[str]:
|
||||||
return reply
|
return reply
|
||||||
|
|
||||||
|
|
||||||
def get_us_holidays(input_date: date) -> list[Event]:
|
def get_us_holidays(start_date: date, end_date: date) -> list[Event]:
|
||||||
"""Date and name of next US holiday."""
|
"""Date and name of next US holiday."""
|
||||||
hols = holidays.UnitedStates(years=[input_date.year, input_date.year + 1])
|
found: list[Event] = []
|
||||||
return [
|
for year in range(start_date.year, end_date.year + 1):
|
||||||
Event(name="us_holiday", date=hol_date, title=title)
|
hols = holidays.UnitedStates(years=year)
|
||||||
for hol_date, title in sorted(hols.items())
|
found += [
|
||||||
if hol_date >= input_date
|
Event(name="us_holiday", date=hol_date, title=title)
|
||||||
]
|
for hol_date, title in hols.items()
|
||||||
|
if start_date < hol_date < end_date
|
||||||
|
]
|
||||||
|
|
||||||
|
extra = []
|
||||||
|
for e in found:
|
||||||
|
if e.title != "Thanksgiving":
|
||||||
|
continue
|
||||||
|
extra += [
|
||||||
|
Event(
|
||||||
|
name="us_holiday", date=e.date + timedelta(days=1), title="Black Friday"
|
||||||
|
),
|
||||||
|
Event(
|
||||||
|
name="us_holiday", date=e.date + timedelta(days=4), title="Cyber Monday"
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
|
return found + extra
|
||||||
|
|
||||||
|
|
||||||
def critical_mass(start_date: date, limit: int = 12) -> list[Event]:
|
def critical_mass(start_date: date, limit: int = 12) -> list[Event]:
|
||||||
|
@ -321,7 +338,7 @@ async def get_data(now: datetime) -> typing.Mapping[str, str | object]:
|
||||||
"gbpusd": gbpusd,
|
"gbpusd": gbpusd,
|
||||||
"next_economist": economist.next_pub_date(today),
|
"next_economist": economist.next_pub_date(today),
|
||||||
"bank_holiday": bank_holiday,
|
"bank_holiday": bank_holiday,
|
||||||
"us_holiday": get_us_holidays(today),
|
"us_holiday": get_us_holidays(last_year, next_year),
|
||||||
"next_us_presidential_election": next_us_presidential_election,
|
"next_us_presidential_election": next_us_presidential_election,
|
||||||
"stock_markets": stock_markets(),
|
"stock_markets": stock_markets(),
|
||||||
"uk_clock_change": timezone_transition(
|
"uk_clock_change": timezone_transition(
|
||||||
|
|
Loading…
Reference in a new issue