https://github.com/mikeshultz/python-eips
Python library for EIP parsing and interaction
https://github.com/mikeshultz/python-eips
ethereum python
Last synced: about 1 month ago
JSON representation
Python library for EIP parsing and interaction
- Host: GitHub
- URL: https://github.com/mikeshultz/python-eips
- Owner: mikeshultz
- License: mit
- Created: 2023-10-03T01:50:55.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-12-01T22:18:30.000Z (over 1 year ago)
- Last Synced: 2025-02-22T22:27:48.991Z (over 1 year ago)
- Topics: ethereum, python
- Language: Python
- Homepage:
- Size: 69.3 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Ethereum Improvement Proposal (EIP) Processor
CLI tools and Python library for interacting with EIPs from the [source EIPs GitHub repository](https://github.com/ethereum/EIPs).
## Features/TODO
Frontend
- [X] CLI tools
- [X] Library API
- [ ] Documentation
Data processing:
- [X] EIP Metadata processing
- [ ] EIP relationships and references
- [ ] Automated tagging
- [ ] File history, changelog
- [X] Aggregate data, statistics, and error detection
- [ ] Indicate document deletion in some fashion (file flag, and empty props?)
## Usage
### Show EIP
```bash
eips show 712
```
### Show EIP Headers
```bash
eips show -i 4626
```
### Show ERC
```bash
eips show 20
```
## API Usage
### Get an EIP
```python
>>> from eips import EIPs
>>> eips = EIPs()
>>> eip_20 = eips.get(20)[0]
>>> eip_20.title
'Token Standard'
```
### Get all EIPs
```python
>>> from eips import EIPs
>>> eips = EIPs()
>>> for e in eips.get():
... print(e.eip_id)
...
2018
5216
999
606
[...]
```
### Get count of EIPs
```python
>>> from eips import EIPs
>>> eips = EIPs()
>>> eips.len()
687
```
### Get EIPs aggregate stats
```python
>>> from eips import EIPs
>>> eips = EIPs()
>>> eips.stats().total
687
>>> eips.stats().errors
0
>>> [c.value for c in eips.stats().categories]
['ERC', 'Core', 'Interface', 'Networking']
>>> [s.value for s in eips.stats().statuses]
['Stagnant', 'Last Call', 'Withdrawn', 'Final', 'Review', 'Draft', 'Living']
>>> [t.value for t in eips.stats().types]
['Standards Track', 'Meta', 'Informational']
```
## Development
### Run Tests
```bash
hatch run test
```
### Linting
```bash
hatch run lint
```
### Release
To release, create and publish a GitHub package release
```bash
# Bump the version major/minor/patch
hatch version patch
# Tag the git commit with the version
git tag -a "v$(hatch version)" -m "v$(hatch version)"
# Push it up to GH, don't forget the tag
git push --follow-tags
```
Now [create a GitHub release](https://github.com/mikeshultz/python-eips/releases/new) and CI will do the rest.