evmchains 0.1.5__tar.gz → 0.1.6__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.
- evmchains-0.1.6/.github/workflows/publish.yaml +22 -0
- evmchains-0.1.6/.github/workflows/test.yaml +54 -0
- {evmchains-0.1.5 → evmchains-0.1.6}/.gitignore +3 -0
- evmchains-0.1.6/PKG-INFO +83 -0
- {evmchains-0.1.5 → evmchains-0.1.6}/evmchains/__init__.py +2 -2
- {evmchains-0.1.5 → evmchains-0.1.6}/evmchains/chains.py +220 -13
- evmchains-0.1.6/evmchains/types.py +25 -0
- evmchains-0.1.5/evmchains/_meta.py → evmchains-0.1.6/evmchains/version.py +16 -3
- evmchains-0.1.6/evmchains.egg-info/PKG-INFO +83 -0
- {evmchains-0.1.5 → evmchains-0.1.6}/evmchains.egg-info/SOURCES.txt +2 -4
- evmchains-0.1.6/evmchains.egg-info/requires.txt +1 -0
- {evmchains-0.1.5 → evmchains-0.1.6}/pyproject.toml +43 -25
- {evmchains-0.1.5 → evmchains-0.1.6}/scripts/update.py +28 -11
- evmchains-0.1.6/setup.cfg +4 -0
- evmchains-0.1.5/.github/workflows/release.yaml +0 -60
- evmchains-0.1.5/.github/workflows/test.yaml +0 -78
- evmchains-0.1.5/PKG-INFO +0 -292
- evmchains-0.1.5/evmchains/types.py +0 -25
- evmchains-0.1.5/evmchains.egg-info/PKG-INFO +0 -292
- evmchains-0.1.5/evmchains.egg-info/requires.txt +0 -11
- evmchains-0.1.5/setup.cfg +0 -17
- evmchains-0.1.5/setup.py +0 -5
- {evmchains-0.1.5 → evmchains-0.1.6}/CONTRIBUTING.md +0 -0
- {evmchains-0.1.5 → evmchains-0.1.6}/LICENSE +0 -0
- {evmchains-0.1.5 → evmchains-0.1.6}/README.md +0 -0
- {evmchains-0.1.5 → evmchains-0.1.6}/evmchains/py.typed +0 -0
- {evmchains-0.1.5 → evmchains-0.1.6}/evmchains.egg-info/dependency_links.txt +0 -0
- {evmchains-0.1.5 → evmchains-0.1.6}/evmchains.egg-info/top_level.txt +0 -0
- {evmchains-0.1.5 → evmchains-0.1.6}/tests/test_func.py +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
deploy:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
permissions:
|
|
11
|
+
id-token: write
|
|
12
|
+
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v5
|
|
15
|
+
|
|
16
|
+
- uses: astral-sh/setup-uv@v7
|
|
17
|
+
|
|
18
|
+
- name: Build dist
|
|
19
|
+
run: uv build
|
|
20
|
+
|
|
21
|
+
- name: Publish Package
|
|
22
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
on: [push, pull_request]
|
|
2
|
+
|
|
3
|
+
name: Test
|
|
4
|
+
|
|
5
|
+
concurrency:
|
|
6
|
+
# Cancel older, in-progress jobs from the same PR, same workflow.
|
|
7
|
+
# use run_id if the job is triggered by a push to ensure
|
|
8
|
+
# push-triggered jobs to not get canceled.
|
|
9
|
+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
10
|
+
cancel-in-progress: true
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
linting:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v5
|
|
18
|
+
- name: Setup uv
|
|
19
|
+
uses: astral-sh/setup-uv@v7
|
|
20
|
+
- name: Run linter
|
|
21
|
+
run: uv run --group lint ruff check .
|
|
22
|
+
- name: Run format check
|
|
23
|
+
run: uv run --group lint ruff format --check .
|
|
24
|
+
- name: Run mdformat
|
|
25
|
+
run: uv run --group lint mdformat *.md
|
|
26
|
+
|
|
27
|
+
type-check:
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
|
|
30
|
+
steps:
|
|
31
|
+
- uses: actions/checkout@v5
|
|
32
|
+
- name: Setup uv
|
|
33
|
+
uses: astral-sh/setup-uv@v7
|
|
34
|
+
- name: Run MyPy
|
|
35
|
+
run: uv run --group lint mypy .
|
|
36
|
+
|
|
37
|
+
test:
|
|
38
|
+
runs-on: ${{ matrix.os }}
|
|
39
|
+
|
|
40
|
+
strategy:
|
|
41
|
+
matrix:
|
|
42
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
43
|
+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
44
|
+
|
|
45
|
+
steps:
|
|
46
|
+
- uses: actions/checkout@v5
|
|
47
|
+
with:
|
|
48
|
+
fetch-depth: 0
|
|
49
|
+
- name: Setup uv
|
|
50
|
+
uses: astral-sh/setup-uv@v7
|
|
51
|
+
with:
|
|
52
|
+
python-version: ${{ matrix.python-version }}
|
|
53
|
+
- name: Run Tests
|
|
54
|
+
run: uv run --group test pytest
|
evmchains-0.1.6/PKG-INFO
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: evmchains
|
|
3
|
+
Version: 0.1.6
|
|
4
|
+
Summary: Packaged metadata on Ethereum Virtual Machine (EVM) chains
|
|
5
|
+
Author-email: ApeWorX <admin@apeworx.io>
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Project-URL: Homepage, https://github.com/ApeWorX/evmchains
|
|
8
|
+
Project-URL: Documentation, https://github.com/ApeWorX/evmchains#readme
|
|
9
|
+
Project-URL: Issues, https://github.com/ApeWorX/evmchains/issues
|
|
10
|
+
Project-URL: Source, https://github.com/ApeWorX/evmchains
|
|
11
|
+
Keywords: ethereum,evm,blockchain
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Natural Language :: English
|
|
15
|
+
Classifier: Operating System :: MacOS
|
|
16
|
+
Classifier: Operating System :: POSIX
|
|
17
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
24
|
+
Requires-Python: >=3.10
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Dist: pydantic<3,>=2.5.3
|
|
28
|
+
Dynamic: license-file
|
|
29
|
+
|
|
30
|
+
# Python EVM Chains Metadata
|
|
31
|
+
|
|
32
|
+
Provides general metadata on EVM-compatible chains organized by Ape-style ecosystem and network.
|
|
33
|
+
|
|
34
|
+
Original source data: https://github.com/ethereum-lists/chains
|
|
35
|
+
|
|
36
|
+
## Quick Start
|
|
37
|
+
|
|
38
|
+
## Dependencies
|
|
39
|
+
|
|
40
|
+
- [python3](https://www.python.org/downloads) version 3.8 up to 3.12.
|
|
41
|
+
|
|
42
|
+
## Installation
|
|
43
|
+
|
|
44
|
+
### via `pip`
|
|
45
|
+
|
|
46
|
+
You can install the latest release via [`pip`](https://pypi.org/project/pip/):
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
pip install evmchains
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### via `setuptools`
|
|
53
|
+
|
|
54
|
+
You can clone the repository and use [`setuptools`](https://github.com/pypa/setuptools) for the most up-to-date version:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
git clone https://github.com/ApeWorX/evmchains.git
|
|
58
|
+
cd evmchains
|
|
59
|
+
python3 setup.py install
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Quick Usage
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
from evmchains import get_chain_meta
|
|
66
|
+
chain = get_chain_meta("ethereum", "mainnet")
|
|
67
|
+
assert chain.chainId == 1
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Development
|
|
71
|
+
|
|
72
|
+
Please see the [contributing guide](CONTRIBUTING.md) to learn more how to contribute to this project.
|
|
73
|
+
Comments, questions, criticisms and pull requests are welcomed.
|
|
74
|
+
|
|
75
|
+
### Adding Chains
|
|
76
|
+
|
|
77
|
+
To add a chain to the metadata, please open a pull request with the following changes:
|
|
78
|
+
|
|
79
|
+
- Update `CHAIN_IDS` in `scripts/update.py` with the chain IDs you want to add
|
|
80
|
+
- Run `python scripts/update.py`
|
|
81
|
+
- Submit a PR with the updated script and updated `evmchain/chains.py` metdata file
|
|
82
|
+
|
|
83
|
+
**Do not edit `evmchain/chains.py` manually.** Any manual changes are likely to be overwritten later.
|
|
@@ -7,7 +7,7 @@ below utility functions.
|
|
|
7
7
|
import os
|
|
8
8
|
import random
|
|
9
9
|
import re
|
|
10
|
-
from typing import TYPE_CHECKING
|
|
10
|
+
from typing import TYPE_CHECKING
|
|
11
11
|
|
|
12
12
|
if TYPE_CHECKING:
|
|
13
13
|
from evmchains.types import Chain
|
|
@@ -29,7 +29,7 @@ def get_chain_meta(ecosystem: str, network: str) -> "Chain":
|
|
|
29
29
|
return Chain(**PUBLIC_CHAIN_META[ecosystem][network])
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
def get_rpcs(ecosystem: str, network: str) ->
|
|
32
|
+
def get_rpcs(ecosystem: str, network: str) -> list[str]:
|
|
33
33
|
"""Get a list of valid RPC endpoints for an ecosystem:network pair."""
|
|
34
34
|
rpcs = []
|
|
35
35
|
|
|
@@ -3,13 +3,11 @@
|
|
|
3
3
|
!!!!!!!!!!!!!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!!!!!!!!!!!
|
|
4
4
|
!!!! DO NOT EDIT THIS FILE DIRECTLY! !!!!
|
|
5
5
|
!!!! This file is auto-generated by scripts/update.py !!!!
|
|
6
|
-
!!!! 2025-06
|
|
6
|
+
!!!! 2025-12-06 00:53:08.602106+00:00 !!!!
|
|
7
7
|
!!!!!!!!!!!!!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!!!!!!!!!!!
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
PUBLIC_CHAIN_META: Dict[str, Dict[str, Dict[str, Any]]] = {
|
|
10
|
+
PUBLIC_CHAIN_META: dict[str, dict[str, dict]] = {
|
|
13
11
|
"abstract": {
|
|
14
12
|
"mainnet": {
|
|
15
13
|
"chain": "Abstract",
|
|
@@ -422,6 +420,33 @@ PUBLIC_CHAIN_META: Dict[str, Dict[str, Dict[str, Any]]] = {
|
|
|
422
420
|
},
|
|
423
421
|
},
|
|
424
422
|
"berachain": {
|
|
423
|
+
"testnet": {
|
|
424
|
+
"chain": "Berachain",
|
|
425
|
+
"chainId": 80069,
|
|
426
|
+
"ens": None,
|
|
427
|
+
"explorers": [
|
|
428
|
+
{
|
|
429
|
+
"icon": "berachain",
|
|
430
|
+
"name": "Beratrail",
|
|
431
|
+
"standard": "none",
|
|
432
|
+
"url": "https://bepolia.beratrail.io",
|
|
433
|
+
}
|
|
434
|
+
],
|
|
435
|
+
"faucets": [],
|
|
436
|
+
"features": None,
|
|
437
|
+
"icon": "berachain",
|
|
438
|
+
"infoURL": "https://www.berachain.com",
|
|
439
|
+
"name": "Berachain Bepolia",
|
|
440
|
+
"nativeCurrency": {
|
|
441
|
+
"decimals": 18,
|
|
442
|
+
"name": "Testnet BERA Token",
|
|
443
|
+
"symbol": "BERA",
|
|
444
|
+
},
|
|
445
|
+
"networkId": 80069,
|
|
446
|
+
"rpc": ["https://bepolia.rpc.berachain.com"],
|
|
447
|
+
"shortName": "berachain-bepolia",
|
|
448
|
+
"slip44": None,
|
|
449
|
+
},
|
|
425
450
|
"bartio": {
|
|
426
451
|
"chain": "Berachain bArtio",
|
|
427
452
|
"chainId": 80084,
|
|
@@ -445,6 +470,37 @@ PUBLIC_CHAIN_META: Dict[str, Dict[str, Dict[str, Any]]] = {
|
|
|
445
470
|
"shortName": "berachainbArtio",
|
|
446
471
|
"slip44": None,
|
|
447
472
|
},
|
|
473
|
+
"mainnet": {
|
|
474
|
+
"chain": "Berachain",
|
|
475
|
+
"chainId": 80094,
|
|
476
|
+
"ens": None,
|
|
477
|
+
"explorers": [
|
|
478
|
+
{
|
|
479
|
+
"name": "Berascan",
|
|
480
|
+
"standard": "EIP3091",
|
|
481
|
+
"url": "https://berascan.com",
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
"name": "Beratrail",
|
|
485
|
+
"standard": "EIP3091",
|
|
486
|
+
"url": "https://beratrail.io",
|
|
487
|
+
},
|
|
488
|
+
],
|
|
489
|
+
"faucets": [],
|
|
490
|
+
"features": None,
|
|
491
|
+
"icon": "berachain",
|
|
492
|
+
"infoURL": "https://www.berachain.com",
|
|
493
|
+
"name": "Berachain",
|
|
494
|
+
"nativeCurrency": {"decimals": 18, "name": "BERA Token", "symbol": "BERA"},
|
|
495
|
+
"networkId": 80094,
|
|
496
|
+
"rpc": [
|
|
497
|
+
"https://rpc.berachain.com",
|
|
498
|
+
"https://berachain-rpc.publicnode.com",
|
|
499
|
+
"https://rpc.berachain-apis.com",
|
|
500
|
+
],
|
|
501
|
+
"shortName": "berachain",
|
|
502
|
+
"slip44": None,
|
|
503
|
+
},
|
|
448
504
|
},
|
|
449
505
|
"blast": {
|
|
450
506
|
"mainnet": {
|
|
@@ -742,8 +798,8 @@ PUBLIC_CHAIN_META: Dict[str, Dict[str, Dict[str, Any]]] = {
|
|
|
742
798
|
},
|
|
743
799
|
{
|
|
744
800
|
"name": "blockscout",
|
|
745
|
-
"standard": "
|
|
746
|
-
"url": "https://
|
|
801
|
+
"standard": "EIP3091",
|
|
802
|
+
"url": "https://celo.blockscout.com",
|
|
747
803
|
},
|
|
748
804
|
],
|
|
749
805
|
"faucets": [],
|
|
@@ -1076,6 +1132,31 @@ PUBLIC_CHAIN_META: Dict[str, Dict[str, Dict[str, Any]]] = {
|
|
|
1076
1132
|
"shortName": "holesky",
|
|
1077
1133
|
"slip44": 1,
|
|
1078
1134
|
},
|
|
1135
|
+
"hoodi": {
|
|
1136
|
+
"chain": "ETH",
|
|
1137
|
+
"chainId": 560048,
|
|
1138
|
+
"ens": None,
|
|
1139
|
+
"explorers": [
|
|
1140
|
+
{
|
|
1141
|
+
"name": "dora",
|
|
1142
|
+
"standard": "none",
|
|
1143
|
+
"url": "https://light-hoodi.beaconcha.in",
|
|
1144
|
+
}
|
|
1145
|
+
],
|
|
1146
|
+
"faucets": [
|
|
1147
|
+
"https://faucet.hoodi.ethpandaops.io",
|
|
1148
|
+
"https://hoodi-faucet.pk910.de/",
|
|
1149
|
+
],
|
|
1150
|
+
"features": [{"name": "EIP155"}, {"name": "EIP1559"}],
|
|
1151
|
+
"icon": "ethereum",
|
|
1152
|
+
"infoURL": "https://hoodi.ethpandaops.io",
|
|
1153
|
+
"name": "Ethereum Hoodi",
|
|
1154
|
+
"nativeCurrency": {"decimals": 18, "name": "Hoodi Ether", "symbol": "ETH"},
|
|
1155
|
+
"networkId": 560048,
|
|
1156
|
+
"rpc": ["https://rpc.hoodi.ethpandaops.io"],
|
|
1157
|
+
"shortName": "hoe",
|
|
1158
|
+
"slip44": 1,
|
|
1159
|
+
},
|
|
1079
1160
|
"sepolia": {
|
|
1080
1161
|
"chain": "ETH",
|
|
1081
1162
|
"chainId": 11155111,
|
|
@@ -1341,14 +1422,10 @@ PUBLIC_CHAIN_META: Dict[str, Dict[str, Dict[str, Any]]] = {
|
|
|
1341
1422
|
"icon": "fraxtal",
|
|
1342
1423
|
"infoURL": "https://mainnet.frax.com",
|
|
1343
1424
|
"name": "Fraxtal",
|
|
1344
|
-
"nativeCurrency": {
|
|
1345
|
-
"decimals": 18,
|
|
1346
|
-
"name": "Frax Ether",
|
|
1347
|
-
"symbol": "frxETH",
|
|
1348
|
-
},
|
|
1425
|
+
"nativeCurrency": {"decimals": 18, "name": "Frax", "symbol": "FRAX"},
|
|
1349
1426
|
"networkId": 252,
|
|
1350
1427
|
"rpc": ["https://rpc.frax.com", "https://fraxtal-rpc.publicnode.com"],
|
|
1351
|
-
"shortName": "
|
|
1428
|
+
"shortName": "frax",
|
|
1352
1429
|
"slip44": None,
|
|
1353
1430
|
},
|
|
1354
1431
|
"holesky": {
|
|
@@ -2333,7 +2410,7 @@ PUBLIC_CHAIN_META: Dict[str, Dict[str, Dict[str, Any]]] = {
|
|
|
2333
2410
|
"features": None,
|
|
2334
2411
|
"icon": "polynomialSepolia",
|
|
2335
2412
|
"infoURL": "https://polynomial.fi",
|
|
2336
|
-
"name": "
|
|
2413
|
+
"name": "Polynomial Sepolia",
|
|
2337
2414
|
"nativeCurrency": {"decimals": 18, "name": "Ether", "symbol": "ETH"},
|
|
2338
2415
|
"networkId": 80008,
|
|
2339
2416
|
"rpc": ["https://rpc.sepolia.polynomial.fi"],
|
|
@@ -2597,6 +2674,54 @@ PUBLIC_CHAIN_META: Dict[str, Dict[str, Dict[str, Any]]] = {
|
|
|
2597
2674
|
"slip44": 1,
|
|
2598
2675
|
},
|
|
2599
2676
|
},
|
|
2677
|
+
"sophon": {
|
|
2678
|
+
"mainnet": {
|
|
2679
|
+
"chain": "Sophon",
|
|
2680
|
+
"chainId": 50104,
|
|
2681
|
+
"ens": None,
|
|
2682
|
+
"explorers": [
|
|
2683
|
+
{
|
|
2684
|
+
"icon": "sophon-testnet",
|
|
2685
|
+
"name": "Sophon Block Explorer",
|
|
2686
|
+
"standard": "none",
|
|
2687
|
+
"url": "https://explorer.sophon.xyz",
|
|
2688
|
+
}
|
|
2689
|
+
],
|
|
2690
|
+
"faucets": [],
|
|
2691
|
+
"features": None,
|
|
2692
|
+
"icon": None,
|
|
2693
|
+
"infoURL": "",
|
|
2694
|
+
"name": "Sophon",
|
|
2695
|
+
"nativeCurrency": {"decimals": 18, "name": "Sophon", "symbol": "SOPH"},
|
|
2696
|
+
"networkId": 50104,
|
|
2697
|
+
"rpc": ["https://rpc.sophon.xyz"],
|
|
2698
|
+
"shortName": "sophon",
|
|
2699
|
+
"slip44": None,
|
|
2700
|
+
},
|
|
2701
|
+
"sepolia": {
|
|
2702
|
+
"chain": "Sophon Testnet",
|
|
2703
|
+
"chainId": 531050104,
|
|
2704
|
+
"ens": None,
|
|
2705
|
+
"explorers": [
|
|
2706
|
+
{
|
|
2707
|
+
"icon": "sophon-testnet",
|
|
2708
|
+
"name": "Sophon Block Explorer",
|
|
2709
|
+
"standard": "none",
|
|
2710
|
+
"url": "https://explorer.testnet.sophon.xyz",
|
|
2711
|
+
}
|
|
2712
|
+
],
|
|
2713
|
+
"faucets": [],
|
|
2714
|
+
"features": None,
|
|
2715
|
+
"icon": None,
|
|
2716
|
+
"infoURL": "",
|
|
2717
|
+
"name": "Sophon Testnet",
|
|
2718
|
+
"nativeCurrency": {"decimals": 18, "name": "Sophon", "symbol": "SOPH"},
|
|
2719
|
+
"networkId": 531050104,
|
|
2720
|
+
"rpc": ["https://rpc.testnet.sophon.xyz"],
|
|
2721
|
+
"shortName": "sophon-testnet",
|
|
2722
|
+
"slip44": None,
|
|
2723
|
+
},
|
|
2724
|
+
},
|
|
2600
2725
|
"soneium": {
|
|
2601
2726
|
"minato": {
|
|
2602
2727
|
"chain": "ETH",
|
|
@@ -2665,6 +2790,58 @@ PUBLIC_CHAIN_META: Dict[str, Dict[str, Dict[str, Any]]] = {
|
|
|
2665
2790
|
"slip44": None,
|
|
2666
2791
|
},
|
|
2667
2792
|
},
|
|
2793
|
+
"swellchain": {
|
|
2794
|
+
"mainnet": {
|
|
2795
|
+
"chain": "ETH",
|
|
2796
|
+
"chainId": 1923,
|
|
2797
|
+
"ens": None,
|
|
2798
|
+
"explorers": [
|
|
2799
|
+
{
|
|
2800
|
+
"name": "Swellchain Explorer",
|
|
2801
|
+
"standard": "none",
|
|
2802
|
+
"url": "https://explorer.swellnetwork.io",
|
|
2803
|
+
}
|
|
2804
|
+
],
|
|
2805
|
+
"faucets": [],
|
|
2806
|
+
"features": None,
|
|
2807
|
+
"icon": "swell",
|
|
2808
|
+
"infoURL": "https://app.swellnetwork.io/layer2/swell-l2",
|
|
2809
|
+
"name": "Swellchain",
|
|
2810
|
+
"nativeCurrency": {"decimals": 18, "name": "Ether", "symbol": "ETH"},
|
|
2811
|
+
"networkId": 1923,
|
|
2812
|
+
"rpc": [
|
|
2813
|
+
"https://swell-mainnet.alt.technology",
|
|
2814
|
+
"https://rpc.ankr.com/swell",
|
|
2815
|
+
],
|
|
2816
|
+
"shortName": "swellchain",
|
|
2817
|
+
"slip44": None,
|
|
2818
|
+
},
|
|
2819
|
+
"sepolia": {
|
|
2820
|
+
"chain": "ETH",
|
|
2821
|
+
"chainId": 1924,
|
|
2822
|
+
"ens": None,
|
|
2823
|
+
"explorers": [
|
|
2824
|
+
{
|
|
2825
|
+
"name": "Swellchain Testnet Explorer",
|
|
2826
|
+
"standard": "none",
|
|
2827
|
+
"url": "https://swell-testnet-explorer.alt.technology",
|
|
2828
|
+
}
|
|
2829
|
+
],
|
|
2830
|
+
"faucets": [],
|
|
2831
|
+
"features": None,
|
|
2832
|
+
"icon": "swell",
|
|
2833
|
+
"infoURL": "https://app.swellnetwork.io/layer2/swell-l2",
|
|
2834
|
+
"name": "Swellchain Testnet",
|
|
2835
|
+
"nativeCurrency": {"decimals": 18, "name": "Ether", "symbol": "ETH"},
|
|
2836
|
+
"networkId": 1924,
|
|
2837
|
+
"rpc": [
|
|
2838
|
+
"https://swell-testnet.alt.technology",
|
|
2839
|
+
"https://rpc.ankr.com/swell-testnet",
|
|
2840
|
+
],
|
|
2841
|
+
"shortName": "swellchain-sep",
|
|
2842
|
+
"slip44": None,
|
|
2843
|
+
},
|
|
2844
|
+
},
|
|
2668
2845
|
"taiko": {
|
|
2669
2846
|
"mainnet": {
|
|
2670
2847
|
"chain": "ETH",
|
|
@@ -2762,6 +2939,36 @@ PUBLIC_CHAIN_META: Dict[str, Dict[str, Dict[str, Any]]] = {
|
|
|
2762
2939
|
"shortName": "unichain-sep",
|
|
2763
2940
|
"slip44": None,
|
|
2764
2941
|
},
|
|
2942
|
+
"mainnet": {
|
|
2943
|
+
"chain": "ETH",
|
|
2944
|
+
"chainId": 130,
|
|
2945
|
+
"ens": None,
|
|
2946
|
+
"explorers": [
|
|
2947
|
+
{
|
|
2948
|
+
"name": "Unichain Mainnet Explorer",
|
|
2949
|
+
"standard": "EIP3091",
|
|
2950
|
+
"url": "https://uniscan.xyz",
|
|
2951
|
+
},
|
|
2952
|
+
{
|
|
2953
|
+
"name": "Unichain Mainnet Explorer",
|
|
2954
|
+
"standard": "EIP3091",
|
|
2955
|
+
"url": "https://unichain.blockscout.com",
|
|
2956
|
+
},
|
|
2957
|
+
],
|
|
2958
|
+
"faucets": [],
|
|
2959
|
+
"features": None,
|
|
2960
|
+
"icon": "unichain",
|
|
2961
|
+
"infoURL": "https://unichain.org",
|
|
2962
|
+
"name": "Unichain",
|
|
2963
|
+
"nativeCurrency": {"decimals": 18, "name": "Ether", "symbol": "ETH"},
|
|
2964
|
+
"networkId": 130,
|
|
2965
|
+
"rpc": [
|
|
2966
|
+
"https://mainnet.unichain.org",
|
|
2967
|
+
"https://unichain-rpc.publicnode.com",
|
|
2968
|
+
],
|
|
2969
|
+
"shortName": "unichain",
|
|
2970
|
+
"slip44": None,
|
|
2971
|
+
},
|
|
2765
2972
|
},
|
|
2766
2973
|
"wemix": {
|
|
2767
2974
|
"mainnet": {
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""Types used in the evmchains package."""
|
|
2
|
+
|
|
3
|
+
# ruff: noqa: N815
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
from pydantic import BaseModel
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class Chain(BaseModel):
|
|
10
|
+
"""Chain object format for chain data from ethereum-lists/chains."""
|
|
11
|
+
|
|
12
|
+
chainId: int
|
|
13
|
+
networkId: int
|
|
14
|
+
name: str
|
|
15
|
+
shortName: str
|
|
16
|
+
chain: str
|
|
17
|
+
infoURL: str
|
|
18
|
+
rpc: list[str]
|
|
19
|
+
faucets: list[str]
|
|
20
|
+
nativeCurrency: dict[str, Any]
|
|
21
|
+
explorers: list[dict[str, str]] = []
|
|
22
|
+
icon: str | None = None
|
|
23
|
+
features: list[dict[str, str]] | None = None
|
|
24
|
+
slip44: int | None = None
|
|
25
|
+
ens: dict[str, str] | None = None
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
# file generated by setuptools-scm
|
|
2
2
|
# don't change, don't track in version control
|
|
3
3
|
|
|
4
|
-
__all__ = [
|
|
4
|
+
__all__ = [
|
|
5
|
+
"__version__",
|
|
6
|
+
"__version_tuple__",
|
|
7
|
+
"version",
|
|
8
|
+
"version_tuple",
|
|
9
|
+
"__commit_id__",
|
|
10
|
+
"commit_id",
|
|
11
|
+
]
|
|
5
12
|
|
|
6
13
|
TYPE_CHECKING = False
|
|
7
14
|
if TYPE_CHECKING:
|
|
@@ -9,13 +16,19 @@ if TYPE_CHECKING:
|
|
|
9
16
|
from typing import Union
|
|
10
17
|
|
|
11
18
|
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
19
|
+
COMMIT_ID = Union[str, None]
|
|
12
20
|
else:
|
|
13
21
|
VERSION_TUPLE = object
|
|
22
|
+
COMMIT_ID = object
|
|
14
23
|
|
|
15
24
|
version: str
|
|
16
25
|
__version__: str
|
|
17
26
|
__version_tuple__: VERSION_TUPLE
|
|
18
27
|
version_tuple: VERSION_TUPLE
|
|
28
|
+
commit_id: COMMIT_ID
|
|
29
|
+
__commit_id__: COMMIT_ID
|
|
19
30
|
|
|
20
|
-
__version__ = version = '0.1.
|
|
21
|
-
__version_tuple__ = version_tuple = (0, 1,
|
|
31
|
+
__version__ = version = '0.1.6'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 1, 6)
|
|
33
|
+
|
|
34
|
+
__commit_id__ = commit_id = 'g96cad7d49'
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: evmchains
|
|
3
|
+
Version: 0.1.6
|
|
4
|
+
Summary: Packaged metadata on Ethereum Virtual Machine (EVM) chains
|
|
5
|
+
Author-email: ApeWorX <admin@apeworx.io>
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Project-URL: Homepage, https://github.com/ApeWorX/evmchains
|
|
8
|
+
Project-URL: Documentation, https://github.com/ApeWorX/evmchains#readme
|
|
9
|
+
Project-URL: Issues, https://github.com/ApeWorX/evmchains/issues
|
|
10
|
+
Project-URL: Source, https://github.com/ApeWorX/evmchains
|
|
11
|
+
Keywords: ethereum,evm,blockchain
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Natural Language :: English
|
|
15
|
+
Classifier: Operating System :: MacOS
|
|
16
|
+
Classifier: Operating System :: POSIX
|
|
17
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
24
|
+
Requires-Python: >=3.10
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Dist: pydantic<3,>=2.5.3
|
|
28
|
+
Dynamic: license-file
|
|
29
|
+
|
|
30
|
+
# Python EVM Chains Metadata
|
|
31
|
+
|
|
32
|
+
Provides general metadata on EVM-compatible chains organized by Ape-style ecosystem and network.
|
|
33
|
+
|
|
34
|
+
Original source data: https://github.com/ethereum-lists/chains
|
|
35
|
+
|
|
36
|
+
## Quick Start
|
|
37
|
+
|
|
38
|
+
## Dependencies
|
|
39
|
+
|
|
40
|
+
- [python3](https://www.python.org/downloads) version 3.8 up to 3.12.
|
|
41
|
+
|
|
42
|
+
## Installation
|
|
43
|
+
|
|
44
|
+
### via `pip`
|
|
45
|
+
|
|
46
|
+
You can install the latest release via [`pip`](https://pypi.org/project/pip/):
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
pip install evmchains
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### via `setuptools`
|
|
53
|
+
|
|
54
|
+
You can clone the repository and use [`setuptools`](https://github.com/pypa/setuptools) for the most up-to-date version:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
git clone https://github.com/ApeWorX/evmchains.git
|
|
58
|
+
cd evmchains
|
|
59
|
+
python3 setup.py install
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Quick Usage
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
from evmchains import get_chain_meta
|
|
66
|
+
chain = get_chain_meta("ethereum", "mainnet")
|
|
67
|
+
assert chain.chainId == 1
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Development
|
|
71
|
+
|
|
72
|
+
Please see the [contributing guide](CONTRIBUTING.md) to learn more how to contribute to this project.
|
|
73
|
+
Comments, questions, criticisms and pull requests are welcomed.
|
|
74
|
+
|
|
75
|
+
### Adding Chains
|
|
76
|
+
|
|
77
|
+
To add a chain to the metadata, please open a pull request with the following changes:
|
|
78
|
+
|
|
79
|
+
- Update `CHAIN_IDS` in `scripts/update.py` with the chain IDs you want to add
|
|
80
|
+
- Run `python scripts/update.py`
|
|
81
|
+
- Submit a PR with the updated script and updated `evmchain/chains.py` metdata file
|
|
82
|
+
|
|
83
|
+
**Do not edit `evmchain/chains.py` manually.** Any manual changes are likely to be overwritten later.
|
|
@@ -3,15 +3,13 @@ CONTRIBUTING.md
|
|
|
3
3
|
LICENSE
|
|
4
4
|
README.md
|
|
5
5
|
pyproject.toml
|
|
6
|
-
|
|
7
|
-
setup.py
|
|
8
|
-
.github/workflows/release.yaml
|
|
6
|
+
.github/workflows/publish.yaml
|
|
9
7
|
.github/workflows/test.yaml
|
|
10
8
|
evmchains/__init__.py
|
|
11
|
-
evmchains/_meta.py
|
|
12
9
|
evmchains/chains.py
|
|
13
10
|
evmchains/py.typed
|
|
14
11
|
evmchains/types.py
|
|
12
|
+
evmchains/version.py
|
|
15
13
|
evmchains.egg-info/PKG-INFO
|
|
16
14
|
evmchains.egg-info/SOURCES.txt
|
|
17
15
|
evmchains.egg-info/dependency_links.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pydantic<3,>=2.5.3
|