from faker import Faker import random from datetime import datetime, timedelta fake = Faker() def generate_transaction(): transaction_types = ["deposit", "withdrawal", "transfer", "payment"] transaction_type = random.choice(transaction_types) amount = round(random.uniform(10, 5000), 2) date = fake.date_time_between(start_date="-1y", end_date="now") return { "transaction_id": fake.uuid4(), "date": date.isoformat(), "type": transaction_type, "amount": amount, "currency": fake.currency_code(), "description": fake.bs(), "account_number": fake.bban(), "merchant": fake.company() if transaction_type in ["payment", "withdrawal"] else None, "category": fake.word(ext_word_list=["food", "transport", "entertainment", "utilities", "shopping"]) if transaction_type != "transfer" else None, "balance_after": round(random.uniform(100, 10000), 2) } # Generate 10 transactions transactions = [generate_transaction() for _ in range(10)] # Sort transactions by date transactions.sort(key=lambda x: x['date']) # Print the generated transactions for transaction in transactions: print(f"Date: {transaction['date']}") print(f"Type: {transaction['type'].capitalize()}") print(f"Amount: {transaction['amount']} {transaction['currency']}") print(f"Description: {transaction['description']}") if transaction['merchant']: print(f"Merchant: {transaction['merchant']}") if transaction['category']: print(f"Category: {transaction['category']}") print(f"Balance After: {transaction['balance_after']} {transaction['currency']}") print("---")