Once and for all reformat.

Will be using black code formatter
This commit is contained in:
2024-12-08 17:07:26 -08:00
parent 3a06464c29
commit 34badf17eb
25 changed files with 359 additions and 295 deletions

View File

@@ -9,14 +9,16 @@ from token_bot.token_database.region import Region
class History:
def __init__(self, flavor: Flavor, region: Region):
self._flavor : Flavor = flavor
self._region : Region = region
self._history : List[Tuple[datetime, int]] = []
self._last_price_movement : int = 0
self._latest_price_datum : Tuple[datetime.datetime, int] | None = None
self._update_triggers : List[UpdateTrigger] = []
self._flavor: Flavor = flavor
self._region: Region = region
self._history: List[Tuple[datetime, int]] = []
self._last_price_movement: int = 0
self._latest_price_datum: Tuple[datetime.datetime, int] | None = None
self._update_triggers: List[UpdateTrigger] = []
for alert_type in AlertType:
self._update_triggers.append(UpdateTrigger(Alert(alert_type, flavor, self._region)))
self._update_triggers.append(
UpdateTrigger(Alert(alert_type, flavor, self._region))
)
@property
def flavor(self) -> Flavor:
@@ -58,5 +60,3 @@ class History:
if trigger.alert == alert:
return trigger
raise ValueError

View File

@@ -9,23 +9,31 @@ from token_bot.token_database.region import Region
class HistoryManager:
HIGH_FIDELITY_PERIOD = '72h'
HIGH_FIDELITY_PERIOD = "72h"
def __init__(self, token_db: tdb.Database):
self._history : Dict[Flavor, Dict[Region, History]] = {}
self._tdb : tdb.Database = token_db
self._history: Dict[Flavor, Dict[Region, History]] = {}
self._tdb: tdb.Database = token_db
for flavor in Flavor:
self._history[flavor] = {}
for region in Region:
self._history[flavor][Region(region)] = History(flavor, Region(region))
async def _retrieve_data(self, flavor: Flavor, region: Region) -> List[Tuple[datetime.datetime, int]]:
high_fidelity_time = datetime.datetime.now(tz=datetime.UTC) - datetime.timedelta(hours=72)
async def _retrieve_data(
self, flavor: Flavor, region: Region
) -> List[Tuple[datetime.datetime, int]]:
high_fidelity_time = datetime.datetime.now(
tz=datetime.UTC
) - datetime.timedelta(hours=72)
all_history = await self._tdb.history(flavor, region)
high_fidelity_history = await self._tdb.history(flavor, region, self.HIGH_FIDELITY_PERIOD)
high_fidelity_history = await self._tdb.history(
flavor, region, self.HIGH_FIDELITY_PERIOD
)
final_response = []
def _convert_to_datetime(data: Tuple[str, int]) -> Tuple[datetime.datetime, int]:
def _convert_to_datetime(
data: Tuple[str, int]
) -> Tuple[datetime.datetime, int]:
return datetime.datetime.fromisoformat(data[0]), data[1]
for data_point in all_history:
@@ -33,11 +41,12 @@ class HistoryManager:
if datetime_tuple[0] < high_fidelity_time:
final_response.append(datetime_tuple)
final_response.extend(_convert_to_datetime(data_point) for data_point in high_fidelity_history)
final_response.extend(
_convert_to_datetime(data_point) for data_point in high_fidelity_history
)
return final_response
async def load_data(self):
for flavor in Flavor:
for r in Region:
@@ -48,19 +57,17 @@ class HistoryManager:
await history.add_price(item)
self._history[flavor][region] = history
async def update_data(self, flavor: Flavor, region: Region) -> List[Alert]:
history = self._history[flavor][region]
current_price_data = await self._tdb.current(flavor)
current_region_data = current_price_data[region.value.lower()]
datum = (
datetime.datetime.fromisoformat(current_region_data[0]),
current_region_data[1]
current_region_data[1],
)
if datum != history.last_price_datum:
return await history.add_price(datum)
return []
def get_history(self, flavor, region) -> History:
return self._history[flavor][region]

View File

@@ -8,10 +8,10 @@ from token_bot.token_database.flavor import Flavor
class UpdateTrigger:
def __init__(self, alert: Alert):
self._alert : Alert = alert
self._last_trigger : Tuple[datetime.datetime, int] | None = None
self._alert: Alert = alert
self._last_trigger: Tuple[datetime.datetime, int] | None = None
self._last_alerting: Tuple[datetime.datetime, int] | None = None
self._squelched : bool = False
self._squelched: bool = False
@property
def alert(self) -> Alert:
@@ -29,20 +29,35 @@ class UpdateTrigger:
def squelched(self):
return self._squelched
def _find_next_trigger(self, comparison_operator: Callable, starting_point: datetime.datetime, history: List[Tuple[datetime.datetime, int]]):
candidate_datum : Tuple[datetime.datetime, int] | None = None
def _find_next_trigger(
self,
comparison_operator: Callable,
starting_point: datetime.datetime,
history: List[Tuple[datetime.datetime, int]],
):
candidate_datum: Tuple[datetime.datetime, int] | None = None
for datum in history:
if datum[0] > starting_point and datum != history[-1]:
if candidate_datum is None or comparison_operator(datum[1], candidate_datum[1]):
if candidate_datum is None or comparison_operator(
datum[1], candidate_datum[1]
):
candidate_datum = datum
self._last_trigger = candidate_datum
def check_and_update(self, new_datum: Tuple[datetime.datetime, int], history: List[Tuple[datetime.datetime, int]]) -> bool:
def check_and_update(
self,
new_datum: Tuple[datetime.datetime, int],
history: List[Tuple[datetime.datetime, int]],
) -> bool:
match self.alert.flavor:
case Flavor.RETAIL:
start_time = datetime.datetime.fromisoformat('2020-11-15 00:00:01.000000000+00:00')
start_time = datetime.datetime.fromisoformat(
"2020-11-15 00:00:01.000000000+00:00"
)
case Flavor.CLASSIC:
start_time = datetime.datetime.fromisoformat('2023-05-23 00:00:01.000000000+00:00')
start_time = datetime.datetime.fromisoformat(
"2023-05-23 00:00:01.000000000+00:00"
)
case _:
raise NotImplementedError