|
|
|
""" |
|
Test script to verify FRED API key functionality |
|
""" |
|
|
|
from fredapi import Fred |
|
import sys |
|
import os |
|
sys.path.append(os.path.join(os.path.dirname(__file__), '..')) |
|
|
|
from config.settings import FRED_API_KEY |
|
|
|
def test_api_connection(): |
|
"""Test the FRED API connection with the provided key.""" |
|
print("Testing FRED API connection...") |
|
|
|
try: |
|
|
|
fred = Fred(api_key=FRED_API_KEY) |
|
|
|
|
|
print("Fetching GDP data as a test...") |
|
gdp_data = fred.get_series('GDP', start='2023-01-01', end='2023-12-31') |
|
|
|
if not gdp_data.empty: |
|
print("β API connection successful!") |
|
print(f"β Retrieved {len(gdp_data)} GDP observations") |
|
print(f"β Latest GDP value: ${gdp_data.iloc[-1]:,.2f} billion") |
|
print(f"β Date range: {gdp_data.index.min()} to {gdp_data.index.max()}") |
|
return True |
|
else: |
|
print("β No data retrieved") |
|
return False |
|
|
|
except Exception as e: |
|
print(f"β API connection failed: {e}") |
|
return False |
|
|
|
def test_series_info(): |
|
"""Test getting series information.""" |
|
print("\nTesting series information retrieval...") |
|
|
|
try: |
|
fred = Fred(api_key=FRED_API_KEY) |
|
|
|
|
|
series_info = fred.get_series_info('GDP') |
|
|
|
print("β Series information retrieved successfully!") |
|
print(f" Title: {series_info.title}") |
|
print(f" Units: {series_info.units}") |
|
print(f" Frequency: {series_info.frequency}") |
|
print(f" Last Updated: {series_info.last_updated}") |
|
|
|
return True |
|
|
|
except Exception as e: |
|
print(f"β Failed to get series info: {e}") |
|
return False |
|
|
|
def main(): |
|
"""Run API tests.""" |
|
print("FRED API Key Test") |
|
print("=" * 30) |
|
print(f"API Key: {FRED_API_KEY[:8]}...") |
|
print() |
|
|
|
|
|
connection_ok = test_api_connection() |
|
|
|
|
|
info_ok = test_series_info() |
|
|
|
print("\n" + "=" * 30) |
|
if connection_ok and info_ok: |
|
print("β All tests passed! Your API key is working correctly.") |
|
print("You can now use the FRED data collector tool.") |
|
else: |
|
print("β Some tests failed. Please check your API key.") |
|
|
|
return connection_ok and info_ok |
|
|
|
if __name__ == "__main__": |
|
main() |