Skip to main content

CPChain ABI Utils

Project description

Ethereum Contract

|Build Status| |Documentation Status| |PyPi version|

Python utilities for working with the Ethereum ABI

Installation

.. code:: sh

pip install cpc-abi

Documentation

Decoding


These functions are intended for decoding return values from the EVM.

-  ``eth_abi.decode_single(type, data)``

This function tries to decode ``data`` into the python type that
corresponds to the provided ``type``. This function accepts data of type
bytes.

.. code-block:: python

::

   >>> decode_single('uint256', b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0009')
   12345

The **value** parameter is expected to be one of the recognized EVM
types.

.. note:: This function cannot be used to decode dynamic or array types
such as ``bytes32[]``.

-  ``eth_abi.decode_abi(types, data)``

This function decodes ``data`` into the python type corresponding to the
provided ``types``. This function accepts arrays of type byte.

.. code-block:: python

::

   >>> decode_abi(['uint256'], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0009')
   [12345]
   >>> decode_abi(['bytes32', 'bytes32'], b'a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
   ['a', 'b']

The **values** parameter is expected to be an iterable whose values are
all one of the recognized EVM types.

Encoding

These functions are intended for encoding python values into representations that are suitable for interacting with the EVM.

  • eth_abi.encode_single(type, value)

This function encodes value in the ABI encoding for the provided type.

.. code-block:: python

::

encode_single('uint256', 12345) b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0009'

The value parameter is expected to be one of the recognized EVM types.

.. note:: This function cannot be used to encode array types such as bytes32[].

  • eth_abi.encode_abi(types, values)

This function encodes values in the ABI encoding for the corresponding type provided by the types argument.

.. code-block:: python

::

encode_abi(['uint256'], [12345]) b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0009' encode_abi(['bytes32', 'bytes32'], ['a', 'b']) b'a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

The values parameter is expected to be an iterable whose values are all one of the recognized EVM types.

Development

Clone the repository and then run:

.. 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

   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``.

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"``

.. |Build Status| image:: https://circleci.com/gh/ethereum/eth-abi.svg?style=shield
   :target: https://circleci.com/gh/ethereum/eth-abi
.. |Documentation Status| image:: https://readthedocs.org/projects/eth-abi/badge/?version=latest
   :target: https://readthedocs.org/projects/eth-abi/?badge=latest
.. |PyPi version| image:: https://img.shields.io/pypi/v/eth-abi.svg
   :target: https://pypi.python.org/pypi/eth-abi

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cpc-abi-1.3.4.tar.gz (20.3 kB view details)

Uploaded Source

Built Distribution

cpc_abi-1.3.4-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

Details for the file cpc-abi-1.3.4.tar.gz.

File metadata

  • Download URL: cpc-abi-1.3.4.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

File hashes

Hashes for cpc-abi-1.3.4.tar.gz
Algorithm Hash digest
SHA256 7db0f003ab77ed8a1a7017fa22924f6f0277718ece45d688cefe90fbece974a3
MD5 864e48a8a49950265627b5d4685e9191
BLAKE2b-256 7879641b849727a26cd36c240268b5f0ad6636a6c0f2e97d805b4f03139c1abe

See more details on using hashes here.

File details

Details for the file cpc_abi-1.3.4-py3-none-any.whl.

File metadata

  • Download URL: cpc_abi-1.3.4-py3-none-any.whl
  • Upload date:
  • Size: 21.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

File hashes

Hashes for cpc_abi-1.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 98ae3b2943eaddad1b690e95946592bed74bff1fbf9aeed6e4be543e054c962e
MD5 1cb0c9237f5a1031202780bd9d23d9ba
BLAKE2b-256 c5202da9396c01598c6237be5823989f8ccb43147e30251d9314705871c90826

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page