Source code for src.data.providers.base
"""Abstract base class for data providers."""
from abc import ABC, abstractmethod
from typing import Dict, Any, List
from datetime import datetime
[docs]
class DataProvider(ABC):
"""Abstract base class for trend data providers."""
[docs]
@abstractmethod
def fetch_trends(
self,
queries: List[str],
geo: str,
date_range: str,
**kwargs
) -> Dict[str, Any]:
"""
Fetch trend data for given queries.
Args:
queries: List of search queries
geo: Geographic region code
date_range: Date range specification
**kwargs: Additional provider-specific parameters
Returns:
Raw trend data dictionary
Raises:
APIError: If API request fails
"""
pass
[docs]
@abstractmethod
def validate_connection(self) -> bool:
"""
Validate API connection and credentials.
Returns:
True if connection is valid
Raises:
APIError: If validation fails
"""
pass