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