diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-05 07:08:12 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-05 07:08:12 +0000 |
| commit | 3785294c2fbd207cdc6cee5279bd9323c049fe66 (patch) | |
| tree | 7af33e6cf747dc56c561ee45b410e5ba461eeeed | |
| parent | fdecd5ccbdaf86e31e45c6fd71338af7dcfde1d8 (diff) | |
automatic import of python-coinmetrics-api-clientopeneuler20.03
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-coinmetrics-api-client.spec | 405 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 407 insertions, 0 deletions
@@ -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 @@ -0,0 +1 @@ +afa47f1381f8a2bd39ad58287d2b5f9e coinmetrics_api_client-2023.5.2.20.tar.gz |
