diff options
Diffstat (limited to 'trade_queue.py')
-rw-r--r-- | trade_queue.py | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/trade_queue.py b/trade_queue.py index 8890ec2..de5471d 100644 --- a/trade_queue.py +++ b/trade_queue.py @@ -15,20 +15,23 @@ 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) + return len(self.__queue) + + def get_copy(self) -> List[Trade]: + return [t for t in 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}.") @@ -55,7 +58,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: @@ -67,7 +70,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 @@ -78,7 +81,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}") |