| | |
| | """ |
| | Lineage Graph Extractor - Setup Test Script |
| | |
| | This script tests your local setup to ensure everything is configured correctly. |
| | |
| | Usage: |
| | python test_setup.py |
| | """ |
| |
|
| | import os |
| | import sys |
| | from pathlib import Path |
| |
|
| | def test_python_version(): |
| | """Test Python version""" |
| | print("Testing Python version...") |
| | version = sys.version_info |
| | if version.major >= 3 and version.minor >= 9: |
| | print(f"β Python {version.major}.{version.minor}.{version.micro} (OK)") |
| | return True |
| | else: |
| | print(f"β Python {version.major}.{version.minor}.{version.micro} (Need 3.9+)") |
| | return False |
| |
|
| | def test_dependencies(): |
| | """Test if required dependencies are installed""" |
| | print("\nTesting dependencies...") |
| | |
| | dependencies = { |
| | "anthropic": "Anthropic API client", |
| | "dotenv": "Environment variable loader (python-dotenv)" |
| | } |
| | |
| | all_installed = True |
| | for module, description in dependencies.items(): |
| | try: |
| | if module == "dotenv": |
| | __import__("dotenv") |
| | else: |
| | __import__(module) |
| | print(f"β {description}") |
| | except ImportError: |
| | print(f"β {description} (not installed)") |
| | all_installed = False |
| | |
| | if not all_installed: |
| | print("\nInstall missing dependencies with:") |
| | print(" pip install -r requirements.txt") |
| | |
| | return all_installed |
| |
|
| | def test_env_file(): |
| | """Test if .env file exists and has required variables""" |
| | print("\nTesting environment configuration...") |
| | |
| | if not Path(".env").exists(): |
| | print("β .env file not found") |
| | print(" Copy .env.example to .env and add your API keys") |
| | return False |
| | |
| | print("β .env file exists") |
| | |
| | |
| | try: |
| | from dotenv import load_dotenv |
| | load_dotenv() |
| | |
| | api_key = os.getenv("ANTHROPIC_API_KEY") |
| | if not api_key or api_key == "your_anthropic_api_key_here": |
| | print("β ANTHROPIC_API_KEY not set or still has default value") |
| | print(" Edit .env and add your actual Anthropic API key") |
| | return False |
| | |
| | print("β ANTHROPIC_API_KEY is set") |
| | return True |
| | except Exception as e: |
| | print(f"β Error loading .env: {e}") |
| | return False |
| |
|
| | def test_agent_files(): |
| | """Test if agent configuration files exist""" |
| | print("\nTesting agent configuration files...") |
| | |
| | required_files = [ |
| | "memories/agent.md", |
| | "memories/tools.json", |
| | "memories/subagents/metadata_parser/agent.md", |
| | "memories/subagents/metadata_parser/tools.json", |
| | "memories/subagents/graph_visualizer/agent.md", |
| | "memories/subagents/graph_visualizer/tools.json" |
| | ] |
| | |
| | all_exist = True |
| | for file_path in required_files: |
| | if Path(file_path).exists(): |
| | print(f"β {file_path}") |
| | else: |
| | print(f"β {file_path} (missing)") |
| | all_exist = False |
| | |
| | return all_exist |
| |
|
| | def test_api_connection(): |
| | """Test connection to Anthropic API""" |
| | print("\nTesting Anthropic API connection...") |
| | |
| | try: |
| | from anthropic import Anthropic |
| | from dotenv import load_dotenv |
| | |
| | load_dotenv() |
| | |
| | api_key = os.getenv("ANTHROPIC_API_KEY") |
| | if not api_key: |
| | print("β API key not found") |
| | return False |
| | |
| | client = Anthropic(api_key=api_key) |
| | |
| | |
| | response = client.messages.create( |
| | model="claude-3-5-sonnet-20241022", |
| | max_tokens=100, |
| | messages=[{ |
| | "role": "user", |
| | "content": "Hello" |
| | }] |
| | ) |
| | |
| | print("β API connection successful") |
| | print(f" Model: {response.model}") |
| | print(f" Response: {response.content[0].text[:50]}...") |
| | return True |
| | |
| | except Exception as e: |
| | print(f"β API connection failed: {e}") |
| | return False |
| |
|
| | def test_agent_functionality(): |
| | """Test basic agent functionality""" |
| | print("\nTesting agent functionality...") |
| | |
| | try: |
| | from anthropic import Anthropic |
| | from dotenv import load_dotenv |
| | |
| | load_dotenv() |
| | |
| | client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY")) |
| | |
| | |
| | with open("memories/agent.md", "r") as f: |
| | system_prompt = f.read() |
| | |
| | print("β Agent configuration loaded") |
| | |
| | |
| | response = client.messages.create( |
| | model="claude-3-5-sonnet-20241022", |
| | max_tokens=500, |
| | system=system_prompt, |
| | messages=[{ |
| | "role": "user", |
| | "content": "What types of metadata sources can you extract lineage from?" |
| | }] |
| | ) |
| | |
| | print("β Agent responds correctly") |
| | print(f" Response preview: {response.content[0].text[:100]}...") |
| | return True |
| | |
| | except Exception as e: |
| | print(f"β Agent test failed: {e}") |
| | return False |
| |
|
| | def main(): |
| | """Run all tests""" |
| | print("=" * 60) |
| | print("Lineage Graph Extractor - Setup Test") |
| | print("=" * 60) |
| | |
| | results = { |
| | "Python version": test_python_version(), |
| | "Dependencies": test_dependencies(), |
| | "Environment file": test_env_file(), |
| | "Agent files": test_agent_files(), |
| | "API connection": test_api_connection(), |
| | "Agent functionality": test_agent_functionality() |
| | } |
| | |
| | print("\n" + "=" * 60) |
| | print("Test Summary") |
| | print("=" * 60) |
| | |
| | for test_name, passed in results.items(): |
| | status = "β PASS" if passed else "β FAIL" |
| | print(f"{test_name:.<40} {status}") |
| | |
| | all_passed = all(results.values()) |
| | |
| | print("\n" + "=" * 60) |
| | if all_passed: |
| | print("β All tests passed! Your setup is ready.") |
| | print("\nNext steps:") |
| | print(" 1. Try the integration example: python integration_example.py") |
| | print(" 2. Read the README.md for usage examples") |
| | print(" 3. Extract your first lineage!") |
| | else: |
| | print("β Some tests failed. Please fix the issues above.") |
| | print("\nCommon fixes:") |
| | print(" - Install dependencies: pip install -r requirements.txt") |
| | print(" - Copy .env.example to .env and add your API key") |
| | print(" - Verify all files are present") |
| | print("=" * 60) |
| | |
| | return 0 if all_passed else 1 |
| |
|
| | if __name__ == "__main__": |
| | sys.exit(main()) |
| |
|
| |
|