cryptodatapy.extract.adapters.vendors.coinmetrics_adapter

Attributes

logger

Classes

CoinMetricsAdapter

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.BaseAPIAdapter

Adapter 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