#!/usr/bin/env python3 """ Test script for SEC EDGAR integration This script tests the SEC API functionality without running the full Gradio interface """ import sys import os # Add the current directory to Python path sys.path.append(os.path.dirname(os.path.abspath(__file__))) from gradio_stock_dashboard import SECEdgarAPI, CompanyInfo, StockDashboard def test_sec_api(): """Test basic SEC API functionality""" print("๐Ÿงช Testing SEC EDGAR API Integration...") print("=" * 50) # Test SEC API class sec_api = SECEdgarAPI() print("โœ“ SEC API class initialized") # Test company info for a known company test_ticker = "AAPL" print(f"\n๐Ÿ“ฑ Testing company info for {test_ticker}...") company_info = CompanyInfo(test_ticker) cik = company_info.get_cik_from_ticker() if cik: print(f"โœ“ Found CIK: {cik}") print(f"โœ“ Company Name: {company_info.company_name}") # Test SEC filings retrieval print(f"\n๐Ÿ“„ Testing SEC filings retrieval for {test_ticker}...") filings = company_info.fetch_sec_filings(sec_api) if filings: print(f"โœ“ Found {len(filings)} filings") print("Sample filings:") for i, filing in enumerate(filings[:3]): # Show first 3 print(f" {i+1}. {filing.get('form', 'Unknown')} - {filing.get('filingDate', 'Unknown')}") if filing.get('filingUrl'): print(f" URL: {filing['filingUrl']}") else: print("โš  No filings found") # Test financial metrics print(f"\n๐Ÿ’ฐ Testing financial metrics for {test_ticker}...") dashboard = StockDashboard() metrics, status = dashboard.get_key_financial_metrics(test_ticker) if metrics: print(f"โœ“ Found {len(metrics)} financial metrics") for metric_name, metric_data in metrics.items(): value = metric_data.get('value', 'N/A') date = metric_data.get('date', 'Unknown') print(f" {metric_name}: {value} (as of {date})") else: print(f"โš  No financial metrics found: {status}") else: print(f"โœ— Could not find CIK for {test_ticker}") print("\n" + "=" * 50) print("๐ŸŽฏ Test completed!") def test_multiple_companies(): """Test SEC functionality with multiple companies""" print("\n๐Ÿงช Testing Multiple Companies...") print("=" * 50) dashboard = StockDashboard() test_tickers = ["AAPL", "MSFT", "GOOGL"] print(f"Testing SEC filings for: {', '.join(test_tickers)}") # Test SEC filings filings, status = dashboard.get_sec_filings_for_companies(test_tickers) print(f"\n๐Ÿ“„ SEC Filings: {status}") if filings: print(f"Total filings found: {len(filings)}") # Group by company by_company = {} for filing in filings: ticker = filing.get('ticker', 'Unknown') if ticker not in by_company: by_company[ticker] = [] by_company[ticker].append(filing) for ticker, company_filings in by_company.items(): print(f"\n{ticker}: {len(company_filings)} filings") for filing in company_filings[:2]: # Show first 2 per company print(f" - {filing.get('form', 'Unknown')} ({filing.get('filingDate', 'Unknown')})") # Test financial metrics print(f"\n๐Ÿ’ฐ Testing Financial Metrics...") metrics_table, status = dashboard.create_financial_metrics_table(test_tickers) print(f"Financial Metrics: {status}") print("\n" + "=" * 50) print("๐ŸŽฏ Multiple companies test completed!") if __name__ == "__main__": try: test_sec_api() test_multiple_companies() print("\nโœ… All tests completed successfully!") except Exception as e: print(f"\nโŒ Test failed with error: {e}") import traceback traceback.print_exc()