Brownie
Brownie is a Python-based development and testing framework for smart contracts targeting the Ethereum Virtual Machine.
Features
- Full support for Solidity (
>=0.4.22) and Vyper (0.1.0b-15) - Contract testing via pytest, including trace-based coverage evaluation
- Powerful debugging tools, including python-style tracebacks and custom error strings
- Built-in console for quick project interaction
- Support for ethPM packages
Dependencies
- ganache-cli - tested with version 6.7.0
- pip
- python3 version 3.6 or greater, python3-dev
As Brownie relies on py-solc-x, you do not need solc installed locally but you must install all required solc dependencies.
Installation
You can install the latest release via pip:
pip install eth-brownie
Or clone the repository and use setuptools for the most up-to-date version:
python3 setup.py install
Quick Usage
To set up the default folder and file structure for Brownie use:
brownie init
Next, type brownie --help for basic usage information.
Documentation
Brownie documentation is hosted at Read the Docs.
Testing
To run the tests, first install the developer dependencies:
pip install -r requirements-dev.txt
Then use tox to run the complete suite against the full set of build targets, or pytest to run tests against a specific version of Python. If you are using pytest you must include the -p no:pytest-brownie flag to prevent it from loading the Brownie plugin.
Using Docker
You can use a sandbox container provided in the docker-compose.yml file for testing inside a Docker environment.
This container provides everything you need to test using a Python 3.6 interpreter.
Start the test environment:
docker-compose up -d
To open a session to the container:
docker-compose exec sandbox bash
To run arbitrary commands, use the bash -c prefix.
docker-compose exec sandbox bash -c ''
For example, to run the tests in brownie/tests/test_format_input.py:
docker-compose exec sandbox bash -c 'python -m pytest tests/convert/test_format_input.py'
Contributing
Help is always appreciated! Feel free to open an issue if you find a problem, or a pull request if you've solved an issue.
Join the Brownie Gitter channel if you have any questions.
Pre-Commit Hooks
We use pre-commit hooks, primarily to ensure consistent formatting among contributors.
If you haven't already, install all dev dependencies in requirements-dev.txt to enable pre-commit hooks.
Install pre-commit locally from the brownie root folder:
pre-commit install
Commiting will now automatically run the local pre-commit hooks.
If, for some reason, you need to force the commit without running the pre-commit hooks, you can manually disable the pre-commit.
git commit -m "commit message" --no-verify
License
This project is licensed under the MIT license.
Metadata
Release files for eth-brownie 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| eth-brownie-1.4.0.tar.gz | 83.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| eth_brownie-1.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 187.0 kB
Release files / eth-brownie-1.4.0.tar.gz
| Download URL | eth-brownie-1.4.0.tar.gz |
|---|---|
| Size | 83.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7fde648100aa22b80f7ca017ed001a3ea9a80e553d4d50b6b298f39c30c5fd39
|
|
BLAKE2b-256 checksum How to use checksums |
2786311482adda90d6a29cf684daeb4809d01fa1adea245946c135c2982c1cfe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.5
|
Release files / eth_brownie-1.4.0-py3-none-any.whl
| Download URL | eth_brownie-1.4.0-py3-none-any.whl |
|---|---|
| Size | 104.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d0a6fa53a78e913a00d03bcea4ba6e493c1f7b0d96c86b1c1100077d1c36f10d
|
|
BLAKE2b-256 checksum How to use checksums |
485eea2d7f8c317c6c8393868e4ec3a442fb9e0dd11b9e7daccabc2ff7192c57
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.5
|