cryptodatapy.extract.adapters.vendors.coinmetrics_adapter
Attributes
Classes
Adapter class for retrieving data from CoinMetrics API. |
Module Contents
- cryptodatapy.extract.adapters.vendors.coinmetrics_adapter.logger
- class cryptodatapy.extract.adapters.vendors.coinmetrics_adapter.CoinMetricsAdapter(config: Dict[str, Any] | None = None)
Bases:
cryptodatapy.extract.adapters.base_adapter.BaseAPIAdapterAdapter class for retrieving data from CoinMetrics API. Implements the BaseAdapter contract via BaseAPIAdapter.
- ENDPOINT_MAP
- client
- assets: pandas.DataFrame | list | None = None
- fields: pandas.DataFrame | None = None
- markets: pandas.DataFrame | list | None = None
- exchanges: pandas.DataFrame | list | None = None
- indexes: pandas.DataFrame | list | None = None
- _fetch_raw_meta(info_type: str, **kwargs) Dict[str, Any]
Helper method to fetch raw metadata (assets, markets, fields, exchanges, etc.)
- Parameters:
info_type (str) – The type of metadata to fetch (e.g., ‘assets’, ‘markets’, ‘fields’, ‘exchanges’, ‘indexes’, etc).
kwwargs (additional keyword arguments to pass to the CoinMetrics client method.)
- Returns:
The raw metadata response from CoinMetrics API.
- Return type:
Dict[str, Any]
- get_exchanges_info(as_list: bool = False) pandas.DataFrame | list
Gets info for available exchanges and returns a standardized DataFrame or list.
- Parameters:
as_list (bool, optional) – If True, returns a list of exchange names instead of a DataFrame. Defaults to False.
- Returns:
DataFrame or list containing exchange metadata.
- Return type:
Union[pd.DataFrame, list]
- get_indexes_info(as_list: bool = False) pandas.DataFrame | list
Gets info for available indexes and returns a standardized DataFrame or list.
- Parameters:
as_list (bool, optional) – If True, returns a list of index names instead of a DataFrame. Defaults to False.
- Returns:
DataFrame or list containing index metadata.
- Return type:
Union[pd.DataFrame, list]
- get_assets_info(as_list: bool = False) pandas.DataFrame | list
Gets info for available assets and returns a standardized DataFrame or list.
- Parameters:
as_list (bool, optional) – If True, returns a list of asset tickers instead of a DataFrame. Defaults to False.
- Returns:
DataFrame or list containing asset metadata.
- Return type:
Union[pd.DataFrame, list]
- get_markets_info(exchange: str, as_list: bool = False) pandas.DataFrame | list
Gets info for available markets and returns a standardized DataFrame or list.
- Parameters:
exchange (str) – The exchange for which to fetch market information.
as_list (bool, optional) – If True, returns a list of market names instead of a DataFrame. Defaults to False.
- Returns:
DataFrame or list containing market metadata.
- Return type:
Union[pd.DataFrame, list]
- get_fields_info(as_list: bool = False) pandas.DataFrame | list
Gets info for available on-chain fields and returns a standardized DataFrame.
- Returns:
DataFrame containing on-chain field metadata.
- Return type:
pd.DataFrame
- get_available_fields(as_list: bool = False) pandas.DataFrame | list
Gets a list of available asset tickers from CoinMetrics.
- Returns:
List of available asset tickers.
- Return type:
List[str]
- get_rate_limit_info() Any | None
Gets and updates the number of API calls made and remaining.
- Returns:
Rate limit information if available.
- Return type:
Optional[Any]
- _fetch_all_raw_data(pause: float, endpoint: str, params: Dict[str, str | int | float]) pandas.DataFrame
Internal method to handle the API request, including fetching all pages (pagination), with an indeterminate progress bar.
- Parameters:
pause (float) – Time to pause between API requests to respect rate limits.
endpoint (str) – API endpoint to target (e.g., ‘/timeseries/market-candles’).
params (Dict[str, Union[str, int, float]]) – Converted query parameters for the initial API request.
- Returns:
df – DataFrame with all raw time series data combined.
- Return type:
pd.DataFrame
- _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) and determines the endpoint based on the request’s data type.
- Parameters:
data_req (DataRequest) – The standardized data request object.
- Returns:
Vendor-specific parameters for the API request, including the ‘endpoint’ key.
- Return type:
Dict[str, Any]
- _fetch_raw_data(data_req: cryptodatapy.core.data_request.DataRequest, vendor_params: Dict[str, Any]) pandas.DataFrame
EXTRACT: Submits the vendor-specific parameters to the API and returns the raw response.
- Parameters:
data_req (DataRequest) – The standardized data request object (needed for ‘pause’ value).
vendor_params (Dict[str, Any]) – Vendor-specific parameters, including the ‘endpoint’ key retrieved from the conversion step.
- Returns:
Raw data response from CoinMetrics API.
- Return type:
pd.DataFrame
- _transform_raw_response(data_req: cryptodatapy.core.data_request.DataRequest, raw_data: pandas.DataFrame) pandas.DataFrame
TRANSFORM: Processes the raw data response into the package’s standardized tidy DataFrame format.
- Parameters:
data_req (DataRequest) – The standardized data request object.
raw_data (pd.DataFrame) – Raw data response from CoinMetrics API.
- Returns:
Tidy DataFrame containing the requested time series data.
- Return type:
pd.DataFrame
- 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 inherited from the BaseAPIAdapter.
- Parameters:
data_req (DataRequest) – The standardized data request object.
- Returns:
A DataFrame containing the requested time series data.
- Return type:
pd.DataFrame