summaryrefslogtreecommitdiff
path: root/trade_queue.py
diff options
context:
space:
mode:
authoruvok2025-04-17 11:20:01 +0200
committeruvok2025-04-17 11:20:01 +0200
commitecea606533550d8d53a65daa6eeef583788448f4 (patch)
tree6ad17761e9ddede12da40e638d6f0d917ed3e4c4 /trade_queue.py
parent5ed67c88b608a3ee10381635fcff799eebbfc201 (diff)
Enforce use of Decimal, formatting
Diffstat (limited to 'trade_queue.py')
-rw-r--r--trade_queue.py18
1 files changed, 13 insertions, 5 deletions
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}")