summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-05 07:08:12 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-05 07:08:12 +0000
commit3785294c2fbd207cdc6cee5279bd9323c049fe66 (patch)
tree7af33e6cf747dc56c561ee45b410e5ba461eeeed
parentfdecd5ccbdaf86e31e45c6fd71338af7dcfde1d8 (diff)
automatic import of python-coinmetrics-api-clientopeneuler20.03
-rw-r--r--.gitignore1
-rw-r--r--python-coinmetrics-api-client.spec405
-rw-r--r--sources1
3 files changed, 407 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..6017973 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/coinmetrics_api_client-2023.5.2.20.tar.gz
diff --git a/python-coinmetrics-api-client.spec b/python-coinmetrics-api-client.spec
new file mode 100644
index 0000000..7135494
--- /dev/null
+++ b/python-coinmetrics-api-client.spec
@@ -0,0 +1,405 @@
+%global _empty_manifest_terminate_build 0
+Name: python-coinmetrics-api-client
+Version: 2023.5.2.20
+Release: 1
+Summary: Python client for Coin Metrics API v4.
+License: MIT
+URL: https://coinmetrics.github.io/api-client-python/site/index.html
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/41/0c/2136c231b13d6fc2a9db0c37a6754a669f2b002072980af8b3694ba1cc14/coinmetrics_api_client-2023.5.2.20.tar.gz
+BuildArch: noarch
+
+Requires: python3-orjson
+Requires: python3-requests
+Requires: python3-pandas
+Requires: python3-websocket-client
+Requires: python3-dateutil
+Requires: python3-typer
+
+%description
+ 0 asset 1 non-null object
+ 1 time 1 non-null datetime64[ns]
+ 2 ReferenceRateUSD 1 non-null float64
+dtypes: datetime64[ns](1), float64(1), object(1)
+memory usage: 152.0+ bytes
+```
+Note that in order to pass a custom datetime object, setting a dtype_mapper is mandatory.
+Pandas type conversion tends to be more performant. But if there are custom operations that must be done using numpy datatypes, this option will let you perform them.
+### Exporting to csv and json files:
+You can also easily export timeseries data to csv and json files with builtin functions on the `DataCollection` type.
+For example this script will export Coinbase btc and eth trades for a date to csv and json files respectively:
+```python
+ start_date = datetime.date(year=2022, month=1, day=1)
+ end_date = datetime.datetime(year=2022, month=1, day=1)
+ market_trades_btc = client.get_market_trades(page_size=1000, markets="coinbase-btc-usd-spot", start_time=start_date, end_time=end_date)
+ market_trades_btc.export_to_csv("jan_1_2022_coinbase_btc_trades.csv")
+ market_trades_eth = client.get_market_trades(page_size=1000, markets="coinbase-eth-usd-spot", start_time=start_date, end_time=end_date)
+ market_trades_eth.export_to_json("jan_1_2022_coinbase_eth.json")
+```
+### Paging
+You can make the datapoints to iterate from start (default) or from end.
+for that you should use a paging_from argument like the following:
+```
+from coinmetrics.api_client import CoinMetricsClient
+from coinmetrics.constants import PagingFrom
+client = CoinMetricsClient()
+for metric_data in client.get_asset_metrics(assets='btc', metrics=['ReferenceRateUSD'],
+ paging_from=PagingFrom.START):
+ print(metric_data)
+```
+PagingFrom.END: is available but by default it will page from the start.
+### Debugging the API Client
+There are two additional options for the API Client - `debug_mode` and `verbose`. These two options log network calls
+to the console, and in the case of `debug_mode` it will generate a log file of all the network requests and the time
+it takes to call them. These tools can be used to diagnose issues in your code and also to get a better understanding
+of request times so that users can write more performant code. For example, running the below code:
+```python
+import os
+from coinmetrics.api_client import CoinMetricsClient
+api_key = os.environ['CM_API_KEY']
+if __name__ == '__main__':
+ client = CoinMetricsClient(api_key=api_key, debug_mode=True)
+ reference_rates_example = client.get_asset_metrics(assets=['btc', 'algo', 'eth'], metrics=['ReferenceRateUSD'])
+ for data in reference_rates_example:
+ continue
+```
+The console output will look like:
+```commandline
+[DEBUG] 2023-01-09 11:01:02,044 - Starting API Client debugging session. logging to stdout and cm_api_client_debug_2023_01_09_11_01_02.txt
+[DEBUG] 2023-01-09 11:01:02,044 - Using coinmetrics version 2022.11.14.16
+[DEBUG] 2023-01-09 11:01:02,044 - Current state of API Client, excluding API KEY: {'_verify_ssl_certs': True, '_api_base_url': 'https://api.coinmetrics.io/v4', '_ws_api_base_url': 'wss://api.coinmetrics.io/v4', '_http_header': {'Api-Client-Version': '2022.11.14.16'}, '_proxies': {'http': None, 'https': None}, 'debug_mode': True, 'verbose': False}
+[DEBUG] 2023-01-09 11:01:02,044 - Attempting to call url: timeseries/asset-metrics with params: {'assets': ['btc', 'algo', 'eth'], 'metrics': ['ReferenceRateUSD'], 'frequency': None, 'page_size': None, 'paging_from': 'start', 'start_time': None, 'end_time': None, 'start_height': None, 'end_height': None, 'start_inclusive': None, 'end_inclusive': None, 'timezone': None, 'sort': None, 'limit_per_asset': None}
+[DEBUG] 2023-01-09 11:01:02,387 - Response status code: 200 for url: https://api.coinmetrics.io/v4/timeseries/asset-metrics?api_key=[REDACTED]&assets=btc%2Calgo%2Ceth&metrics=ReferenceRateUSD&paging_from=start took: 0:00:00.342874 response body size (bytes): 9832
+[DEBUG] 2023-01-09 11:01:02,388 - Attempting to call url: timeseries/asset-metrics with params: {'assets': ['btc', 'algo', 'eth'], 'metrics': ['ReferenceRateUSD'], 'frequency': None, 'page_size': None, 'paging_from': 'start', 'start_time': None, 'end_time': None, 'start_height': None, 'end_height': None, 'start_inclusive': None, 'end_inclusive': None, 'timezone': None, 'sort': None, 'limit_per_asset': None, 'next_page_token': '0.MjAxOS0wOS0zMFQwMDowMDowMFo'}
+[DEBUG] 2023-01-09 11:01:02,559 - Response status code: 200 for url: https://api.coinmetrics.io/v4/timeseries/asset-metrics?api_key=[REDACTED]&assets=btc%2Calgo%2Ceth&metrics=ReferenceRateUSD&paging_from=start&next_page_token=0.MjAxOS0wOS0zMFQwMDowMDowMFo took: 0:00:00.171487 response body size (bytes): 9857
+```
+Then it can be easier to understand what network calls the API Client is making, and where any issues may exist. If you
+wish to dig even deeper, you may consider modifying the `_send_request()` method of the API Client to log additional
+data about the state of your environment, or anything else that would help diagnose issues. You will notice a log file
+generated in the format `cm_api_client_debug_2023_01_09_11_01_02.txt`. This log file might be helpful for your own use
+or to give more context if you are working with Coin Metrics customer success.
+### SSL Certs verification
+Sometimes your organization network have special rules on SSL certs verification and in this case you might face the
+following error when running the script:
+```text
+SSLError: HTTPSConnectionPool(host='api.coinmetrics.io', port=443): Max retries exceeded with url: <some_url_path> (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1123)')))
+```
+In this case, you can pass an option during client initialization to disable ssl verification for requests like this:
+```python
+client = CoinMetricsClient(verify_ssl_certs=False)
+```
+We don't recommend setting it to False by default and you should make sure you understand the security risks of disabling SSL certs verification.
+Additionally, you may choose to specify the path to the SSL certificates on your machine. This may cause errors where
+Python is unable to locate the certificates on your machine, particularly when using Python virtual environments.
+```python
+from coinmetrics.api_client import CoinMetricsClient
+SSL_CERT_LOCATION = '/Users/<USER_NAME>/Library/Python/3.8/lib/python/site-packages/certifi/cacert.pem'
+client = CoinMetricsClient(verify_ssl_certs=SSL_CERT_LOCATION)
+```
+A quick way to find the certs on your machine is:
+`python3 -c "import requests; print(requests.certs.where())"`
+And note that this will change based on whether or not you are using a [Python virtual environment or not](https://realpython.com/python-virtual-environments-a-primer/)
+### Installing and running coinmetrics package and other python packages behind a secure python network
+Related to SSL Certs verification, you may have trouble installing and updating PyPi packages to your local environment.
+So you may need to choose the best solution for your company and environment - either using package managers or
+installing offline.
+#### Installing using package managers
+Full instructions for setting up your environment to use conda, pip, yarn, npm, etc. can be [found here](https://medium.com/@iffi33/dealing-with-ssl-authentication-on-a-secure-corporate-network-pip-conda-git-npm-yarn-bower-73e5b93fd4b2).
+Additionally, a workaround to disable SSL verification when installing a trusted Python package is this:
+```commandline
+pip install --trusted-host pypi.python.org <packagename>
+```
+Although it is important to make sure you understand the risks associated with disabling SSL verification and ensure
+compliance with company policies.
+#### Installing Python packages locally/ offline
+It may be easier to download and install the package locally. Steps:
+1. Download the files for the [Coin Metrics API Client from PyPi](https://pypi.org/project/coinmetrics-api-client/#files)
+2. [Install it locally](https://packaging.python.org/en/latest/tutorials/installing-packages/#installing-from-local-archives)
+### Requests Proxy
+Sometimes your organization has special rules on making requests to third parties and you have to use proxies in order to comply with the rules.
+For proxies that don't require auth you can specify them similar to this example:
+```python
+client = CoinMetricsClient(proxy_url=f'http://<hostname>:<port>')
+```
+For proxies that require auth, you should be able to specify username and password similar to this example:
+```python
+client = CoinMetricsClient(proxy_url=f'http://<username>:<password>@<hostname>:<port>')
+```
+## Extended documentation
+For more information about the available methods in the client please reference [API Client Spec](https://coinmetrics.github.io/api-client-python/site/api_client.html)
+
+%package -n python3-coinmetrics-api-client
+Summary: Python client for Coin Metrics API v4.
+Provides: python-coinmetrics-api-client
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-coinmetrics-api-client
+ 0 asset 1 non-null object
+ 1 time 1 non-null datetime64[ns]
+ 2 ReferenceRateUSD 1 non-null float64
+dtypes: datetime64[ns](1), float64(1), object(1)
+memory usage: 152.0+ bytes
+```
+Note that in order to pass a custom datetime object, setting a dtype_mapper is mandatory.
+Pandas type conversion tends to be more performant. But if there are custom operations that must be done using numpy datatypes, this option will let you perform them.
+### Exporting to csv and json files:
+You can also easily export timeseries data to csv and json files with builtin functions on the `DataCollection` type.
+For example this script will export Coinbase btc and eth trades for a date to csv and json files respectively:
+```python
+ start_date = datetime.date(year=2022, month=1, day=1)
+ end_date = datetime.datetime(year=2022, month=1, day=1)
+ market_trades_btc = client.get_market_trades(page_size=1000, markets="coinbase-btc-usd-spot", start_time=start_date, end_time=end_date)
+ market_trades_btc.export_to_csv("jan_1_2022_coinbase_btc_trades.csv")
+ market_trades_eth = client.get_market_trades(page_size=1000, markets="coinbase-eth-usd-spot", start_time=start_date, end_time=end_date)
+ market_trades_eth.export_to_json("jan_1_2022_coinbase_eth.json")
+```
+### Paging
+You can make the datapoints to iterate from start (default) or from end.
+for that you should use a paging_from argument like the following:
+```
+from coinmetrics.api_client import CoinMetricsClient
+from coinmetrics.constants import PagingFrom
+client = CoinMetricsClient()
+for metric_data in client.get_asset_metrics(assets='btc', metrics=['ReferenceRateUSD'],
+ paging_from=PagingFrom.START):
+ print(metric_data)
+```
+PagingFrom.END: is available but by default it will page from the start.
+### Debugging the API Client
+There are two additional options for the API Client - `debug_mode` and `verbose`. These two options log network calls
+to the console, and in the case of `debug_mode` it will generate a log file of all the network requests and the time
+it takes to call them. These tools can be used to diagnose issues in your code and also to get a better understanding
+of request times so that users can write more performant code. For example, running the below code:
+```python
+import os
+from coinmetrics.api_client import CoinMetricsClient
+api_key = os.environ['CM_API_KEY']
+if __name__ == '__main__':
+ client = CoinMetricsClient(api_key=api_key, debug_mode=True)
+ reference_rates_example = client.get_asset_metrics(assets=['btc', 'algo', 'eth'], metrics=['ReferenceRateUSD'])
+ for data in reference_rates_example:
+ continue
+```
+The console output will look like:
+```commandline
+[DEBUG] 2023-01-09 11:01:02,044 - Starting API Client debugging session. logging to stdout and cm_api_client_debug_2023_01_09_11_01_02.txt
+[DEBUG] 2023-01-09 11:01:02,044 - Using coinmetrics version 2022.11.14.16
+[DEBUG] 2023-01-09 11:01:02,044 - Current state of API Client, excluding API KEY: {'_verify_ssl_certs': True, '_api_base_url': 'https://api.coinmetrics.io/v4', '_ws_api_base_url': 'wss://api.coinmetrics.io/v4', '_http_header': {'Api-Client-Version': '2022.11.14.16'}, '_proxies': {'http': None, 'https': None}, 'debug_mode': True, 'verbose': False}
+[DEBUG] 2023-01-09 11:01:02,044 - Attempting to call url: timeseries/asset-metrics with params: {'assets': ['btc', 'algo', 'eth'], 'metrics': ['ReferenceRateUSD'], 'frequency': None, 'page_size': None, 'paging_from': 'start', 'start_time': None, 'end_time': None, 'start_height': None, 'end_height': None, 'start_inclusive': None, 'end_inclusive': None, 'timezone': None, 'sort': None, 'limit_per_asset': None}
+[DEBUG] 2023-01-09 11:01:02,387 - Response status code: 200 for url: https://api.coinmetrics.io/v4/timeseries/asset-metrics?api_key=[REDACTED]&assets=btc%2Calgo%2Ceth&metrics=ReferenceRateUSD&paging_from=start took: 0:00:00.342874 response body size (bytes): 9832
+[DEBUG] 2023-01-09 11:01:02,388 - Attempting to call url: timeseries/asset-metrics with params: {'assets': ['btc', 'algo', 'eth'], 'metrics': ['ReferenceRateUSD'], 'frequency': None, 'page_size': None, 'paging_from': 'start', 'start_time': None, 'end_time': None, 'start_height': None, 'end_height': None, 'start_inclusive': None, 'end_inclusive': None, 'timezone': None, 'sort': None, 'limit_per_asset': None, 'next_page_token': '0.MjAxOS0wOS0zMFQwMDowMDowMFo'}
+[DEBUG] 2023-01-09 11:01:02,559 - Response status code: 200 for url: https://api.coinmetrics.io/v4/timeseries/asset-metrics?api_key=[REDACTED]&assets=btc%2Calgo%2Ceth&metrics=ReferenceRateUSD&paging_from=start&next_page_token=0.MjAxOS0wOS0zMFQwMDowMDowMFo took: 0:00:00.171487 response body size (bytes): 9857
+```
+Then it can be easier to understand what network calls the API Client is making, and where any issues may exist. If you
+wish to dig even deeper, you may consider modifying the `_send_request()` method of the API Client to log additional
+data about the state of your environment, or anything else that would help diagnose issues. You will notice a log file
+generated in the format `cm_api_client_debug_2023_01_09_11_01_02.txt`. This log file might be helpful for your own use
+or to give more context if you are working with Coin Metrics customer success.
+### SSL Certs verification
+Sometimes your organization network have special rules on SSL certs verification and in this case you might face the
+following error when running the script:
+```text
+SSLError: HTTPSConnectionPool(host='api.coinmetrics.io', port=443): Max retries exceeded with url: <some_url_path> (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1123)')))
+```
+In this case, you can pass an option during client initialization to disable ssl verification for requests like this:
+```python
+client = CoinMetricsClient(verify_ssl_certs=False)
+```
+We don't recommend setting it to False by default and you should make sure you understand the security risks of disabling SSL certs verification.
+Additionally, you may choose to specify the path to the SSL certificates on your machine. This may cause errors where
+Python is unable to locate the certificates on your machine, particularly when using Python virtual environments.
+```python
+from coinmetrics.api_client import CoinMetricsClient
+SSL_CERT_LOCATION = '/Users/<USER_NAME>/Library/Python/3.8/lib/python/site-packages/certifi/cacert.pem'
+client = CoinMetricsClient(verify_ssl_certs=SSL_CERT_LOCATION)
+```
+A quick way to find the certs on your machine is:
+`python3 -c "import requests; print(requests.certs.where())"`
+And note that this will change based on whether or not you are using a [Python virtual environment or not](https://realpython.com/python-virtual-environments-a-primer/)
+### Installing and running coinmetrics package and other python packages behind a secure python network
+Related to SSL Certs verification, you may have trouble installing and updating PyPi packages to your local environment.
+So you may need to choose the best solution for your company and environment - either using package managers or
+installing offline.
+#### Installing using package managers
+Full instructions for setting up your environment to use conda, pip, yarn, npm, etc. can be [found here](https://medium.com/@iffi33/dealing-with-ssl-authentication-on-a-secure-corporate-network-pip-conda-git-npm-yarn-bower-73e5b93fd4b2).
+Additionally, a workaround to disable SSL verification when installing a trusted Python package is this:
+```commandline
+pip install --trusted-host pypi.python.org <packagename>
+```
+Although it is important to make sure you understand the risks associated with disabling SSL verification and ensure
+compliance with company policies.
+#### Installing Python packages locally/ offline
+It may be easier to download and install the package locally. Steps:
+1. Download the files for the [Coin Metrics API Client from PyPi](https://pypi.org/project/coinmetrics-api-client/#files)
+2. [Install it locally](https://packaging.python.org/en/latest/tutorials/installing-packages/#installing-from-local-archives)
+### Requests Proxy
+Sometimes your organization has special rules on making requests to third parties and you have to use proxies in order to comply with the rules.
+For proxies that don't require auth you can specify them similar to this example:
+```python
+client = CoinMetricsClient(proxy_url=f'http://<hostname>:<port>')
+```
+For proxies that require auth, you should be able to specify username and password similar to this example:
+```python
+client = CoinMetricsClient(proxy_url=f'http://<username>:<password>@<hostname>:<port>')
+```
+## Extended documentation
+For more information about the available methods in the client please reference [API Client Spec](https://coinmetrics.github.io/api-client-python/site/api_client.html)
+
+%package help
+Summary: Development documents and examples for coinmetrics-api-client
+Provides: python3-coinmetrics-api-client-doc
+%description help
+ 0 asset 1 non-null object
+ 1 time 1 non-null datetime64[ns]
+ 2 ReferenceRateUSD 1 non-null float64
+dtypes: datetime64[ns](1), float64(1), object(1)
+memory usage: 152.0+ bytes
+```
+Note that in order to pass a custom datetime object, setting a dtype_mapper is mandatory.
+Pandas type conversion tends to be more performant. But if there are custom operations that must be done using numpy datatypes, this option will let you perform them.
+### Exporting to csv and json files:
+You can also easily export timeseries data to csv and json files with builtin functions on the `DataCollection` type.
+For example this script will export Coinbase btc and eth trades for a date to csv and json files respectively:
+```python
+ start_date = datetime.date(year=2022, month=1, day=1)
+ end_date = datetime.datetime(year=2022, month=1, day=1)
+ market_trades_btc = client.get_market_trades(page_size=1000, markets="coinbase-btc-usd-spot", start_time=start_date, end_time=end_date)
+ market_trades_btc.export_to_csv("jan_1_2022_coinbase_btc_trades.csv")
+ market_trades_eth = client.get_market_trades(page_size=1000, markets="coinbase-eth-usd-spot", start_time=start_date, end_time=end_date)
+ market_trades_eth.export_to_json("jan_1_2022_coinbase_eth.json")
+```
+### Paging
+You can make the datapoints to iterate from start (default) or from end.
+for that you should use a paging_from argument like the following:
+```
+from coinmetrics.api_client import CoinMetricsClient
+from coinmetrics.constants import PagingFrom
+client = CoinMetricsClient()
+for metric_data in client.get_asset_metrics(assets='btc', metrics=['ReferenceRateUSD'],
+ paging_from=PagingFrom.START):
+ print(metric_data)
+```
+PagingFrom.END: is available but by default it will page from the start.
+### Debugging the API Client
+There are two additional options for the API Client - `debug_mode` and `verbose`. These two options log network calls
+to the console, and in the case of `debug_mode` it will generate a log file of all the network requests and the time
+it takes to call them. These tools can be used to diagnose issues in your code and also to get a better understanding
+of request times so that users can write more performant code. For example, running the below code:
+```python
+import os
+from coinmetrics.api_client import CoinMetricsClient
+api_key = os.environ['CM_API_KEY']
+if __name__ == '__main__':
+ client = CoinMetricsClient(api_key=api_key, debug_mode=True)
+ reference_rates_example = client.get_asset_metrics(assets=['btc', 'algo', 'eth'], metrics=['ReferenceRateUSD'])
+ for data in reference_rates_example:
+ continue
+```
+The console output will look like:
+```commandline
+[DEBUG] 2023-01-09 11:01:02,044 - Starting API Client debugging session. logging to stdout and cm_api_client_debug_2023_01_09_11_01_02.txt
+[DEBUG] 2023-01-09 11:01:02,044 - Using coinmetrics version 2022.11.14.16
+[DEBUG] 2023-01-09 11:01:02,044 - Current state of API Client, excluding API KEY: {'_verify_ssl_certs': True, '_api_base_url': 'https://api.coinmetrics.io/v4', '_ws_api_base_url': 'wss://api.coinmetrics.io/v4', '_http_header': {'Api-Client-Version': '2022.11.14.16'}, '_proxies': {'http': None, 'https': None}, 'debug_mode': True, 'verbose': False}
+[DEBUG] 2023-01-09 11:01:02,044 - Attempting to call url: timeseries/asset-metrics with params: {'assets': ['btc', 'algo', 'eth'], 'metrics': ['ReferenceRateUSD'], 'frequency': None, 'page_size': None, 'paging_from': 'start', 'start_time': None, 'end_time': None, 'start_height': None, 'end_height': None, 'start_inclusive': None, 'end_inclusive': None, 'timezone': None, 'sort': None, 'limit_per_asset': None}
+[DEBUG] 2023-01-09 11:01:02,387 - Response status code: 200 for url: https://api.coinmetrics.io/v4/timeseries/asset-metrics?api_key=[REDACTED]&assets=btc%2Calgo%2Ceth&metrics=ReferenceRateUSD&paging_from=start took: 0:00:00.342874 response body size (bytes): 9832
+[DEBUG] 2023-01-09 11:01:02,388 - Attempting to call url: timeseries/asset-metrics with params: {'assets': ['btc', 'algo', 'eth'], 'metrics': ['ReferenceRateUSD'], 'frequency': None, 'page_size': None, 'paging_from': 'start', 'start_time': None, 'end_time': None, 'start_height': None, 'end_height': None, 'start_inclusive': None, 'end_inclusive': None, 'timezone': None, 'sort': None, 'limit_per_asset': None, 'next_page_token': '0.MjAxOS0wOS0zMFQwMDowMDowMFo'}
+[DEBUG] 2023-01-09 11:01:02,559 - Response status code: 200 for url: https://api.coinmetrics.io/v4/timeseries/asset-metrics?api_key=[REDACTED]&assets=btc%2Calgo%2Ceth&metrics=ReferenceRateUSD&paging_from=start&next_page_token=0.MjAxOS0wOS0zMFQwMDowMDowMFo took: 0:00:00.171487 response body size (bytes): 9857
+```
+Then it can be easier to understand what network calls the API Client is making, and where any issues may exist. If you
+wish to dig even deeper, you may consider modifying the `_send_request()` method of the API Client to log additional
+data about the state of your environment, or anything else that would help diagnose issues. You will notice a log file
+generated in the format `cm_api_client_debug_2023_01_09_11_01_02.txt`. This log file might be helpful for your own use
+or to give more context if you are working with Coin Metrics customer success.
+### SSL Certs verification
+Sometimes your organization network have special rules on SSL certs verification and in this case you might face the
+following error when running the script:
+```text
+SSLError: HTTPSConnectionPool(host='api.coinmetrics.io', port=443): Max retries exceeded with url: <some_url_path> (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1123)')))
+```
+In this case, you can pass an option during client initialization to disable ssl verification for requests like this:
+```python
+client = CoinMetricsClient(verify_ssl_certs=False)
+```
+We don't recommend setting it to False by default and you should make sure you understand the security risks of disabling SSL certs verification.
+Additionally, you may choose to specify the path to the SSL certificates on your machine. This may cause errors where
+Python is unable to locate the certificates on your machine, particularly when using Python virtual environments.
+```python
+from coinmetrics.api_client import CoinMetricsClient
+SSL_CERT_LOCATION = '/Users/<USER_NAME>/Library/Python/3.8/lib/python/site-packages/certifi/cacert.pem'
+client = CoinMetricsClient(verify_ssl_certs=SSL_CERT_LOCATION)
+```
+A quick way to find the certs on your machine is:
+`python3 -c "import requests; print(requests.certs.where())"`
+And note that this will change based on whether or not you are using a [Python virtual environment or not](https://realpython.com/python-virtual-environments-a-primer/)
+### Installing and running coinmetrics package and other python packages behind a secure python network
+Related to SSL Certs verification, you may have trouble installing and updating PyPi packages to your local environment.
+So you may need to choose the best solution for your company and environment - either using package managers or
+installing offline.
+#### Installing using package managers
+Full instructions for setting up your environment to use conda, pip, yarn, npm, etc. can be [found here](https://medium.com/@iffi33/dealing-with-ssl-authentication-on-a-secure-corporate-network-pip-conda-git-npm-yarn-bower-73e5b93fd4b2).
+Additionally, a workaround to disable SSL verification when installing a trusted Python package is this:
+```commandline
+pip install --trusted-host pypi.python.org <packagename>
+```
+Although it is important to make sure you understand the risks associated with disabling SSL verification and ensure
+compliance with company policies.
+#### Installing Python packages locally/ offline
+It may be easier to download and install the package locally. Steps:
+1. Download the files for the [Coin Metrics API Client from PyPi](https://pypi.org/project/coinmetrics-api-client/#files)
+2. [Install it locally](https://packaging.python.org/en/latest/tutorials/installing-packages/#installing-from-local-archives)
+### Requests Proxy
+Sometimes your organization has special rules on making requests to third parties and you have to use proxies in order to comply with the rules.
+For proxies that don't require auth you can specify them similar to this example:
+```python
+client = CoinMetricsClient(proxy_url=f'http://<hostname>:<port>')
+```
+For proxies that require auth, you should be able to specify username and password similar to this example:
+```python
+client = CoinMetricsClient(proxy_url=f'http://<username>:<password>@<hostname>:<port>')
+```
+## Extended documentation
+For more information about the available methods in the client please reference [API Client Spec](https://coinmetrics.github.io/api-client-python/site/api_client.html)
+
+%prep
+%autosetup -n coinmetrics-api-client-2023.5.2.20
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-coinmetrics-api-client -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 2023.5.2.20-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..47bfcbf
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+afa47f1381f8a2bd39ad58287d2b5f9e coinmetrics_api_client-2023.5.2.20.tar.gz