diff options
| -rw-r--r-- | bla.py | 28 | 
1 files changed, 18 insertions, 10 deletions
@@ -2,6 +2,15 @@ import csv  from collections import defaultdict, deque  from datetime import datetime +class Trade: +    def __init__(self, amount, total_cost, date): +        self.amount = amount +        self.total_cost = total_cost +        self.date = date + +    def __repr__(self): +        return f"Trade(amount={self.amount}, total_cost={self.total_cost}, date={self.date})" +  class FIFOQueue:      """      Crypto trading FIFO queue. @@ -13,10 +22,10 @@ class FIFOQueue:      def add(self, amount, total_cost, date):          """ -        Add trade to queue. +        Add a trade to the queue.          """ - -        self.queue.append((amount, total_cost, date)) +        trade = Trade(amount, total_cost, date) +        self.queue.append(trade)      def remove(self, amount):          """ @@ -33,19 +42,18 @@ class FIFOQueue:              if not self.queue:                  raise ValueError(f"Insufficient assets in queue to process sale of {amount}.") -            quantity, total_cost, date = self.queue[0] -            if quantity > remaining: -                self.queue[0] = (quantity - remaining, total_cost, date) -                entries.append((remaining, total_cost, date)) +            trade = self.queue[0] +            if trade.amount > remaining: +                trade.amount -= remaining +                entries.append(Trade(remaining, trade.total_cost, trade.date))                  remaining = 0              else: -                remaining -= quantity -                entries.append((quantity, total_cost, date)) +                remaining -= trade.amount +                entries.append(trade)                  self.queue.popleft()          return entries -  def generate_report(sale_entries, proceeds, crypto_asset, date_sold):      report = []      sell_date = datetime.strptime(date_sold, "%Y-%m-%d").strftime("%d.%m.%Y")  | 
