import os
import logging
import json
import boto3
from datetime import datetime
from typing import Dict, Any

# Initialize logger
logger = logging.getLogger(__name__)

# Initialize Rekognition client
rekognition_client = boto3.client('rekognition')

def check_training_job_status(project_arn: str, version_name: str) -> Dict[str, Any]:
    """
    Check the status of a training job.
    
    Args:
        project_arn: The project ARN
        version_name: The version name to check
        
    Returns:
        Dictionary containing status information
    """
    try:
        # Get version details
        response = rekognition_client.describe_project_versions(
            ProjectArn=project_arn,
            VersionNames=[version_name]
        )
        
        if not response['ProjectVersionDescriptions']:
            raise ValueError(f"Version {version_name} not found")
            
        version_info = response['ProjectVersionDescriptions'][0]
        
        # Extract relevant information
        status_info = {
            'version_name': version_name,
            'status': version_info.get('Status'),
            'status_message': version_info.get('StatusMessage'),
            'created': version_info.get('CreationTimestamp'),
            'evaluation': version_info.get('EvaluationResults', {})
        }
        
        logger.info(f"Training status for {version_name}: {status_info['status']}")
        if status_info['status_message']:
            logger.info(f"Status message: {status_info['status_message']}")
            
        return status_info
        
    except Exception as e:
        logger.error(f"Error checking training status: {str(e)}")
        raise 