adding poetry usage
This commit is contained in:
parent
94ed945070
commit
2aba69874a
88
README.md
88
README.md
@ -1,5 +1,5 @@
|
||||
# mev-inspect
|
||||
A [WIP] Ethereum MEV Inspector in Python
|
||||
A [WIP] Ethereum MEV Inspector in Python managed by Poetry
|
||||
|
||||
## Containers
|
||||
mev-inspect's local setup is built on [Docker Compose](https://docs.docker.com/compose/)
|
||||
@ -12,44 +12,64 @@ By default it starts up:
|
||||
## Running locally
|
||||
Setup [Docker](https://www.docker.com/products/docker-desktop)
|
||||
|
||||
Start the services with Docker Compose
|
||||
Start the services (optionally as background processes)
|
||||
```
|
||||
docker compose up
|
||||
```
|
||||
or to run in the background
|
||||
```
|
||||
docker compose up -d
|
||||
poetry run start [-b]
|
||||
```
|
||||
|
||||
To stop the services (if running in the background, otherwise just ctrl+c)
|
||||
```
|
||||
docker compose down
|
||||
poetry run stop
|
||||
```
|
||||
|
||||
Check `docker compose help` for more tools available
|
||||
MEV container can be attached via
|
||||
```
|
||||
poetry run attach
|
||||
```
|
||||
|
||||
Running additional compose commands are possible through standard `docker
|
||||
compose ...` calls. Check `docker compose help` for more tools available
|
||||
|
||||
## Executing scripts
|
||||
To run a command, prefix it with
|
||||
Inspection is the only simplified api available through poetry at the moment
|
||||
with a more generalized api on the horizon.
|
||||
|
||||
Inspect scripts must have `-script`, `-block_number` and `-rpc` arguments.
|
||||
Using the uniswap inspect from `./examples`
|
||||
```
|
||||
docker compose exec mev-inspect <YOUR COMMAND>
|
||||
poetry run inspect -script ./examples/uniswap_inspect.py -block_number 11931271 \
|
||||
-rpc 'http://111.11.11.111:8545'
|
||||
```
|
||||
|
||||
For example, to run `testing_file.py`:
|
||||
Generalized user defined scripts can still be run through the docker interface as
|
||||
```
|
||||
docker compose exec mev-inspect python testing_file.py \
|
||||
-block_number 11931271 \
|
||||
-rpc 'http://111.11.11.111:8545'
|
||||
```
|
||||
### Poetry Scripts
|
||||
```bash
|
||||
# code check
|
||||
poetry run lint # linting via Pylint
|
||||
poetry run test # testing and code coverage with Pytest
|
||||
poetry run isort # fixing imports
|
||||
poetry run mypy # type checking
|
||||
poetry run black # style guide
|
||||
poetry run pre-commit # runs Black, PyLint and MyPy
|
||||
# docker management
|
||||
poetry run start [-b] # starts all services, optionally in the background
|
||||
poetry run stop # shutsdown all services or just ctrl + c if foreground
|
||||
poetry run build # rebuilds containers
|
||||
poetry run attach # enters the mev-inspect container in interactive mode
|
||||
# launches inspection script
|
||||
poetry run inspect -script ... -block_number ... -rpc ...
|
||||
```
|
||||
|
||||
Or to run the tests:
|
||||
```
|
||||
docker compose exec mev-inspect python -m unittest tests/*py
|
||||
```
|
||||
|
||||
## Rebuilding containers
|
||||
After changes to the app's Dockerfile, rebuild with
|
||||
```
|
||||
docker compose build
|
||||
poetry run build
|
||||
```
|
||||
|
||||
## Using PGAdmin
|
||||
@ -63,34 +83,26 @@ docker compose build
|
||||
- user / password: see `.env`
|
||||
|
||||
## Contributing
|
||||
Contributing requires installing the pre-commit hooks
|
||||
Development can be done locally or in the docker container. Use local if
|
||||
contributions can be fully tested without invoking the database related
|
||||
services.
|
||||
|
||||
1 . Ensure you're using python 3.9
|
||||
|
||||
If not, [pyenv](https://github.com/pyenv/pyenv) is a great option for managing python versions
|
||||
|
||||
2. Create a virtualenv
|
||||
1. Install dependencies and build python environment
|
||||
```
|
||||
python3 -m venv venv
|
||||
poetry install
|
||||
```
|
||||
|
||||
3. Activate it
|
||||
or with docker
|
||||
```
|
||||
. venv/bin/activate
|
||||
poetry run build
|
||||
```
|
||||
(exit with `deactivate`)
|
||||
|
||||
4. Install dev libraries
|
||||
2. Pre-commit is used to maintain a consistent style, prevent errors and ensure
|
||||
test coverage. Make sure to fix any errors presented via Black, Pylint and
|
||||
MyPy pre-commit hooks
|
||||
```
|
||||
pip install -r requirements_dev.txt
|
||||
poetry run pre-commit --all-files
|
||||
```
|
||||
|
||||
5. Install pre-commit
|
||||
```
|
||||
pre-commit install
|
||||
```
|
||||
|
||||
6. Install pre-commit's dependencies and ensure it's working
|
||||
or within docker
|
||||
```
|
||||
pre-commit run --all-files
|
||||
```
|
||||
3. Update README if needed
|
||||
|
Loading…
x
Reference in New Issue
Block a user