cryptodatapy.extract.adapters.base_adapter

Classes

BaseAdapter

The Universal Adapter Interface (Abstract Base Class).

BaseAPIAdapter

Specialized base class for vendors using external HTTP APIs (e.g., DefiLlama).

BaseLibraryAdapter

Refactored Base for Library Wrappers.

BaseWebAdapter

Specialized base class for vendors that scrape web data (e.g., HTML, XML).

Module Contents

class cryptodatapy.extract.adapters.base_adapter.BaseAdapter(config: Dict[str, Any] | None = None)

Bases: 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).

_config
abstractmethod get_data(request: Any) pandas.DataFrame

Fetch primary time series data based on the request.

abstractmethod get_assets_info(as_list: bool = False, **kwargs) pandas.DataFrame | list

Fetch canonical asset metadata (e.g., protocols, chains, tickers).

abstractmethod get_fields_info(as_list: bool = False, **kwargs) pandas.DataFrame | list

Fetch available field/metric definitions.

class cryptodatapy.extract.adapters.base_adapter.BaseAPIAdapter(config: Dict[str, Any] | None = None)

Bases: 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).

_base_url
_api_key
_api_endpoints
abstractmethod get_rate_limit_info() Any | None

Gets and updates the number of API calls made and remaining.

abstractmethod _convert_params_to_vendor(data_req: cryptodatapy.core.data_request.DataRequest) Dict[str, Any]

CONVERT: Converts the DataRequest object into the vendor’s specific API parameters (URL/payload).

abstractmethod _fetch_raw_data(vendor_params: Dict[str, Any]) Dict[str, Any] | List[Dict[str, Any]]

EXTRACT: Submits the vendor-specific parameters to the API and returns the raw response.

abstractmethod _transform_raw_response(data_req: cryptodatapy.core.data_request.DataRequest, raw_data: Any) pandas.DataFrame

TRANSFORM: Processes the raw data response into the package’s standardized tidy DataFrame format.

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.

class cryptodatapy.extract.adapters.base_adapter.BaseLibraryAdapter(config: Dict[str, Any] | None = None)

Bases: BaseAdapter

Refactored Base for Library Wrappers. Focuses on client management and bridging sync/async execution.

_client = None
abstractmethod _init_client(**kwargs) Any

Logic to instantiate the library’s client object.

abstractmethod get_rate_limit_info() Any | None
abstractmethod get_markets_info(as_list: bool = False, **kwargs) pandas.DataFrame | list
abstractmethod _convert_params_to_vendor(data_req: cryptodatapy.core.data_request.DataRequest) Dict[str, Any]
abstractmethod _fetch_raw_data(vendor_params: Dict[str, Any]) Any
abstractmethod _transform_raw_response(data_req: cryptodatapy.core.data_request.DataRequest, raw_data: Any) pandas.DataFrame
get_data(data_req: cryptodatapy.core.data_request.DataRequest) pandas.DataFrame

The Template Method for library-based data retrieval.

class cryptodatapy.extract.adapters.base_adapter.BaseWebAdapter(config: Dict[str, Any] | None = None)

Bases: BaseAdapter

Specialized base class for vendors that scrape web data (e.g., HTML, XML). Implements common logic for session management and anti-bot measures.