Compare commits

..

2 commits

Author SHA1 Message Date
Edward Betts 964bbb1162 Split market hiding into function with config flag 2024-06-15 20:35:47 +01:00
Edward Betts 6c76610cdb Add type hints 2024-06-15 20:35:25 +01:00

View file

@ -97,8 +97,8 @@ def find_events_during_stay(
async def time_function( async def time_function(
name: str, name: str,
func: typing.Callable[..., typing.Coroutine[typing.Any, typing.Any, typing.Any]], func: typing.Callable[..., typing.Coroutine[typing.Any, typing.Any, typing.Any]],
*args, *args: typing.Any,
**kwargs, **kwargs: typing.Any,
) -> tuple[str, typing.Any, float, Exception | None]: ) -> tuple[str, typing.Any, float, Exception | None]:
"""Time the execution of an asynchronous function.""" """Time the execution of an asynchronous function."""
start_time, result, exception = time(), None, None start_time, result, exception = time(), None, None
@ -110,6 +110,24 @@ async def time_function(
return name, result, end_time - start_time, exception return name, result, end_time - start_time, exception
def hide_markets_while_away(
events: list[Event], accommodation_events: list[Event]
) -> None:
"""Hide markets that happen while away."""
optional = [
e
for e in events
if e.name == "market" or (e.title and "LHG Run Club" in e.title)
]
going = [e for e in events if e.going]
overlapping_markets = find_events_during_stay(
accommodation_events + going, optional
)
for market in overlapping_markets:
events.remove(market)
async def get_data( async def get_data(
now: datetime, config: flask.config.Config now: datetime, config: flask.config.Config
) -> typing.Mapping[str, str | object]: ) -> typing.Mapping[str, str | object]:
@ -210,19 +228,8 @@ async def get_data(
events += hn.whoishiring(last_year, next_year) events += hn.whoishiring(last_year, next_year)
events += carnival.rio_carnival_events(last_year, next_year) events += carnival.rio_carnival_events(last_year, next_year)
# hide markets that happen while away if config["HIDE_MARKETS_WHILE_AWAY"]:
optional = [ hide_markets_while_away(events, accommodation_events)
e
for e in events
if e.name == "market" or (e.title and "LHG Run Club" in e.title)
]
going = [e for e in events if e.going]
overlapping_markets = find_events_during_stay(
accommodation_events + going, optional
)
for market in overlapping_markets:
events.remove(market)
for launch in rockets: for launch in rockets:
dt = None dt = None