address-encoder 1.0.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.
Files changed (285) hide show
  1. address_encoder-1.0.0/.env +3 -0
  2. address_encoder-1.0.0/.github/workflows/test.yml +29 -0
  3. address_encoder-1.0.0/.gitignore +9 -0
  4. address_encoder-1.0.0/LICENSE +21 -0
  5. address_encoder-1.0.0/PKG-INFO +132 -0
  6. address_encoder-1.0.0/README.md +102 -0
  7. address_encoder-1.0.0/docs/supported-cryptocurrencies.md +171 -0
  8. address_encoder-1.0.0/pyproject.toml +53 -0
  9. address_encoder-1.0.0/scripts/_maintainer.py +170 -0
  10. address_encoder-1.0.0/scripts/add_evm_coin.py +48 -0
  11. address_encoder-1.0.0/scripts/format_supported_coins.py +117 -0
  12. address_encoder-1.0.0/scripts/generate_coin.py +112 -0
  13. address_encoder-1.0.0/scripts/prepublish_only.py +43 -0
  14. address_encoder-1.0.0/src/address_encoder/__init__.py +72 -0
  15. address_encoder-1.0.0/src/address_encoder/coders.py +368 -0
  16. address_encoder-1.0.0/src/address_encoder/coins/__init__.py +67 -0
  17. address_encoder-1.0.0/src/address_encoder/coins/abbc.py +15 -0
  18. address_encoder-1.0.0/src/address_encoder/coins/ada.py +32 -0
  19. address_encoder-1.0.0/src/address_encoder/coins/ae.py +23 -0
  20. address_encoder-1.0.0/src/address_encoder/coins/aib.py +17 -0
  21. address_encoder-1.0.0/src/address_encoder/coins/aion.py +32 -0
  22. address_encoder-1.0.0/src/address_encoder/coins/algo.py +42 -0
  23. address_encoder-1.0.0/src/address_encoder/coins/ar.py +15 -0
  24. address_encoder-1.0.0/src/address_encoder/coins/ardr.py +77 -0
  25. address_encoder-1.0.0/src/address_encoder/coins/ark.py +24 -0
  26. address_encoder-1.0.0/src/address_encoder/coins/atom.py +15 -0
  27. address_encoder-1.0.0/src/address_encoder/coins/avax.py +31 -0
  28. address_encoder-1.0.0/src/address_encoder/coins/bcd.py +20 -0
  29. address_encoder-1.0.0/src/address_encoder/coins/bch.py +42 -0
  30. address_encoder-1.0.0/src/address_encoder/coins/bcn.py +41 -0
  31. address_encoder-1.0.0/src/address_encoder/coins/bdx.py +15 -0
  32. address_encoder-1.0.0/src/address_encoder/coins/bnb.py +15 -0
  33. address_encoder-1.0.0/src/address_encoder/coins/bps.py +17 -0
  34. address_encoder-1.0.0/src/address_encoder/coins/bsv.py +28 -0
  35. address_encoder-1.0.0/src/address_encoder/coins/btc.py +20 -0
  36. address_encoder-1.0.0/src/address_encoder/coins/btg.py +20 -0
  37. address_encoder-1.0.0/src/address_encoder/coins/btm.py +15 -0
  38. address_encoder-1.0.0/src/address_encoder/coins/bts.py +15 -0
  39. address_encoder-1.0.0/src/address_encoder/coins/cca.py +17 -0
  40. address_encoder-1.0.0/src/address_encoder/coins/ccxx.py +20 -0
  41. address_encoder-1.0.0/src/address_encoder/coins/celoLegacy.py +15 -0
  42. address_encoder-1.0.0/src/address_encoder/coins/ckb.py +15 -0
  43. address_encoder-1.0.0/src/address_encoder/coins/cloLegacy.py +15 -0
  44. address_encoder-1.0.0/src/address_encoder/coins/dash.py +17 -0
  45. address_encoder-1.0.0/src/address_encoder/coins/dcr.py +15 -0
  46. address_encoder-1.0.0/src/address_encoder/coins/dgb.py +20 -0
  47. address_encoder-1.0.0/src/address_encoder/coins/divi.py +17 -0
  48. address_encoder-1.0.0/src/address_encoder/coins/doge.py +17 -0
  49. address_encoder-1.0.0/src/address_encoder/coins/dot.py +15 -0
  50. address_encoder-1.0.0/src/address_encoder/coins/egld.py +15 -0
  51. address_encoder-1.0.0/src/address_encoder/coins/ela.py +15 -0
  52. address_encoder-1.0.0/src/address_encoder/coins/eos.py +15 -0
  53. address_encoder-1.0.0/src/address_encoder/coins/etcLegacy.py +15 -0
  54. address_encoder-1.0.0/src/address_encoder/coins/eth.py +15 -0
  55. address_encoder-1.0.0/src/address_encoder/coins/etn.py +46 -0
  56. address_encoder-1.0.0/src/address_encoder/coins/ewtLegacy.py +15 -0
  57. address_encoder-1.0.0/src/address_encoder/coins/fil.py +69 -0
  58. address_encoder-1.0.0/src/address_encoder/coins/fio.py +15 -0
  59. address_encoder-1.0.0/src/address_encoder/coins/firo.py +17 -0
  60. address_encoder-1.0.0/src/address_encoder/coins/flow.py +32 -0
  61. address_encoder-1.0.0/src/address_encoder/coins/flux.py +21 -0
  62. address_encoder-1.0.0/src/address_encoder/coins/ftmLegacy.py +15 -0
  63. address_encoder-1.0.0/src/address_encoder/coins/gnoLegacy.py +15 -0
  64. address_encoder-1.0.0/src/address_encoder/coins/goLegacy.py +15 -0
  65. address_encoder-1.0.0/src/address_encoder/coins/grin.py +15 -0
  66. address_encoder-1.0.0/src/address_encoder/coins/gxc.py +15 -0
  67. address_encoder-1.0.0/src/address_encoder/coins/hbar.py +33 -0
  68. address_encoder-1.0.0/src/address_encoder/coins/hive.py +15 -0
  69. address_encoder-1.0.0/src/address_encoder/coins/hns.py +39 -0
  70. address_encoder-1.0.0/src/address_encoder/coins/hnt.py +26 -0
  71. address_encoder-1.0.0/src/address_encoder/coins/icx.py +37 -0
  72. address_encoder-1.0.0/src/address_encoder/coins/iost.py +15 -0
  73. address_encoder-1.0.0/src/address_encoder/coins/iota.py +26 -0
  74. address_encoder-1.0.0/src/address_encoder/coins/iotx.py +15 -0
  75. address_encoder-1.0.0/src/address_encoder/coins/iris.py +15 -0
  76. address_encoder-1.0.0/src/address_encoder/coins/kava.py +15 -0
  77. address_encoder-1.0.0/src/address_encoder/coins/kmd.py +17 -0
  78. address_encoder-1.0.0/src/address_encoder/coins/ksm.py +15 -0
  79. address_encoder-1.0.0/src/address_encoder/coins/lcc.py +20 -0
  80. address_encoder-1.0.0/src/address_encoder/coins/lrg.py +17 -0
  81. address_encoder-1.0.0/src/address_encoder/coins/lsk.py +25 -0
  82. address_encoder-1.0.0/src/address_encoder/coins/ltc.py +20 -0
  83. address_encoder-1.0.0/src/address_encoder/coins/luna.py +15 -0
  84. address_encoder-1.0.0/src/address_encoder/coins/mona.py +20 -0
  85. address_encoder-1.0.0/src/address_encoder/coins/mrx.py +15 -0
  86. address_encoder-1.0.0/src/address_encoder/coins/nano.py +74 -0
  87. address_encoder-1.0.0/src/address_encoder/coins/nas.py +42 -0
  88. address_encoder-1.0.0/src/address_encoder/coins/near.py +27 -0
  89. address_encoder-1.0.0/src/address_encoder/coins/neo.py +15 -0
  90. address_encoder-1.0.0/src/address_encoder/coins/nim.py +72 -0
  91. address_encoder-1.0.0/src/address_encoder/coins/nmc.py +15 -0
  92. address_encoder-1.0.0/src/address_encoder/coins/nostr.py +15 -0
  93. address_encoder-1.0.0/src/address_encoder/coins/nrgLegacy.py +15 -0
  94. address_encoder-1.0.0/src/address_encoder/coins/nuls.py +68 -0
  95. address_encoder-1.0.0/src/address_encoder/coins/one.py +15 -0
  96. address_encoder-1.0.0/src/address_encoder/coins/ont.py +26 -0
  97. address_encoder-1.0.0/src/address_encoder/coins/poaLegacy.py +15 -0
  98. address_encoder-1.0.0/src/address_encoder/coins/ppc.py +17 -0
  99. address_encoder-1.0.0/src/address_encoder/coins/qtum.py +15 -0
  100. address_encoder-1.0.0/src/address_encoder/coins/rbtc.py +15 -0
  101. address_encoder-1.0.0/src/address_encoder/coins/rdd.py +17 -0
  102. address_encoder-1.0.0/src/address_encoder/coins/rune.py +15 -0
  103. address_encoder-1.0.0/src/address_encoder/coins/rvn.py +17 -0
  104. address_encoder-1.0.0/src/address_encoder/coins/sc.py +38 -0
  105. address_encoder-1.0.0/src/address_encoder/coins/sero.py +22 -0
  106. address_encoder-1.0.0/src/address_encoder/coins/sol.py +31 -0
  107. address_encoder-1.0.0/src/address_encoder/coins/srm.py +15 -0
  108. address_encoder-1.0.0/src/address_encoder/coins/steem.py +15 -0
  109. address_encoder-1.0.0/src/address_encoder/coins/strat.py +17 -0
  110. address_encoder-1.0.0/src/address_encoder/coins/strk.py +53 -0
  111. address_encoder-1.0.0/src/address_encoder/coins/stx.py +104 -0
  112. address_encoder-1.0.0/src/address_encoder/coins/sui.py +34 -0
  113. address_encoder-1.0.0/src/address_encoder/coins/sys.py +20 -0
  114. address_encoder-1.0.0/src/address_encoder/coins/tfuel.py +15 -0
  115. address_encoder-1.0.0/src/address_encoder/coins/thetaLegacy.py +15 -0
  116. address_encoder-1.0.0/src/address_encoder/coins/tomoLegacy.py +15 -0
  117. address_encoder-1.0.0/src/address_encoder/coins/trx.py +15 -0
  118. address_encoder-1.0.0/src/address_encoder/coins/ttLegacy.py +15 -0
  119. address_encoder-1.0.0/src/address_encoder/coins/vet.py +15 -0
  120. address_encoder-1.0.0/src/address_encoder/coins/via.py +17 -0
  121. address_encoder-1.0.0/src/address_encoder/coins/vlx.py +15 -0
  122. address_encoder-1.0.0/src/address_encoder/coins/vlxLegacy.py +15 -0
  123. address_encoder-1.0.0/src/address_encoder/coins/vsys.py +44 -0
  124. address_encoder-1.0.0/src/address_encoder/coins/wan.py +44 -0
  125. address_encoder-1.0.0/src/address_encoder/coins/waves.py +43 -0
  126. address_encoder-1.0.0/src/address_encoder/coins/wicc.py +17 -0
  127. address_encoder-1.0.0/src/address_encoder/coins/xch.py +15 -0
  128. address_encoder-1.0.0/src/address_encoder/coins/xem.py +31 -0
  129. address_encoder-1.0.0/src/address_encoder/coins/xhv.py +15 -0
  130. address_encoder-1.0.0/src/address_encoder/coins/xlm.py +50 -0
  131. address_encoder-1.0.0/src/address_encoder/coins/xmr.py +15 -0
  132. address_encoder-1.0.0/src/address_encoder/coins/xrp.py +14 -0
  133. address_encoder-1.0.0/src/address_encoder/coins/xtz.py +51 -0
  134. address_encoder-1.0.0/src/address_encoder/coins/xvg.py +17 -0
  135. address_encoder-1.0.0/src/address_encoder/coins/zec.py +21 -0
  136. address_encoder-1.0.0/src/address_encoder/coins/zen.py +36 -0
  137. address_encoder-1.0.0/src/address_encoder/coins/zil.py +15 -0
  138. address_encoder-1.0.0/src/address_encoder/consts/__init__.py +17 -0
  139. address_encoder-1.0.0/src/address_encoder/consts/coin_maps.py +162 -0
  140. address_encoder-1.0.0/src/address_encoder/py.typed +0 -0
  141. address_encoder-1.0.0/src/address_encoder/types.py +22 -0
  142. address_encoder-1.0.0/src/address_encoder/utils/__init__.py +120 -0
  143. address_encoder-1.0.0/src/address_encoder/utils/base32.py +68 -0
  144. address_encoder-1.0.0/src/address_encoder/utils/base58_.py +129 -0
  145. address_encoder-1.0.0/src/address_encoder/utils/base64url.py +14 -0
  146. address_encoder-1.0.0/src/address_encoder/utils/bch.py +103 -0
  147. address_encoder-1.0.0/src/address_encoder/utils/bech32_.py +181 -0
  148. address_encoder-1.0.0/src/address_encoder/utils/bitcoin.py +50 -0
  149. address_encoder-1.0.0/src/address_encoder/utils/byron.py +24 -0
  150. address_encoder-1.0.0/src/address_encoder/utils/bytes_.py +43 -0
  151. address_encoder-1.0.0/src/address_encoder/utils/crc32.py +55 -0
  152. address_encoder-1.0.0/src/address_encoder/utils/dot.py +33 -0
  153. address_encoder-1.0.0/src/address_encoder/utils/eosio.py +30 -0
  154. address_encoder-1.0.0/src/address_encoder/utils/evm.py +19 -0
  155. address_encoder-1.0.0/src/address_encoder/utils/flow.py +24 -0
  156. address_encoder-1.0.0/src/address_encoder/utils/hex_.py +69 -0
  157. address_encoder-1.0.0/src/address_encoder/utils/near.py +11 -0
  158. address_encoder-1.0.0/src/address_encoder/utils/zcash.py +39 -0
  159. address_encoder-1.0.0/tests/test_abbc.py +20 -0
  160. address_encoder-1.0.0/tests/test_ada.py +36 -0
  161. address_encoder-1.0.0/tests/test_ae.py +18 -0
  162. address_encoder-1.0.0/tests/test_aib.py +18 -0
  163. address_encoder-1.0.0/tests/test_aion.py +18 -0
  164. address_encoder-1.0.0/tests/test_algo.py +20 -0
  165. address_encoder-1.0.0/tests/test_ar.py +18 -0
  166. address_encoder-1.0.0/tests/test_ardr.py +18 -0
  167. address_encoder-1.0.0/tests/test_ark.py +18 -0
  168. address_encoder-1.0.0/tests/test_atom.py +18 -0
  169. address_encoder-1.0.0/tests/test_avax.py +30 -0
  170. address_encoder-1.0.0/tests/test_bcd.py +20 -0
  171. address_encoder-1.0.0/tests/test_bch.py +39 -0
  172. address_encoder-1.0.0/tests/test_bcn.py +20 -0
  173. address_encoder-1.0.0/tests/test_bdx.py +18 -0
  174. address_encoder-1.0.0/tests/test_bnb.py +18 -0
  175. address_encoder-1.0.0/tests/test_bps.py +20 -0
  176. address_encoder-1.0.0/tests/test_bsv.py +20 -0
  177. address_encoder-1.0.0/tests/test_btc.py +34 -0
  178. address_encoder-1.0.0/tests/test_btg.py +24 -0
  179. address_encoder-1.0.0/tests/test_btm.py +20 -0
  180. address_encoder-1.0.0/tests/test_bts.py +18 -0
  181. address_encoder-1.0.0/tests/test_cca.py +20 -0
  182. address_encoder-1.0.0/tests/test_ccxx.py +20 -0
  183. address_encoder-1.0.0/tests/test_celoLegacy.py +18 -0
  184. address_encoder-1.0.0/tests/test_ckb.py +18 -0
  185. address_encoder-1.0.0/tests/test_cloLegacy.py +18 -0
  186. address_encoder-1.0.0/tests/test_coders.py +17 -0
  187. address_encoder-1.0.0/tests/test_coins.py +16 -0
  188. address_encoder-1.0.0/tests/test_dash.py +20 -0
  189. address_encoder-1.0.0/tests/test_dcr.py +18 -0
  190. address_encoder-1.0.0/tests/test_dgb.py +22 -0
  191. address_encoder-1.0.0/tests/test_divi.py +20 -0
  192. address_encoder-1.0.0/tests/test_doge.py +20 -0
  193. address_encoder-1.0.0/tests/test_dot.py +18 -0
  194. address_encoder-1.0.0/tests/test_egld.py +18 -0
  195. address_encoder-1.0.0/tests/test_ela.py +18 -0
  196. address_encoder-1.0.0/tests/test_eos.py +20 -0
  197. address_encoder-1.0.0/tests/test_etcLegacy.py +18 -0
  198. address_encoder-1.0.0/tests/test_eth.py +30 -0
  199. address_encoder-1.0.0/tests/test_etn.py +20 -0
  200. address_encoder-1.0.0/tests/test_ewtLegacy.py +18 -0
  201. address_encoder-1.0.0/tests/test_fil.py +24 -0
  202. address_encoder-1.0.0/tests/test_fio.py +18 -0
  203. address_encoder-1.0.0/tests/test_firo.py +22 -0
  204. address_encoder-1.0.0/tests/test_flow.py +18 -0
  205. address_encoder-1.0.0/tests/test_flux.py +20 -0
  206. address_encoder-1.0.0/tests/test_ftmLegacy.py +18 -0
  207. address_encoder-1.0.0/tests/test_gnoLegacy.py +18 -0
  208. address_encoder-1.0.0/tests/test_goLegacy.py +18 -0
  209. address_encoder-1.0.0/tests/test_grin.py +18 -0
  210. address_encoder-1.0.0/tests/test_gxc.py +18 -0
  211. address_encoder-1.0.0/tests/test_hbar.py +18 -0
  212. address_encoder-1.0.0/tests/test_hive.py +18 -0
  213. address_encoder-1.0.0/tests/test_hns.py +18 -0
  214. address_encoder-1.0.0/tests/test_hnt.py +20 -0
  215. address_encoder-1.0.0/tests/test_icx.py +20 -0
  216. address_encoder-1.0.0/tests/test_index.py +130 -0
  217. address_encoder-1.0.0/tests/test_iost.py +18 -0
  218. address_encoder-1.0.0/tests/test_iota.py +20 -0
  219. address_encoder-1.0.0/tests/test_iotx.py +18 -0
  220. address_encoder-1.0.0/tests/test_iris.py +18 -0
  221. address_encoder-1.0.0/tests/test_kava.py +18 -0
  222. address_encoder-1.0.0/tests/test_kmd.py +18 -0
  223. address_encoder-1.0.0/tests/test_ksm.py +22 -0
  224. address_encoder-1.0.0/tests/test_lcc.py +22 -0
  225. address_encoder-1.0.0/tests/test_lrg.py +20 -0
  226. address_encoder-1.0.0/tests/test_lsk.py +22 -0
  227. address_encoder-1.0.0/tests/test_ltc.py +22 -0
  228. address_encoder-1.0.0/tests/test_luna.py +18 -0
  229. address_encoder-1.0.0/tests/test_mona.py +22 -0
  230. address_encoder-1.0.0/tests/test_mrx.py +18 -0
  231. address_encoder-1.0.0/tests/test_nano.py +20 -0
  232. address_encoder-1.0.0/tests/test_nas.py +20 -0
  233. address_encoder-1.0.0/tests/test_near.py +22 -0
  234. address_encoder-1.0.0/tests/test_neo.py +18 -0
  235. address_encoder-1.0.0/tests/test_nim.py +18 -0
  236. address_encoder-1.0.0/tests/test_nmc.py +20 -0
  237. address_encoder-1.0.0/tests/test_nostr.py +20 -0
  238. address_encoder-1.0.0/tests/test_nrgLegacy.py +18 -0
  239. address_encoder-1.0.0/tests/test_nuls.py +24 -0
  240. address_encoder-1.0.0/tests/test_one.py +18 -0
  241. address_encoder-1.0.0/tests/test_ont.py +22 -0
  242. address_encoder-1.0.0/tests/test_poaLegacy.py +20 -0
  243. address_encoder-1.0.0/tests/test_ppc.py +18 -0
  244. address_encoder-1.0.0/tests/test_qtum.py +18 -0
  245. address_encoder-1.0.0/tests/test_rbtc.py +18 -0
  246. address_encoder-1.0.0/tests/test_rdd.py +20 -0
  247. address_encoder-1.0.0/tests/test_rune.py +20 -0
  248. address_encoder-1.0.0/tests/test_rvn.py +20 -0
  249. address_encoder-1.0.0/tests/test_sc.py +18 -0
  250. address_encoder-1.0.0/tests/test_sero.py +22 -0
  251. address_encoder-1.0.0/tests/test_sol.py +22 -0
  252. address_encoder-1.0.0/tests/test_srm.py +18 -0
  253. address_encoder-1.0.0/tests/test_steem.py +18 -0
  254. address_encoder-1.0.0/tests/test_strat.py +20 -0
  255. address_encoder-1.0.0/tests/test_strk.py +18 -0
  256. address_encoder-1.0.0/tests/test_stx.py +20 -0
  257. address_encoder-1.0.0/tests/test_sui.py +22 -0
  258. address_encoder-1.0.0/tests/test_sys.py +24 -0
  259. address_encoder-1.0.0/tests/test_tfuel.py +18 -0
  260. address_encoder-1.0.0/tests/test_thetaLegacy.py +18 -0
  261. address_encoder-1.0.0/tests/test_tomoLegacy.py +20 -0
  262. address_encoder-1.0.0/tests/test_trx.py +20 -0
  263. address_encoder-1.0.0/tests/test_ttLegacy.py +18 -0
  264. address_encoder-1.0.0/tests/test_utils_evm.py +32 -0
  265. address_encoder-1.0.0/tests/test_utils_hex.py +26 -0
  266. address_encoder-1.0.0/tests/test_utils_near.py +49 -0
  267. address_encoder-1.0.0/tests/test_vet.py +18 -0
  268. address_encoder-1.0.0/tests/test_via.py +20 -0
  269. address_encoder-1.0.0/tests/test_vlx.py +18 -0
  270. address_encoder-1.0.0/tests/test_vlxLegacy.py +18 -0
  271. address_encoder-1.0.0/tests/test_vsys.py +18 -0
  272. address_encoder-1.0.0/tests/test_wan.py +18 -0
  273. address_encoder-1.0.0/tests/test_waves.py +18 -0
  274. address_encoder-1.0.0/tests/test_wicc.py +20 -0
  275. address_encoder-1.0.0/tests/test_xch.py +18 -0
  276. address_encoder-1.0.0/tests/test_xem.py +20 -0
  277. address_encoder-1.0.0/tests/test_xhv.py +18 -0
  278. address_encoder-1.0.0/tests/test_xlm.py +18 -0
  279. address_encoder-1.0.0/tests/test_xmr.py +28 -0
  280. address_encoder-1.0.0/tests/test_xrp.py +20 -0
  281. address_encoder-1.0.0/tests/test_xtz.py +26 -0
  282. address_encoder-1.0.0/tests/test_xvg.py +18 -0
  283. address_encoder-1.0.0/tests/test_zec.py +22 -0
  284. address_encoder-1.0.0/tests/test_zen.py +20 -0
  285. address_encoder-1.0.0/tests/test_zil.py +18 -0
@@ -0,0 +1,3 @@
1
+ pypi-AgEIcHlwaS5vcmcCJDRkNjU4ZTdiLTlmYTItNGYyMi05YTY4LWFhYWIyMTFhNjU1YwACKlszLCJiY2ViMzg0MS0wMjRmLTQ3MzAtOTExNS0zZjUyODJjZjBmOGIiXQAABiAQTgin7-P6NYHgqZVRnuD0ImyOAvwebGbhW7g8sJfbeQ
2
+
3
+ pypi-AgENdGVzdC5weXBpLm9yZwIkOWUzNzA1MWMtZGM1ZS00MGViLWE2ODEtOWMzYmRiMmY2MWU3AAIqWzMsImJlOWRkNjUwLTE0ZTAtNDBmZi1hZmYyLTBhZjY4OTQ3Y2NlNiJdAAAGIFT0vEKURkTraegquuCTD5GfN7u1wn33DI2EF0N4D5gY
@@ -0,0 +1,29 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ - master
8
+ pull_request:
9
+
10
+ jobs:
11
+ test:
12
+ runs-on: ubuntu-latest
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - uses: actions/setup-python@v5
21
+ with:
22
+ python-version: ${{ matrix.python-version }}
23
+ cache: pip
24
+
25
+ - name: Install dependencies
26
+ run: pip install -e ".[dev]"
27
+
28
+ - name: Run tests
29
+ run: pytest -q
@@ -0,0 +1,9 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .pytest_cache/
6
+ .mypy_cache/
7
+ .ruff_cache/
8
+ dist/
9
+ build/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 ENS Labs Limited
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,132 @@
1
+ Metadata-Version: 2.4
2
+ Name: address-encoder
3
+ Version: 1.0.0
4
+ Summary: Encodes and decodes address formats for various cryptocurrencies
5
+ Project-URL: Homepage, https://github.com/ensdomains/address-encoder
6
+ Project-URL: Repository, https://github.com/ensdomains/address-encoder
7
+ Author: ENS Domains
8
+ License-Expression: MIT
9
+ License-File: LICENSE
10
+ Keywords: address,cryptocurrency,decoder,encoder,ens
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Software Development :: Libraries
20
+ Classifier: Typing :: Typed
21
+ Requires-Python: >=3.10
22
+ Requires-Dist: base58>=2.1.0
23
+ Requires-Dist: cbor2>=5.6.0
24
+ Requires-Dist: pycryptodome>=3.20.0
25
+ Provides-Extra: dev
26
+ Requires-Dist: mypy>=1.8.0; extra == 'dev'
27
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
28
+ Requires-Dist: ruff>=0.4.0; extra == 'dev'
29
+ Description-Content-Type: text/markdown
30
+
31
+ # address-encoder
32
+
33
+ Encodes and decodes address formats for various cryptocurrencies. Converts addresses between human-readable text and their native binary representations for use with [EIP-2304](https://eips.ethereum.org/EIPS/eip-2304) and ENS multichain resolution.
34
+
35
+ EVM compatible chains are either specified using SLIP-44 coin type or `0x80000000 | chainId` where `0x80000000` is the MSB (most significant bit) reserved at SLIP-44 and no coin types exist in that range. This is to avoid number collision with the existing coin types.
36
+
37
+ See [ENSIP-11](https://docs.ens.domains/ens-improvement-proposals/ensip-11-evmchain-address-resolution#specification) for more detail.
38
+
39
+ ## Installation
40
+
41
+ Coming soon to PyPI. In the meantime, install from source.
42
+
43
+ For local development:
44
+
45
+ ```bash
46
+ pip install -e ".[dev]"
47
+ ```
48
+
49
+ ## Usage
50
+
51
+ ```python
52
+ from address_encoder import get_coder_by_coin_name
53
+
54
+ btc = get_coder_by_coin_name("btc")
55
+ decoded = btc.decode("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa")
56
+ encoded = btc.encode(decoded)
57
+ ```
58
+
59
+ ### Hex input
60
+
61
+ Encoders expect `bytes`. Convert hex strings with the utility helpers:
62
+
63
+ ```python
64
+ from address_encoder import get_coder_by_coin_name
65
+ from address_encoder.utils import hex_to_bytes
66
+
67
+ btc = get_coder_by_coin_name("btc")
68
+ address = btc.encode(hex_to_bytes("0x76a91462e907b15cbf27d5425399ebf6f0fb50ebb88f1888ac"))
69
+ ```
70
+
71
+ ### Direct coin imports
72
+
73
+ ```python
74
+ from address_encoder.coins.btc import btc
75
+
76
+ decoded = btc.decode("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa")
77
+ ```
78
+
79
+ ### EVM chains
80
+
81
+ Many EVM chains are supported, but none of them (except ETH) are exported from `address_encoder.coins`. To encode or decode addresses for an EVM chain, use the ETH codec via `get_coder_by_coin_name`:
82
+
83
+ ```python
84
+ from address_encoder import get_coder_by_coin_name
85
+
86
+ op = get_coder_by_coin_name("op") # Optimism
87
+ decoded = op.decode("0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb")
88
+ ```
89
+
90
+ You can also look up a codec by coin type:
91
+
92
+ ```python
93
+ from address_encoder import get_coder_by_coin_type
94
+
95
+ op = get_coder_by_coin_type(2147483658) # 0x80000000 | 10
96
+ ```
97
+
98
+ ## Development
99
+
100
+ ```bash
101
+ pytest
102
+ ```
103
+
104
+ ### Maintainer scripts
105
+
106
+ Interactive helpers for adding coins and keeping docs in sync:
107
+
108
+ ```bash
109
+ python3 scripts/generate_coin.py # scaffold a new non-EVM coin module and test
110
+ python3 scripts/add_evm_coin.py # add EVM chain entries to coin maps
111
+ python3 scripts/format_supported_coins.py # regenerate docs/supported-cryptocurrencies.md
112
+ python3 scripts/prepublish_only.py # run tests and verify the wheel builds
113
+ ```
114
+
115
+ #### Coin types
116
+
117
+ When adding a new coin, the **coin type** is a numeric identifier from [SLIP-44](https://github.com/satoshilabs/slips/blob/master/slip-0044.md). It must be an integer, not a coin name or symbol.
118
+
119
+ | Chain type | Coin type | Script |
120
+ | --- | --- | --- |
121
+ | Non-EVM (e.g. BTC, SOL) | SLIP-44 index (e.g. `0` for Bitcoin, `501` for Solana) | `scripts/generate_coin.py` |
122
+ | EVM (e.g. Optimism, Base) | Computed as `0x80000000 \| chainId` — enter the chain ID only | `scripts/add_evm_coin.py` |
123
+
124
+ If the coin is not listed in SLIP-44, open a PR to [add it there](https://github.com/satoshilabs/slips/blob/master/slip-0044.md) first.
125
+
126
+ ## Package layout
127
+
128
+ - `address_encoder` — main API (`get_coder_by_coin_name`, `get_coder_by_coin_type`)
129
+ - `address_encoder.coins` — per-coin codecs
130
+ - `address_encoder.coders` — per-coin encode/decode function exports
131
+ - `address_encoder.consts` — SLIP-44 and EVM chain mappings
132
+ - `address_encoder.utils` — shared encoding primitives
@@ -0,0 +1,102 @@
1
+ # address-encoder
2
+
3
+ Encodes and decodes address formats for various cryptocurrencies. Converts addresses between human-readable text and their native binary representations for use with [EIP-2304](https://eips.ethereum.org/EIPS/eip-2304) and ENS multichain resolution.
4
+
5
+ EVM compatible chains are either specified using SLIP-44 coin type or `0x80000000 | chainId` where `0x80000000` is the MSB (most significant bit) reserved at SLIP-44 and no coin types exist in that range. This is to avoid number collision with the existing coin types.
6
+
7
+ See [ENSIP-11](https://docs.ens.domains/ens-improvement-proposals/ensip-11-evmchain-address-resolution#specification) for more detail.
8
+
9
+ ## Installation
10
+
11
+ Coming soon to PyPI. In the meantime, install from source.
12
+
13
+ For local development:
14
+
15
+ ```bash
16
+ pip install -e ".[dev]"
17
+ ```
18
+
19
+ ## Usage
20
+
21
+ ```python
22
+ from address_encoder import get_coder_by_coin_name
23
+
24
+ btc = get_coder_by_coin_name("btc")
25
+ decoded = btc.decode("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa")
26
+ encoded = btc.encode(decoded)
27
+ ```
28
+
29
+ ### Hex input
30
+
31
+ Encoders expect `bytes`. Convert hex strings with the utility helpers:
32
+
33
+ ```python
34
+ from address_encoder import get_coder_by_coin_name
35
+ from address_encoder.utils import hex_to_bytes
36
+
37
+ btc = get_coder_by_coin_name("btc")
38
+ address = btc.encode(hex_to_bytes("0x76a91462e907b15cbf27d5425399ebf6f0fb50ebb88f1888ac"))
39
+ ```
40
+
41
+ ### Direct coin imports
42
+
43
+ ```python
44
+ from address_encoder.coins.btc import btc
45
+
46
+ decoded = btc.decode("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa")
47
+ ```
48
+
49
+ ### EVM chains
50
+
51
+ Many EVM chains are supported, but none of them (except ETH) are exported from `address_encoder.coins`. To encode or decode addresses for an EVM chain, use the ETH codec via `get_coder_by_coin_name`:
52
+
53
+ ```python
54
+ from address_encoder import get_coder_by_coin_name
55
+
56
+ op = get_coder_by_coin_name("op") # Optimism
57
+ decoded = op.decode("0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb")
58
+ ```
59
+
60
+ You can also look up a codec by coin type:
61
+
62
+ ```python
63
+ from address_encoder import get_coder_by_coin_type
64
+
65
+ op = get_coder_by_coin_type(2147483658) # 0x80000000 | 10
66
+ ```
67
+
68
+ ## Development
69
+
70
+ ```bash
71
+ pytest
72
+ ```
73
+
74
+ ### Maintainer scripts
75
+
76
+ Interactive helpers for adding coins and keeping docs in sync:
77
+
78
+ ```bash
79
+ python3 scripts/generate_coin.py # scaffold a new non-EVM coin module and test
80
+ python3 scripts/add_evm_coin.py # add EVM chain entries to coin maps
81
+ python3 scripts/format_supported_coins.py # regenerate docs/supported-cryptocurrencies.md
82
+ python3 scripts/prepublish_only.py # run tests and verify the wheel builds
83
+ ```
84
+
85
+ #### Coin types
86
+
87
+ When adding a new coin, the **coin type** is a numeric identifier from [SLIP-44](https://github.com/satoshilabs/slips/blob/master/slip-0044.md). It must be an integer, not a coin name or symbol.
88
+
89
+ | Chain type | Coin type | Script |
90
+ | --- | --- | --- |
91
+ | Non-EVM (e.g. BTC, SOL) | SLIP-44 index (e.g. `0` for Bitcoin, `501` for Solana) | `scripts/generate_coin.py` |
92
+ | EVM (e.g. Optimism, Base) | Computed as `0x80000000 \| chainId` — enter the chain ID only | `scripts/add_evm_coin.py` |
93
+
94
+ If the coin is not listed in SLIP-44, open a PR to [add it there](https://github.com/satoshilabs/slips/blob/master/slip-0044.md) first.
95
+
96
+ ## Package layout
97
+
98
+ - `address_encoder` — main API (`get_coder_by_coin_name`, `get_coder_by_coin_type`)
99
+ - `address_encoder.coins` — per-coin codecs
100
+ - `address_encoder.coders` — per-coin encode/decode function exports
101
+ - `address_encoder.consts` — SLIP-44 and EVM chain mappings
102
+ - `address_encoder.utils` — shared encoding primitives
@@ -0,0 +1,171 @@
1
+ ## Supported Cryptocurrencies
2
+
3
+ ### EVM Chains
4
+
5
+ The following EVM chains are supported:
6
+
7
+ | Chain ID | Name | Full Name | Coin Type |
8
+ | --- | --- | --- | --- |
9
+ | 0 | default | Default | 2147483648 |
10
+ | 10 | op | Optimism | 2147483658 |
11
+ | 25 | cro | Cronos | 2147483673 |
12
+ | 56 | bsc | BNB Smart Chain | 2147483704 |
13
+ | 60 | go | GoChain | 2147483708 |
14
+ | 61 | etc | Ethereum Classic | 2147483709 |
15
+ | 88 | tomo | TomoChain | 2147483736 |
16
+ | 99 | poa | POA | 2147483747 |
17
+ | 100 | gno | Gnosis | 2147483748 |
18
+ | 108 | tt | ThunderCore | 2147483756 |
19
+ | 137 | matic | Polygon | 2147483785 |
20
+ | 169 | manta | Manta Pacific | 2147483817 |
21
+ | 246 | ewt | Energy Web | 2147483894 |
22
+ | 250 | ftm | Fantom Opera | 2147483898 |
23
+ | 288 | boba | Boba | 2147483936 |
24
+ | 324 | zksync | zkSync | 2147483972 |
25
+ | 361 | theta | Theta | 2147484009 |
26
+ | 820 | clo | Callisto | 2147484468 |
27
+ | 1088 | metis | Metis | 2147484736 |
28
+ | 5000 | mantle | Mantle | 2147488648 |
29
+ | 8453 | base | Base | 2147492101 |
30
+ | 39797 | nrg | Energi | 2147523445 |
31
+ | 42161 | arb1 | Arbitrum One | 2147525809 |
32
+ | 42220 | celo | Celo | 2147525868 |
33
+ | 43114 | avaxc | Avalanche C-Chain | 2147526762 |
34
+ | 59144 | linea | Linea | 2147542792 |
35
+ | 534352 | scr | Scroll | 2148018000 |
36
+ | 7777777 | zora | Zora | 2155261425 |
37
+
38
+ ### Legacy Coins
39
+
40
+ The following legacy coins are supported:
41
+
42
+ | Coin Type | Name | Full Name | Replacement Name | Replacement Coin Type |
43
+ | --- | --- | --- | --- | --- |
44
+ | 61 | etcLegacy | Ethereum Classic | etc | 2147483709 |
45
+ | 178 | poaLegacy | POA | poa | 2147483747 |
46
+ | 246 | ewtLegacy | Energy Web | ewt | 2147483894 |
47
+ | 500 | thetaLegacy | Theta | theta | 2147484009 |
48
+ | 574 | vlxLegacy | Velas | vlx | 5655640 |
49
+ | 700 | gnoLegacy | Gnosis | gno | 2147483748 |
50
+ | 820 | cloLegacy | Callisto | clo | 2147484468 |
51
+ | 889 | tomoLegacy | TomoChain | tomo | 2147483736 |
52
+ | 1001 | ttLegacy | ThunderCore | tt | 2147483756 |
53
+ | 1007 | ftmLegacy | Fantom | ftm | 2147483898 |
54
+ | 6060 | goLegacy | GoChain | go | 2147483708 |
55
+ | 9797 | nrgLegacy | Energi | nrg | 2147523445 |
56
+ | 52752 | celoLegacy | Celo | celo | 2147525868 |
57
+
58
+ ### Coins
59
+
60
+ The following coins are supported:
61
+
62
+ | Coin Type | Name | Full Name | Encoding Type |
63
+ | --- | --- | --- | --- |
64
+ | 0 | btc | Bitcoin | base58check P2PKH and P2SH, and bech32 segwit |
65
+ | 2 | ltc | Litecoin | base58check P2PHK and P2SH, and bech32 segwit |
66
+ | 3 | doge | Dogecoin | base58check P2PKH and P2SH |
67
+ | 4 | rdd | Reddcoin | base58check P2PKH and P2SH |
68
+ | 5 | dash | Dash | base58check P2PKH and P2SH |
69
+ | 6 | ppc | Peercoin | base58check P2PKH and P2SH |
70
+ | 7 | nmc | Namecoin | base58check |
71
+ | 14 | via | Viacoin | base58check P2PKH and P2SH |
72
+ | 20 | dgb | DigiByte | base58check P2PKH and P2SH, and bech32 segwit |
73
+ | 22 | mona | Monacoin | base58check P2PKH and P2SH, and bech32 segwit |
74
+ | 42 | dcr | Decred | base58, no check |
75
+ | 43 | xem | NEM | base32 |
76
+ | 55 | aib | AIB | base58check P2PKH and P2SH |
77
+ | 57 | sys | Syscoin | base58check P2PKH and P2SH, and bech32 segwit |
78
+ | 60 | eth | Ethereum | checksummed-hex |
79
+ | 74 | icx | ICON | custom |
80
+ | 77 | xvg | Verge | base58check P2PKH and P2SH |
81
+ | 105 | strat | Stratis | base58check P2PKH and P2SH |
82
+ | 111 | ark | ARK | base58check |
83
+ | 118 | atom | Atom | bech32 |
84
+ | 121 | zen | Zencash | base58check |
85
+ | 128 | xmr | Monero | base58xmr |
86
+ | 133 | zec | Zcash | base58check P2PKH and P2SH, bech32 (Sprout shielded not supported) |
87
+ | 134 | lsk | Lisk | hex with suffix |
88
+ | 135 | steem | Steem | base58 + ripemd160-checksum |
89
+ | 136 | firo | Firo | base58check P2PKH and P2SH |
90
+ | 137 | rbtc | RSK | checksummed-hex |
91
+ | 141 | kmd | Komodo | base58check |
92
+ | 144 | xrp | Ripple | base58check-ripple |
93
+ | 145 | bch | Bitcoin Cash | base58check and cashAddr; decodes to cashAddr |
94
+ | 148 | xlm | Stellar Lumens | ed25519 public key |
95
+ | 153 | btm | Bytom | bech32 segwit |
96
+ | 156 | btg | Bitcoin Gold | base58check P2PKH and P2SH, and bech32 segwit |
97
+ | 165 | nano | Nano | nano-base32 |
98
+ | 175 | rvn | Ravencoin | base58check P2PKH and P2SH |
99
+ | 192 | lcc | LitecoinCash | base58check P2PKH and P2SH, and bech32 segwit |
100
+ | 194 | eos | EOS | base58 + ripemd160-checksum |
101
+ | 195 | trx | Tron | base58check |
102
+ | 204 | bcn | Bytecoin | base58xmr |
103
+ | 235 | fio | FIO | base58 + ripemd160-checksum |
104
+ | 236 | bsv | BitcoinSV | base58check |
105
+ | 242 | nim | Nimiq | custom |
106
+ | 283 | algo | Algorand | checksummed-base32 |
107
+ | 291 | iost | IOST | base58, no check |
108
+ | 301 | divi | Divi Project | base58check P2PKH and P2SH |
109
+ | 304 | iotx | IoTeX | bech32 |
110
+ | 308 | bts | Bitshares | base58 + ripemd160-checksum |
111
+ | 309 | ckb | Nervos CKB | bech32 |
112
+ | 313 | zil | Zilliqa | bech32 |
113
+ | 326 | mrx | Metrix Coin | base58check |
114
+ | 330 | luna | Terra | bech32 |
115
+ | 354 | dot | Polkadot | ss58 |
116
+ | 360 | vsys | V Systems | custom |
117
+ | 367 | abbc | ABBC | base58 + ripemd160-checksum |
118
+ | 397 | near | NEAR Protocol | custom |
119
+ | 415 | etn | Electroneum | base58xmr |
120
+ | 425 | aion | Aion | hex |
121
+ | 434 | ksm | Kusama | ss58 |
122
+ | 457 | ae | æternity | base58check |
123
+ | 459 | kava | Kava | bech32 |
124
+ | 461 | fil | Filecoin | base10 + leb128 and base32 + blake2b checksum |
125
+ | 472 | ar | Arweave | base64url |
126
+ | 489 | cca | Counos | base58check P2PKH and P2SH |
127
+ | 501 | sol | Solana | base58, no check |
128
+ | 508 | egld | MultiversX | bech32 |
129
+ | 535 | xhv | Haven Protocol | base58xmr |
130
+ | 539 | flow | Flow | hex |
131
+ | 566 | iris | Irisnet | bech32 |
132
+ | 568 | lrg | Large Coin | base58check P2PKH and P2SH |
133
+ | 569 | sero | Super Zero Protocol | base58, no check |
134
+ | 570 | bdx | Beldex | base58xmr |
135
+ | 571 | ccxx | Counos X | base58check P2PKH and P2SH, and bech32 segwit |
136
+ | 573 | srm | Serum | base58, no check |
137
+ | 576 | bps | BitcoinPoS | base58check P2PKH and P2SH |
138
+ | 589 | tfuel | Theta Fuel | checksummed-hex |
139
+ | 592 | grin | Grin | base58check |
140
+ | 714 | bnb | BNB | bech32 |
141
+ | 784 | sui | Sui | hex |
142
+ | 818 | vet | VeChain | checksummed-hex |
143
+ | 825 | hive | Hive | base58 + ripemd160-checksum |
144
+ | 888 | neo | NEO | base58check |
145
+ | 904 | hnt | Helium | base58check |
146
+ | 931 | rune | THORChain | bech32 |
147
+ | 999 | bcd | Bitcoin Diamond | base58check P2PKH and P2SH, and bech32 segwit |
148
+ | 1023 | one | HARMONY-ONE | bech32 |
149
+ | 1024 | ont | Ontology | base58check |
150
+ | 1237 | nostr | Nostr | bech32 |
151
+ | 1729 | xtz | Tezos | base58check |
152
+ | 1815 | ada | Cardano | base58, no check + crc32-checksum and bech32 |
153
+ | 1991 | sc | Sia | blake2b checksum |
154
+ | 2301 | qtum | QTUM | base58check |
155
+ | 2303 | gxc | GXChain | base58 + ripemd160-checksum |
156
+ | 2305 | ela | Elastos | base58 |
157
+ | 2718 | nas | Nebulas | base58 + sha3-256-checksum |
158
+ | 3030 | hbar | Hedera HBAR | custom |
159
+ | 4218 | iota | IOTA | iotaBech32 |
160
+ | 5353 | hns | Handshake | custom |
161
+ | 5757 | stx | Stacks | crockford base32 P2PKH and P2SH + ripemd160-checksum |
162
+ | 8444 | xch | Chia | bech32m |
163
+ | 8964 | nuls | NULS | base58 |
164
+ | 9000 | avax | Avalanche | bech32 |
165
+ | 9004 | strk | StarkNet | keccak256-checksumed-hex |
166
+ | 16754 | ardr | Ardor | custom |
167
+ | 19167 | flux | Flux | base58check P2PKH and P2SH, bech32 (Sprout shielded not supported) |
168
+ | 99999 | wicc | Waykichain | base58check P2PKH and P2SH |
169
+ | 5655640 | vlx | Velas | base58, no check |
170
+ | 5718350 | wan | Wanchain | checksummed-hex |
171
+ | 5741564 | waves | Waves | base58 |
@@ -0,0 +1,53 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "address-encoder"
7
+ version = "1.0.0"
8
+ description = "Encodes and decodes address formats for various cryptocurrencies"
9
+ readme = "README.md"
10
+ license = "MIT"
11
+ requires-python = ">=3.10"
12
+ authors = [{ name = "ENS Domains" }]
13
+ keywords = ["ens", "cryptocurrency", "address", "encoder", "decoder"]
14
+ classifiers = [
15
+ "Development Status :: 4 - Beta",
16
+ "Intended Audience :: Developers",
17
+ "License :: OSI Approved :: MIT License",
18
+ "Programming Language :: Python :: 3",
19
+ "Programming Language :: Python :: 3.10",
20
+ "Programming Language :: Python :: 3.11",
21
+ "Programming Language :: Python :: 3.12",
22
+ "Programming Language :: Python :: 3.13",
23
+ "Topic :: Software Development :: Libraries",
24
+ "Typing :: Typed",
25
+ ]
26
+ dependencies = [
27
+ "base58>=2.1.0",
28
+ "cbor2>=5.6.0",
29
+ "pycryptodome>=3.20.0",
30
+ ]
31
+
32
+ [project.optional-dependencies]
33
+ dev = ["pytest>=8.0.0", "mypy>=1.8.0", "ruff>=0.4.0"]
34
+
35
+ [project.urls]
36
+ Homepage = "https://github.com/ensdomains/address-encoder"
37
+ Repository = "https://github.com/ensdomains/address-encoder"
38
+
39
+ [tool.hatch.build.targets.wheel]
40
+ packages = ["src/address_encoder"]
41
+
42
+ [tool.pytest.ini_options]
43
+ testpaths = ["tests"]
44
+ pythonpath = ["src"]
45
+
46
+ [tool.ruff]
47
+ line-length = 100
48
+ target-version = "py310"
49
+
50
+ [tool.mypy]
51
+ python_version = "3.10"
52
+ strict = true
53
+ packages = ["address_encoder"]