From ecea606533550d8d53a65daa6eeef583788448f4 Mon Sep 17 00:00:00 2001 From: uvok Date: Thu, 17 Apr 2025 11:20:01 +0200 Subject: Enforce use of Decimal, formatting --- trade_queue.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'trade_queue.py') diff --git a/trade_queue.py b/trade_queue.py index a0dfc47..dcc9725 100644 --- a/trade_queue.py +++ b/trade_queue.py @@ -7,18 +7,20 @@ from trade import Trade # Set up a dedicated logger for FIFOQueue logger = logging.getLogger(__name__) + class FIFOQueue: """ Crypto trading FIFO queue. Will track trades. """ + def __init__(self) -> None: self.__queue: Deque[Trade] = deque() self._cached_total: Decimal = Decimal(0) self._cache_valid: bool = True logger.info("FIFOQueue initialized with empty queue.") - + def __len__(self) -> int: return len(self.__queue) @@ -28,7 +30,7 @@ class FIFOQueue: """ return [t for t in self.__queue] - def add(self, amount: float | Decimal, total_cost: float | Decimal, date: str) -> None: + def add(self, amount: Decimal, total_cost: Decimal, date: str) -> None: """ Add a trade to the queue. """ @@ -50,7 +52,9 @@ class FIFOQueue: if amount > self.get_remaining_amount(): logger.error(f"Insufficient assets to process sale of {amount}.") - raise ValueError(f"Insufficient assets in queue to process sale of {amount}.") + raise ValueError( + f"Insufficient assets in queue to process sale of {amount}." + ) logger.debug(f"Removing {amount:.2f} coins from the queue.") logger.info("Cache invalidated before removing coins.") @@ -73,7 +77,9 @@ class FIFOQueue: remaining -= trade.amount entries.append(trade) self.__queue.popleft() - logger.info(f"Removed full trade: {trade}. Remaining coins to remove: {remaining}") + logger.info( + f"Removed full trade: {trade}. Remaining coins to remove: {remaining}" + ) return entries @@ -83,7 +89,9 @@ class FIFOQueue: """ if not self._cache_valid: logger.debug("Cache invalid, recalculating remaining amount.") - self._cached_total = sum((trade.amount for trade in self.__queue), Decimal(0)) + self._cached_total = sum( + (trade.amount for trade in self.__queue), Decimal(0) + ) self._cache_valid = True logger.info(f"Cache recalculated: {self._cached_total:.2f}") -- cgit v1.2.3