summaryrefslogtreecommitdiff
path: root/trade_queue.py
diff options
context:
space:
mode:
Diffstat (limited to 'trade_queue.py')
-rw-r--r--trade_queue.py15
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}")