stocks / test_sec_integration.py
alx-d's picture
Upload folder using huggingface_hub
61c1bca verified
#!/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()