twig
Join the chat at https://gitter.im/ethereum/twig <https://gitter.im/ethereum/twig?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge>
__
Build Status <https://circleci.com/gh/ethereum/twig>
__ PyPI version <https://badge.fury.io/py/twig>
__ Python versions <https://pypi.python.org/pypi/twig>
__ Docs build <https://twig-eth.readthedocs.io/en/latest/>
__
A tool for Ethereum smart contract development.
Read more in the documentation on ReadTheDocs <https://twig-eth.readthedocs.io/>
. View the change log <https://twig-eth.readthedocs.io/en/latest/releases.html>
.
Quickstart
.. code:: sh
pip install twig
Developer Setup
If you would like to hack on twig, please check out the Ethereum Development Tactical Manual <https://github.com/pipermerriam/ethereum-dev-tactical-manual>
__
for information on how we do:
- Testing
- Pull Requests
- Code Style
- Documentation
Development Environment Setup
You can set up your dev environment with:
.. code:: sh
git clone git@github.com:ethereum/twig.git
cd twig
virtualenv -p python3 venv
. venv/bin/activate
pip install -e .[dev]
Testing Setup
~~~~~~~~~~~~~
During development, you might like to have tests run on every file save.
Show flake8 errors on file change:
.. code:: sh
# Test flake8
when-changed -v -s -r -1 twig/ tests/ -c "clear; flake8 twig tests && echo 'flake8 success' || echo 'error'"
Run multi-process tests in one command, but without color:
.. code:: sh
# in the project root:
pytest --numprocesses=4 --looponfail --maxfail=1
# the same thing, succinctly:
pytest -n 4 -f --maxfail=1
Run in one thread, with color and desktop notifications:
.. code:: sh
cd venv
ptw --onfail "notify-send -t 5000 'Test failure ⚠⚠⚠⚠⚠' 'python 3 test on twig failed'" ../tests ../twig
Release setup
~~~~~~~~~~~~~
For Debian-like systems:
::
apt install pandoc
To release a new version:
.. code:: sh
make release bump=$$VERSION_PART_TO_BUMP$$
How to bumpversion
^^^^^^^^^^^^^^^^^^
The version format for this repo is ``{major}.{minor}.{patch}`` for
stable, and ``{major}.{minor}.{patch}-{stage}.{devnum}`` for unstable
(``stage`` can be alpha or beta).
To issue the next version in line, specify which part to bump, like
``make release bump=minor`` or ``make release bump=devnum``. This is
typically done from the master branch, except when releasing a beta (in
which case the beta is released from master, and the previous stable
branch is released from said branch). To include changes made with each
release, update “docs/releases.rst” with the changes, and apply commit
directly to master before release.
If you are in a beta version, ``make release bump=stage`` will switch to
a stable.
To issue an unstable version when the current version is stable, specify
the new version explicitly, like
``make release bump="--new-version 4.0.0-alpha.1 devnum"``