cryptodatapy.extract.adapters.base_adapter ========================================== .. py:module:: cryptodatapy.extract.adapters.base_adapter Classes ------- .. autoapisummary:: cryptodatapy.extract.adapters.base_adapter.BaseAdapter cryptodatapy.extract.adapters.base_adapter.BaseAPIAdapter cryptodatapy.extract.adapters.base_adapter.BaseLibraryAdapter cryptodatapy.extract.adapters.base_adapter.BaseWebAdapter Module Contents --------------- .. py:class:: BaseAdapter(config: Optional[Dict[str, Any]] = None) Bases: :py:obj:`abc.ABC` The Universal Adapter Interface (Abstract Base Class). All concrete adapter types must inherit from this and implement the abstract methods (e.g., get_data, metadata methods). .. py:attribute:: _config .. py:method:: get_data(request: Any) -> pandas.DataFrame :abstractmethod: Fetch primary time series data based on the request. .. py:method:: get_assets_info(as_list: bool = False, **kwargs) -> Union[pandas.DataFrame, list] :abstractmethod: Fetch canonical asset metadata (e.g., protocols, chains, tickers). .. py:method:: get_fields_info(as_list: bool = False, **kwargs) -> Union[pandas.DataFrame, list] :abstractmethod: Fetch available field/metric definitions. .. py:class:: BaseAPIAdapter(config: Optional[Dict[str, Any]] = None) Bases: :py:obj:`BaseAdapter` Specialized base class for vendors using external HTTP APIs (e.g., DefiLlama). Implements common API-specific logic (e.g., base URL, API key handling). .. py:attribute:: _base_url .. py:attribute:: _api_key .. py:attribute:: _api_endpoints .. py:method:: get_rate_limit_info() -> Optional[Any] :abstractmethod: Gets and updates the number of API calls made and remaining. .. py:method:: _convert_params_to_vendor(data_req: cryptodatapy.core.data_request.DataRequest) -> Dict[str, Any] :abstractmethod: CONVERT: Converts the DataRequest object into the vendor's specific API parameters (URL/payload). .. py:method:: _fetch_raw_data(vendor_params: Dict[str, Any]) -> Union[Dict[str, Any], List[Dict[str, Any]]] :abstractmethod: EXTRACT: Submits the vendor-specific parameters to the API and returns the raw response. .. py:method:: _transform_raw_response(data_req: cryptodatapy.core.data_request.DataRequest, raw_data: Any) -> pandas.DataFrame :abstractmethod: TRANSFORM: Processes the raw data response into the package's standardized tidy DataFrame format. .. py:method:: get_data(data_req: cryptodatapy.core.data_request.DataRequest) -> pandas.DataFrame Executes the full ETL cycle: convert parameters, fetch raw data, and transform into tidy DataFrame. This method acts as the Template Method for the data retrieval process. .. py:class:: BaseLibraryAdapter(config: Optional[Dict[str, Any]] = None) Bases: :py:obj:`BaseAdapter` Refactored Base for Library Wrappers. Focuses on client management and bridging sync/async execution. .. py:attribute:: _client :value: None .. py:method:: _init_client(**kwargs) -> Any :abstractmethod: Logic to instantiate the library's client object. .. py:method:: get_rate_limit_info() -> Optional[Any] :abstractmethod: .. py:method:: get_markets_info(as_list: bool = False, **kwargs) -> Union[pandas.DataFrame, list] :abstractmethod: .. py:method:: _convert_params_to_vendor(data_req: cryptodatapy.core.data_request.DataRequest) -> Dict[str, Any] :abstractmethod: .. py:method:: _fetch_raw_data(vendor_params: Dict[str, Any]) -> Any :abstractmethod: .. py:method:: _transform_raw_response(data_req: cryptodatapy.core.data_request.DataRequest, raw_data: Any) -> pandas.DataFrame :abstractmethod: .. py:method:: get_data(data_req: cryptodatapy.core.data_request.DataRequest) -> pandas.DataFrame The Template Method for library-based data retrieval. .. py:class:: BaseWebAdapter(config: Optional[Dict[str, Any]] = None) Bases: :py:obj:`BaseAdapter` Specialized base class for vendors that scrape web data (e.g., HTML, XML). Implements common logic for session management and anti-bot measures.