diff options
Diffstat (limited to 'trade_queue.py')
-rw-r--r-- | trade_queue.py | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/trade_queue.py b/trade_queue.py index 9cae560..c7e5537 100644 --- a/trade_queue.py +++ b/trade_queue.py @@ -15,17 +15,20 @@ class FIFOQueue: Will track trades. """ def __init__(self) -> None: - self.queue: Deque[Trade] = deque() + 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) def add(self, amount: float | Decimal, total_cost: float | Decimal, date: str) -> None: """ Add a trade to the queue. """ trade = Trade(amount, total_cost, date) - self.queue.append(trade) + self._queue.append(trade) self._cache_valid = False logger.info(f"Added trade: {trade}.") @@ -52,7 +55,7 @@ class FIFOQueue: entries: List[Trade] = [] while remaining > 0: - trade = self.queue[0] + trade = self._queue[0] logger.debug(f"Processing trade: {trade}") if trade.amount > remaining: @@ -64,7 +67,7 @@ class FIFOQueue: else: remaining -= trade.amount entries.append(trade) - self.queue.popleft() + self._queue.popleft() logger.info(f"Removed full trade: {trade}. Remaining coins to remove: {remaining}") return entries @@ -75,7 +78,7 @@ 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}") |