|
27 | 27 | import os
|
28 | 28 | import json
|
29 | 29 | import binascii
|
30 |
| -import pkg_resources |
| 30 | +import sys |
| 31 | + |
| 32 | +if sys.version_info < (3, 10): |
| 33 | + import importlib_resources as resources |
| 34 | +else: |
| 35 | + from importlib import resources |
| 36 | + |
31 | 37 |
|
32 | 38 | os.environ['ETH_HASH_BACKEND'] = 'pycryptodome'
|
33 | 39 |
|
|
128 | 134 |
|
129 | 135 |
|
130 | 136 | def _load_json(contract_name):
|
131 |
| - fn = pkg_resources.resource_filename('xbr', 'abi/{}.json'.format(contract_name)) |
132 |
| - with open(fn) as f: |
133 |
| - data = json.loads(f.read()) |
| 137 | + fn = resources.files('xbr.abi') / f'{contract_name}.json' |
| 138 | + text = fn.read_text() |
| 139 | + data = json.loads(text) |
134 | 140 | return data
|
135 | 141 |
|
136 | 142 |
|
137 | 143 | #
|
138 | 144 | # XBR contract ABI file names
|
139 | 145 | #
|
140 |
| -XBR_TOKEN_FN = pkg_resources.resource_filename('xbr', 'abi/XBRToken.json') |
141 |
| -XBR_NETWORK_FN = pkg_resources.resource_filename('xbr', 'abi/XBRNetwork.json') |
142 |
| -XBR_DOMAIN_FN = pkg_resources.resource_filename('xbr', 'abi/XBRDomain.json') |
143 |
| -XBR_CATALOG_FN = pkg_resources.resource_filename('xbr', 'abi/XBRCatalog.json') |
144 |
| -XBR_MARKET_FN = pkg_resources.resource_filename('xbr', 'abi/XBRMarket.json') |
145 |
| -XBR_CHANNEL_FN = pkg_resources.resource_filename('xbr', 'abi/XBRChannel.json') |
| 146 | +XBR_TOKEN_FN = str(resources.files('xbr.abi') / 'XBRToken.json') |
| 147 | +XBR_NETWORK_FN = str(resources.files('xbr.abi') / 'XBRNetwork.json') |
| 148 | +XBR_DOMAIN_FN = str(resources.files('xbr.abi') / 'XBRDomain.json') |
| 149 | +XBR_CATALOG_FN = str(resources.files('xbr.abi') / 'XBRCatalog.json') |
| 150 | +XBR_MARKET_FN = str(resources.files('xbr.abi') / 'XBRMarket.json') |
| 151 | +XBR_CHANNEL_FN = str(resources.files('xbr.abi') / 'XBRChannel.json') |
146 | 152 |
|
147 | 153 |
|
148 | 154 | #
|
|
0 commit comments