Once and for all reformat.
Will be using black code formatter
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user