blockapi 2.7.0__tar.gz → 2.8.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {blockapi-2.7.0 → blockapi-2.8.0}/PKG-INFO +1 -1
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/debank.py +34 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi.egg-info/PKG-INFO +1 -1
- {blockapi-2.7.0 → blockapi-2.8.0}/setup.py +1 -1
- {blockapi-2.7.0 → blockapi-2.8.0}/LICENSE.md +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/README.md +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/__init__.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/services.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/__init__.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/test_blockapi.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/test_num.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/test_random_user_agent.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/__init__.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/__init__.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/conftest.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/covalenth/__init__.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/covalenth/test_ethereum.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/fake_sleep_provider.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/nft/__init__.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/nft/test_magic_eden.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/nft/test_opensea.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/nft/test_simple_hash.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/nft/test_unisat.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/perpetual/__init__.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/perpetual/test_perpetual.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/synthetix/__init__.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/synthetix/test_synthetix.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_bitaps_ltc.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_blockchain_info.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_blockchainos.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_blockchair_btc.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_blockchair_doge.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_blockchair_ltc.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_cosmos.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_ethplorer.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_haskoin.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_litecoinspace.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_multisources.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_optimistic_etherscan.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_solana.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_subscan_polkadot.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_sui.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_terra.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_trezor_btc.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/api/test_trezor_zec.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/test_base.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/test_blockchain_api.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/test_blockchain_mapping.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/test_data.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/test_enumerate_classes.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/test_generic.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test/v2/test_models.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/test_data.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/utils/__init__.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/utils/address.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/utils/datetime.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/utils/num.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/utils/user_agent.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/__init__.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/__init__.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/bitaps.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/blockchain_info.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/blockchainos.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/blockchair.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/cosmos.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/covalenth/__init__.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/covalenth/arbitrum.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/covalenth/astar.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/covalenth/avalanche.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/covalenth/axie.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/covalenth/base.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/covalenth/binance_smart_chain.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/covalenth/ethereum.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/covalenth/fantom.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/covalenth/heco.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/covalenth/iotex.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/covalenth/klaytn.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/covalenth/moonbeam.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/covalenth/palm.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/covalenth/polygon.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/covalenth/rsk.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/debank_maps.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/ethplorer.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/haskoin.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/litecoinspace.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/nft/__init__.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/nft/magic_eden.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/nft/opensea.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/nft/simple_hash.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/nft/unisat.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/optimistic_etherscan.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/perpetual/__init__.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/perpetual/perp_abi.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/perpetual/perpetual.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/solana.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/subscan.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/sui.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/synthetix/__init__.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/synthetix/synthetix.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/synthetix/synthetix_abi.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/terra.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/trezor.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/api/web3_utils.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/base.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/blockchain_mapping.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/coin_mapping.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/coins.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi/v2/models.py +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi.egg-info/SOURCES.txt +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi.egg-info/dependency_links.txt +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi.egg-info/requires.txt +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/blockapi.egg-info/top_level.txt +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/pyproject.toml +0 -0
- {blockapi-2.7.0 → blockapi-2.8.0}/setup.cfg +0 -0
|
@@ -735,6 +735,12 @@ class DebankApi(CustomizableBlockchainApi, BalanceMixin, IPortfolio):
|
|
|
735
735
|
'get_protocols': '/v1/protocol/all_list',
|
|
736
736
|
'usage': '/v1/account/units',
|
|
737
737
|
'get_complex_app_list': '/v1/user/complex_app_list?id={address}',
|
|
738
|
+
'get_token_list_for_chain': (
|
|
739
|
+
'/v1/user/token_list?id={address}&chain_id={chain_id}&is_all={is_all}'
|
|
740
|
+
),
|
|
741
|
+
'get_protocol_for_address': (
|
|
742
|
+
'/v1/user/protocol?id={address}&protocol_id={protocol_id}'
|
|
743
|
+
),
|
|
738
744
|
}
|
|
739
745
|
|
|
740
746
|
default_protocol_cache = DebankProtocolCache()
|
|
@@ -783,6 +789,23 @@ class DebankApi(CustomizableBlockchainApi, BalanceMixin, IPortfolio):
|
|
|
783
789
|
address=address,
|
|
784
790
|
)
|
|
785
791
|
|
|
792
|
+
def fetch_token_list_for_chain(self, address: str, chain_id: str) -> FetchResult:
|
|
793
|
+
return self.get_data(
|
|
794
|
+
'get_token_list_for_chain',
|
|
795
|
+
headers=self._headers,
|
|
796
|
+
address=address,
|
|
797
|
+
chain_id=chain_id,
|
|
798
|
+
is_all=self._is_all,
|
|
799
|
+
)
|
|
800
|
+
|
|
801
|
+
def fetch_protocol_for_address(self, address: str, protocol_id: str) -> FetchResult:
|
|
802
|
+
return self.get_data(
|
|
803
|
+
'get_protocol_for_address',
|
|
804
|
+
headers=self._headers,
|
|
805
|
+
address=address,
|
|
806
|
+
protocol_id=protocol_id,
|
|
807
|
+
)
|
|
808
|
+
|
|
786
809
|
def fetch_protocols(self) -> FetchResult:
|
|
787
810
|
return self.get_data(
|
|
788
811
|
'get_protocols',
|
|
@@ -809,6 +832,17 @@ class DebankApi(CustomizableBlockchainApi, BalanceMixin, IPortfolio):
|
|
|
809
832
|
self._maybe_update_protocols()
|
|
810
833
|
return ParseResult(data=self._portfolio_parser.parse(fetch_result.data))
|
|
811
834
|
|
|
835
|
+
def parse_pool_for_address(self, fetch_result: FetchResult) -> ParseResult:
|
|
836
|
+
if error := self._get_error(fetch_result.data):
|
|
837
|
+
return ParseResult(errors=[error])
|
|
838
|
+
|
|
839
|
+
self._maybe_update_protocols()
|
|
840
|
+
data = fetch_result.data
|
|
841
|
+
# /v1/user/protocol returns a single protocol object; wrap in a list
|
|
842
|
+
# so the portfolio parser (which iterates) handles it uniformly.
|
|
843
|
+
wrapped = [data] if isinstance(data, dict) else (data or [])
|
|
844
|
+
return ParseResult(data=self._portfolio_parser.parse(wrapped))
|
|
845
|
+
|
|
812
846
|
def get_protocols(self) -> Dict[str, Protocol]:
|
|
813
847
|
response = self.get('get_protocols', headers=self._headers)
|
|
814
848
|
if self._has_error(response):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|