foi reforçado as anotações de tipo com uso da classe 'Any' do módulo 'typing'.

This commit is contained in:
2024-06-22 00:35:06 +01:00
parent 73c4afedcc
commit df802b667d
2 changed files with 72 additions and 68 deletions

View File

@ -2,6 +2,7 @@
# . documentação API: https://docs.coingecko.com/v3.0.1/reference/introduction
import requests
from typing import Any
CHAVE_API = 'CG-K5RS5VXsdFDip2UvY3z8VjQP'
headers = {
@ -12,7 +13,10 @@ headers = {
url_raiz_API = 'https://api.coingecko.com/api/v3/'
# chamada API geral
def API(api_endpoint: str = '', api_parameters_dict: dict[str, str] = {}) -> tuple[str, int, dict]:
def API(
api_endpoint: str = '',
api_parameters_dict: dict[str, str] = {}
) -> tuple[str, int, dict[Any, Any]]:
'''função genérica para fazer uma chamada a API CoinGecko'''
# validar parametros
# api_endpoint
@ -59,7 +63,7 @@ def coin_price_by_ids(
include_24hr_change: bool = False,
include_last_updated_at: bool = False,
precision: int | str = ''
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/simple-price
consultar preço de um ou mais moedas usando o seu ID de Moeda
@ -71,7 +75,7 @@ def coin_price_by_ids(
vs_currencies (obrigatorio)'''
# dicionario de parametros
api_parameters= {
api_parameters: dict[str, str] = {
'ids': '',
'vs_currencies': '',
'include_24hr_vol': '',
@ -152,7 +156,7 @@ def coin_price_by_token_addresses(
include_24hr_change: bool = False,
include_last_updated_at: bool = False,
precision: int | str = ''
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/simple-token-price
consultar preco de tokens usando os endereços de contrato dos tokens
@ -164,7 +168,7 @@ def coin_price_by_token_addresses(
vs_currencies (obrigatorio) - moedas de referencia, separadas por virgula se forem mais que 1'''
# dicionario de parametros
api_parameters= {
api_parameters: dict[str, str]= {
'id_platform': '',
'contract_addresses': '',
'vs_currencies': '',
@ -245,7 +249,7 @@ def coin_price_by_token_addresses(
# print(f'erro {codigo}: {dados}')
def supported_currencies_list() -> tuple[str, int, dict]:
def supported_currencies_list() -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/simple-supported-currencies
este endpoint permite consultar quais as moedas de referencia suportadas pela CoinGecko'''
@ -262,14 +266,14 @@ def supported_currencies_list() -> tuple[str, int, dict]:
# print(f'erro {codigo}: {dados}')
def coins_list(include_platform: bool = False) -> tuple[str, int, dict]:
def coins_list(include_platform: bool = False) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/coins-list
obter todas as moedas suportadas em CoinGecko com IDs, nome,
simbolo e (no caso de contractos) endereco na plataforma das moedas
'''
# dicionario de parametros
api_parameters= {
api_parameters: dict[str, str]= {
'include_platform': '',
}
# validacao parametros
@ -322,7 +326,7 @@ def coins_list_with_market_data(
price_change_percentage: str = '',
locale: str = '',
precision: int | str = ''
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''
https://docs.coingecko.com/v3.0.1/reference/coins-markets
@ -330,7 +334,7 @@ def coins_list_with_market_data(
'''
# dicionario de parametros para passar para a API, todos os valores tem de ser do tipo 'str'
api_parameters = {
api_parameters: dict[str, str] = {
'vs_currency': '',
'ids': '',
'category': '',
@ -433,7 +437,7 @@ def coin_data_by_id(
community_data: bool = True,
developer_data: bool = True,
sparkline: bool = False,
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/coins-id
este endpoint permite fazer uma consulta a todos os dados de uma moeda
@ -441,7 +445,7 @@ def coin_data_by_id(
CoinGecko com base numa id de moeda
'''
# dicionario de parametros
api_parameters = {
api_parameters: dict[str, str] = {
'id': '',
'localization': '',
'tickers': '',
@ -507,7 +511,7 @@ def coin_tickers_by_id(
page: int = -1,
order: str = '',
depth: bool = False
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/coins-id-tickers
este endpoint permite fazer uma consulta de tickers tanto em
@ -575,7 +579,7 @@ def coin_historical_data_by_id(
id_criptomoeda: str = '',
date: str = '',
localization: bool = True
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/coins-id-history
este endpoint permite fazer consulta de dados historicos (preco, cap mercado, volume 24h,
@ -626,14 +630,14 @@ def coin_historical_chart_data_by_id(
days: str = '',
interval: str = '',
precision: int | str = 'full'
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/coins-id-market-chart
este endpoint permite fazer consulta para obter dados historicos graficos que
incluem tempo unix, preco, capitalizacao mercado e volume 24h a partir de um id de moeda
'''
# dicionario parametros
api_parameters = {
api_parameters: dict[str, str] = {
'id': '',
'vs_currency': '',
'days': '',
@ -698,14 +702,14 @@ def coin_historical_chart_data_within_time_range_by_id(
from_unix: int = -1,
to_unix: int = -1,
precision: str | int = 'full'
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/coins-id-market-chart-range
este endpoint permite obter dados historicos graficos compreendidos num periodo de tempo
unix com preco, capitalizacao de mercado e volume 24hrs a partir de um id de moeda
'''
# dicionario parametros
api_parameters = {
api_parameters: dict[str, str] = {
'id': '',
'vs_currency': '',
'from': '',
@ -769,14 +773,14 @@ def coin_ohlc_chart_by_id(
vs_currency: str = '',
days: str = '',
precision: str | int = 'full'
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/coins-id-ohlc
este endpoint permite fazer consulta ao gráfico OHLC (Open, High, Low, Close)
de uma moeda usando o seu id
'''
# dicionario parametros
api_parameters: dict = {
api_parameters: dict[str, str] = {
'id': '',
'vs_currency': '',
'days': '',
@ -834,7 +838,7 @@ def coin_ohlc_chart_by_id(
def coin_data_by_token_address(
id_platform: str = '',
contract_address: str = ''
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/coins-contract-address
este endpoint permite consultar todos os dados de uma moeda (nome, preço, mercado...
@ -842,7 +846,7 @@ def coin_data_by_token_address(
e do endereço do contrato do token
'''
# dicionario parametros
api_parameters: dict = {
api_parameters: dict[str, str] = {
'id': '',
'contract_address': '',
}
@ -880,7 +884,7 @@ def coin_historical_chart_data_by_token_address(
days: str = '',
interval: str = '',
precision: str | int = 'full'
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/contract-address-market-chart
este endpoint permite consultar dados historicos graficos incluindo tempo UNIX,
@ -888,7 +892,7 @@ def coin_historical_chart_data_by_token_address(
endereco de contracto do token
'''
# dicionario parameters
api_parameters: dict = {
api_parameters: dict[str, str] = {
'id': '',
'contract_address': '',
'vs_currency': '',
@ -962,7 +966,7 @@ def coin_historical_chart_data_within_time_range_by_token_address(
from_unix: int = -1,
to_unix: int = -1,
precision: str | int = 'full'
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/contract-address-market-chart-range
est endpoint permite obter dados historicos graficos compreendidos num determinado
@ -970,7 +974,7 @@ def coin_historical_chart_data_within_time_range_by_token_address(
partir da plataforma do activo e o seu endereco de contrato
'''
# dicionario de parametros
api_parameters: dict = {
api_parameters: dict[str, str] = {
'id': '',
'contract_address': '',
'vs_currency': '',
@ -1040,14 +1044,14 @@ def coin_historical_chart_data_within_time_range_by_token_address(
# print(f'erro {codigo}: {dados}')
def assets_platforms_list(filter: str = '') -> tuple[str, int, dict]:
def assets_platforms_list(filter: str = '') -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/asset-platforms-list
este endpoint permite fazer obter a lista de todas as plataformas
de activos na CoinGecko
'''
# dicionario de parametros
api_parameters: dict = {
api_parameters: dict[str, str] = {
'filter': '',
}
# validacao de parametros
@ -1067,13 +1071,13 @@ def assets_platforms_list(filter: str = '') -> tuple[str, int, dict]:
# else:
# print(f'erro {codigo}: {dados}')
def coins_categories_list() -> tuple[str, int, dict]:
def coins_categories_list() -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/coins-categories-list
este endpoint permite obter todas as categorias de moedas da CoinGecko
'''
# dicionario de parametros
api_parameters: dict = {}
api_parameters: dict[str, str] = {}
# validação de parametros
return API(f'coins/categories/list', api_parameters)
@ -1088,14 +1092,14 @@ def coins_categories_list() -> tuple[str, int, dict]:
# print(f'erro {codigo}: {dados}')
def coins_categories_list_with_market_data(order: str = '') -> tuple[str, int, dict]:
def coins_categories_list_with_market_data(order: str = '') -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/coins-categories
este endpoint permite obter a lista de categorias de moedas da CoinGecko,
com dados de mercado (capitalização de mercado, volume, etc)
'''
# dicionario de parametros
api_parameters: dict = {
api_parameters: dict[str, str] = {
'order': ''
}
# validacao de parametros
@ -1118,14 +1122,14 @@ def coins_categories_list_with_market_data(order: str = '') -> tuple[str, int, d
def exchanges_list_with_data(
per_page: int = -1,
page: int = -1,
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/exchanges
este endpoit permite obter todos os dados (id, nome, pais, etc)
das correctoras suportadas que têm volumes de transacoes activas na CoinGecko
'''
# dicionario de parametros
api_parameters: dict = {
api_parameters: dict[str, str] = {
'per_page': '',
'page': '',
}
@ -1153,14 +1157,14 @@ def exchanges_list_with_data(
# else:
# print(f'erro {codigo}: {dados}')
def exchanges_list() -> tuple[str, int, dict]:
def exchanges_list() -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/exchanges-list
este endpoint permite obter uma lista com o id e nome de todas
as correctoras
'''
# dicionario de parametros
api_parameters: dict = {}
api_parameters: dict[str, str] = {}
# validacao de parametros
return API(f'exchanges/list', api_parameters)
@ -1176,14 +1180,14 @@ def exchanges_list() -> tuple[str, int, dict]:
# print(f'erro {codigo}: {dados}')
def exchange_data_by_id(id_exchange: str = '') -> tuple[str, int, dict]:
def exchange_data_by_id(id_exchange: str = '') -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/exchanges-id
este endpoint permite obter dados sobre uma correctora (nome, data de estabelecimento,
pais, etc), volume em BTC da correctora e top 100 tickers a partir do id da correctora
'''
# dicionario de parametros
api_parameters: dict = {
api_parameters: dict[str, str] = {
'id': '',
}
# validacao de parametros
@ -1213,14 +1217,14 @@ def exchange_tickers_by_id(
page: int = -1,
depth: bool = False,
order: str = ''
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/exchanges-id-tickers
este endpoint permite obter os tickers de uma correctora a partir
da id da correctora
'''
# dicionario de parametros
api_parameters: dict = {
api_parameters: dict[str, str] = {
'id': '',
'coin_ids': '',
'include_exchange_logo': '',
@ -1275,14 +1279,14 @@ def exchange_tickers_by_id(
def exchange_volume_chart_by_id(
id_exchange: str = '',
days: str = ''
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/exchanges-id-volume-chart
este endpoint permite obter dados de volume historico grafico com tempo UNIX e
volume de negociação em BTC a partir do id da correctora
'''
# dicionario de parametros
api_parameters: dict = {
api_parameters: dict[str, str] = {
'id': '',
'days': '',
}
@ -1312,14 +1316,14 @@ def exchange_volume_chart_by_id(
# else:
# print(f'erro {codigo}: {dados}')
def derivatives_tickers_list() -> tuple[str, int, dict]:
def derivatives_tickers_list() -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/derivatives-tickers
este endpoint permite obter uma lista com dados dos tickers das correctoras
de derivativos da CoinGecko
'''
# dicionario de parametros
api_parameters: dict = {}
api_parameters: dict[str, str] = {}
# validacao de parametros
return API(f'derivatives', api_parameters)
@ -1338,14 +1342,14 @@ def derivatives_exchange_list_with_data(
order: str = '',
per_page: int = -1,
page: int = -1
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/derivatives-exchanges
este endpoint permite obter todas as correctoras de derivativos com os seus dados (id,
nome, contractos em aberto, etc) disponiveis na CoinGecko
'''
# dicionario de parametros
api_parameters: dict = {
api_parameters: dict[str, str] = {
'order': '',
'per_page': '',
'page': '',
@ -1381,14 +1385,14 @@ def derivatives_exchange_list_with_data(
def derivatives_exchange_data_by_id(
id_exchange: str = '',
include_tickers: str = '',
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/derivatives-exchanges-id
este endpoint permite obter os dados relativos a uma correctora de derivados (id, nome,
contractos em aberto, etc) a partir do id da correctora)
'''
# dicionario de parametros
api_parameters: dict = {
api_parameters: dict[str, str] = {
'id': '',
'include_tickers': '',
}
@ -1416,14 +1420,14 @@ def derivatives_exchange_data_by_id(
# else:
# print(f'erro {codigo}: {dados}')
def derivatives_exchanges_list() -> tuple[str, int, dict]:
def derivatives_exchanges_list() -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/derivatives-exchanges-list
este endpoint permite obter uma lista dos derivados de correctoras com id
e nome da CoinGecko
'''
# dicionario de parametros
api_parameters: dict = {}
api_parameters: dict[str, str] = {}
# validacao de parametros
return API(f'derivatives/exchanges/list', api_parameters)
@ -1442,14 +1446,14 @@ def nfts_list(
order: str = '',
per_page: int = -1,
page: int = -1
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/nfts-list
este endpoint permite obter todos os NFTs suportados com id, endereço de contracto,
nome, id da platforma do activo e o simbolo da CoinGecko
'''
# dicionario de parametros
api_parameters: dict = {
api_parameters: dict[str, str] = {
'order': '',
'per_page': '',
'page': '',
@ -1482,14 +1486,14 @@ def nfts_list(
# else:
# print(f'erro {codigo}: {dados}')
def nfts_collection_data_by_id(id_nft: str = '') -> tuple[str, int, dict]:
def nfts_collection_data_by_id(id_nft: str = '') -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/nfts-id
este endpoint permite obter todos os dados do NTF (nome, preco minimo,
volume 24hrs, etc) a partir do id da coleccao NFT
'''
# dicionario de parametros
api_parameters: dict = {
api_parameters: dict[str, str] = {
'id': '',
}
# validacao de parametros
@ -1515,14 +1519,14 @@ def nfts_collection_data_by_id(id_nft: str = '') -> tuple[str, int, dict]:
def nfts_collection_data_by_contract_address(
asset_platform_id: str = '',
contract_address: str = ''
) -> tuple[str, int, dict]:
) -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/nfts-contract-address
este endpoint permite obter toda a informação do NFT (nome, preco minimo, volume 24hrs, etc)
a partir do endereco de contracto da colecao NFT e respectiva plataforma de activo
'''
# dicionario parametros
api_parameters: dict = {
api_parameters: dict[str, str] = {
'asset_platform_id': '',
'contract_address': '',
}
@ -1552,13 +1556,13 @@ def nfts_collection_data_by_contract_address(
# else:
# print(f'erro {codigo}: {dados}')
def btc_to_currency_exchange_rates() -> tuple[str, int, dict]:
def btc_to_currency_exchange_rates() -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/exchange-rates
este endpoint permite consultar a taxa de conversão BTC com outras moedas
'''
# dicionario parametros
api_parameters: dict = {}
api_parameters: dict[str, str] = {}
# validacao de parametros
return API(f'exchange_rates', api_parameters)
@ -1573,13 +1577,13 @@ def btc_to_currency_exchange_rates() -> tuple[str, int, dict]:
# else:
# print(f'erro {codigo}: {dados}')
def search_queries(query: str = '') -> tuple[str, int, dict]:
def search_queries(query: str = '') -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/search-data
este endpoint permite realizar um pesquisa por moedas, categorias e mercados listados em CoinGecko
'''
# dicionario parametros
api_parameters: dict = {
api_parameters: dict[str, str] = {
'query': '',
}
# validacao de parametros
@ -1601,14 +1605,14 @@ def search_queries(query: str = '') -> tuple[str, int, dict]:
# else:
# print(f'erro {codigo}: {dados}')
def trending_search_list() -> tuple[str, int, dict]:
def trending_search_list() -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/trending-search
este endpoint permite consultar as moedas, nfts e categorias com mais procura na
CoinGecko nas ultimas 24hrs
'''
# dicionario de parametros
api_parameters: dict = {}
api_parameters: dict[str, str] = {}
# validacao de parametros
return API(f'search/trending', api_parameters)
@ -1623,7 +1627,7 @@ def trending_search_list() -> tuple[str, int, dict]:
# else:
# print(f'erro {codigo}: {dados}')
def crypto_global_market_data() -> tuple[str, int, dict]:
def crypto_global_market_data() -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/crypto-global
este endpoint permite consultar dados globais de criptomoedas incluindo
@ -1631,7 +1635,7 @@ def crypto_global_market_data() -> tuple[str, int, dict]:
criptomoedas, etc
'''
# dicionario de parametros
api_parameters: dict = {}
api_parameters: dict[str, str] = {}
# validacao de parametros
return API(f'global', api_parameters)
@ -1646,14 +1650,14 @@ def crypto_global_market_data() -> tuple[str, int, dict]:
# else:
# print(f'erro {codigo}: {dados}')
def global_defi_market_data() -> tuple[str, int, dict]:
def global_defi_market_data() -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/global-defi
este endpoint permite consultar os dados do top100 global das financas descentralizadas
de criptomoedas, incluindo capitalizacao de mercado DeFi e volume de negociacao
'''
# dicionario de parametros
api_parameters: dict = {}
api_parameters: dict[str, str] = {}
# validacao de parametros
return API(f'global/decentralized_finance_defi', api_parameters)
@ -1667,13 +1671,13 @@ def global_defi_market_data() -> tuple[str, int, dict]:
# else:
# print(f'erro {codigo}: {dados}')
def public_companies_holdings(coin_id: str = '') -> tuple[str, int, dict]:
def public_companies_holdings(coin_id: str = '') -> tuple[str, int, dict[Any, Any]]:
'''https://docs.coingecko.com/v3.0.1/reference/companies-public-treasury
este endpoint permite consultar a participação/posse de BTC ou ETH de empresas
'''
# dicionario de parametros
api_parameters: dict = {
api_parameters: dict[str, str] = {
'coin_id': '',
}
# validacao de parametros