Metadata-Version: 2.0
Name: py-evm
Version: 0.2.0a12
Summary: Python implementation of the Ethereum Virtual Machine
Home-page: https://github.com/ethereum/py-evm
Author: Piper Merriam
Author-email: piper@pipermerriam.com
License: MIT
Description-Content-Type: UNKNOWN
Keywords: ethereum blockchain evm
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.5
Requires-Dist: aiohttp (<3.0.0,>=2.3.1)
Requires-Dist: async-lru (<1.0.0,>=0.1.0)
Requires-Dist: cryptography (<3.0.0,>=2.0.3)
Requires-Dist: cytoolz (<1.0.0,>=0.9.0)
Requires-Dist: eth-bloom (<2.0.0,>=1.0.0)
Requires-Dist: eth-utils (<2.0.0,>=1.0.1)
Requires-Dist: pyethash (<1.0.0,>=0.1.27)
Requires-Dist: py-ecc (<2.0.0,>=1.4.2)
Requires-Dist: rlp (<1.0.0,>=0.4.7)
Requires-Dist: eth-keys (<1.0.0,>=0.2.0b3)
Requires-Dist: trie (<2.0.0,>=1.3.0)
Requires-Dist: eth-tester (==0.1.0b21)
Requires-Dist: web3 (<5.0.0,>=4.0.0b6)
Provides-Extra: coincurve
Requires-Dist: coincurve (<8.0.0,>=7.0.0); extra == 'coincurve'
Provides-Extra: leveldb
Requires-Dist: leveldb (<1.0.0,>=0.194); extra == 'leveldb'
Provides-Extra: p2p
Requires-Dist: aiohttp (<3.0.0,>=2.3.1); extra == 'p2p'
Requires-Dist: async-lru (<1.0.0,>=0.1.0); extra == 'p2p'
Provides-Extra: trinity
Requires-Dist: leveldb (<1.0.0,>=0.194); extra == 'trinity'
Requires-Dist: coincurve (<8.0.0,>=7.0.0); extra == 'trinity'
Requires-Dist: eth-hash[pycryptodome] (<1.0.0,>=0.1.0a4); extra == 'trinity'

Python Implementation of the EVM
================================

|Join the chat at https://gitter.im/ethereum/py-evm| |Documentation
Status|

`Documentation hosted by
ReadTheDocs <http://py-evm.readthedocs.io/en/latest/>`__

Introducing Py-EVM
------------------

Py-EVM is a new implementation of the Ethereum Virtual Machine written
in python. It is currently in active development but is quickly
progressing through the test suite provided by ethereum/tests. We have
Vitalik, and the existing PyEthereum code to thank for the quick
progress we’ve made as many design decisions were inspired, or even
directly ported from the PyEthereum codebase.

Goals
~~~~~

Py-EVM aims to eventually become the defacto Python implementation of
the EVM, enabling a wide array of use cases for both public and private
chains. Development will focus on creating an EVM with a well defined
API, friendly and easy to digest documentation which can be run as a
fully functional mainnet node.

In particular Py-EVM aims to:

-  be an example implementation of the EVM in one of the most widely
   used and understood languages, Python.

-  deliver the low level APIs for clients to build full or light nodes
   on top of

-  be easy to understand and modifiable

-  be highly flexible to support both research as well as alternate use
   cases like private chains.

Trinity
~~~~~~~

While Py-EVM provides the low level APIs of the EVM, it does not aim to
implement a full or light node directly.

We provide a base implementation of a full node called Trinity that is
based on Py-EVM.

In the future there may be alternative clients based on the Py-EVM.

Step 1: Alpha Release
~~~~~~~~~~~~~~~~~~~~~

The plan is to begin with an MVP, alpha-level release that is suitable
for testing purposes. We’ll be looking for early adopters to provide
feedback on our architecture and API choices as well as general feedback
and bug finding.

Blog posts:
^^^^^^^^^^^

-  https://medium.com/@pipermerriam/py-evm-part-1-origins-25d9ad390b

Development
-----------

Py-EVM depends on a submodule of the common tests across all clients, so
you need to clone the repo with the ``--recursive`` flag. Example:

.. code:: sh

    git clone --recursive git@github.com:ethereum/py-evm.git

Then install the required python packages via:

.. code:: sh

    pip install -e . -r requirements-dev.txt

Running the tests
~~~~~~~~~~~~~~~~~

You can run the tests with:

.. code:: sh

    py.test tests

Or you can install ``tox`` to run the full test suite.

Releasing
~~~~~~~~~

Pandoc is required for transforming the markdown README to the proper
format to render correctly on pypi.

For Debian-like systems:

::

    apt install pandoc

Or on OSX:

.. code:: sh

    brew install pandoc

To release a new version:

.. code:: sh

    bumpversion $$VERSION_PART_TO_BUMP$$
    git push && git push --tags
    make release

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, use bumpversion and specify which
part to bump, like ``bumpversion minor`` or ``bumpversion devnum``.

If you are in a beta version, ``bumpversion stage`` will switch to a
stable.

To issue an unstable version when the current version is stable, specify
the new version explicitly, like
``bumpversion --new-version 4.0.0-alpha.1 devnum``

.. |Join the chat at https://gitter.im/ethereum/py-evm| image:: https://badges.gitter.im/ethereum/py-evm.svg
   :target: https://gitter.im/ethereum/py-evm
.. |Documentation Status| image:: https://readthedocs.org/projects/py-evm/badge/?version=latest
   :target: http://py-evm.readthedocs.io/en/latest/?badge=latest


