Socket
Socket
Sign inDemoInstall

py-solc

Package Overview
Dependencies
1
Maintainers
2
Alerts
File Explorer

Install Socket

Detect and block malicious and high-risk dependencies

Install

    py-solc

Python wrapper around the solc binary


Maintainers
2

Readme

py-solc

|Build Status| |PyPi version| |PyPi downloads|

Python wrapper around the solc Solidity compiler.

Dependency

This library requires the solc executable to be present.

Only versions >=0.4.2 are supported and tested though this library may work with other versions.

solc installation instructions <http://solidity.readthedocs.io/en/latest/installing-solidity.html>__

Quickstart

Installation

.. code:: sh

pip install py-solc

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

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

Standard JSON Compilation
-------------------------

Use the ``solc.compile_standard`` function to make use the
[standard-json] compilation feature.

`Solidity Documentation for Standard JSON input and ouptup
format <http://solidity.readthedocs.io/en/develop/using-the-compiler.html#compiler-input-and-output-json-description>`__

::

    >>> from solc import compile_standard
    >>> compile_standard({
    ...     'language': 'Solidity',
    ...     'sources': {'Foo.sol': 'content': "...."},
    ... })
    {
        'contracts': {...},
        'sources': {...},
        'errors': {...},
    }
    >>> compile_standard({
    ...     'language': 'Solidity',
    ...     'sources': {'Foo.sol': 'urls': ["/path/to/my/sources/Foo.sol"]},
    ... }, allow_paths="/path/to/my/sources")
    {
        'contracts': {...},
        'sources': {...},
        'errors': {...},
    }

Legacy Combined JSON compilation
--------------------------------

.. code:: python

    >>> from solc import compile_source, compile_files, link_code
    >>> compile_source("contract Foo { function Foo() {} }")
    {
        'Foo': {
            'abi': [{'inputs': [], 'type': 'constructor'}],
            'code': '0x60606040525b5b600a8060126000396000f360606040526008565b00',
            'code_runtime': '0x60606040526008565b00',
            'source': None,
            'meta': {
                'compilerVersion': '0.3.5-9da08ac3',
                'language': 'Solidity',
                'languageVersion': '0',
            },
        },
    }
    >>> compile_files(["/path/to/Foo.sol", "/path/to/Bar.sol"])
    {
        'Foo': {
            'abi': [{'inputs': [], 'type': 'constructor'}],
            'code': '0x60606040525b5b600a8060126000396000f360606040526008565b00',
            'code_runtime': '0x60606040526008565b00',
            'source': None,
            'meta': {
                'compilerVersion': '0.3.5-9da08ac3',
                'language': 'Solidity',
                'languageVersion': '0',
            },
        },
        'Bar': {
            'abi': [{'inputs': [], 'type': 'constructor'}],
            'code': '0x60606040525b5b600a8060126000396000f360606040526008565b00',
            'code_runtime': '0x60606040526008565b00',
            'source': None,
            'meta': {
                'compilerVersion': '0.3.5-9da08ac3',
                'language': 'Solidity',
                'languageVersion': '0',
            },
        },
    }
    >>> unlinked_code = "606060405260768060106000396000f3606060405260e060020a6000350463e7f09e058114601a575b005b60187f0c55699c00000000000000000000000000000000000000000000000000000000606090815273__TestA_________________________________90630c55699c906064906000906004818660325a03f41560025750505056"
    >>> link_code(unlinked_code, {'TestA': '0xd3cda913deb6f67967b99d67acdfa1712c293601'})
    ... "606060405260768060106000396000f3606060405260e060020a6000350463e7f09e058114601a575b005b60187f0c55699c00000000000000000000000000000000000000000000000000000000606090815273d3cda913deb6f67967b99d67acdfa1712c29360190630c55699c906064906000906004818660325a03f41560025750505056"

Setting the path to the ``solc`` binary
---------------------------------------

You can use the environment variable ``SOLC_BINARY`` to set the path to
your solc binary.

Installing the ``solc`` binary
------------------------------

    This feature is experimental and subject to breaking changes.

Any of the following versions of ``solc`` can be installed using
``py-solc`` on the listed platforms.

-  ``v0.4.1`` (linux)
-  ``v0.4.2`` (linux)
-  ``v0.4.6`` (linux)
-  ``v0.4.7`` (linux)
-  ``v0.4.8`` (linux/osx)
-  ``v0.4.9`` (linux)
-  ``v0.4.11`` (linux/osx)
-  ``v0.4.12`` (linux/osx)
-  ``v0.4.13`` (linux/osx)
-  ``v0.4.14`` (linux/osx)
-  ``v0.4.15`` (linux/osx)
-  ``v0.4.16`` (linux/osx)
-  ``v0.4.17`` (linux/osx)
-  ``v0.4.18`` (linux/osx)
-  ``v0.4.19`` (linux/osx)
-  ``v0.4.20`` (linux/osx)
-  ``v0.4.21`` (linux/osx)
-  ``v0.4.22`` (linux/osx)
-  ``v0.4.23`` (linux/osx)
-  ``v0.4.24`` (linux/osx)
-  ``v0.4.25`` (linux/osx)

Installation can be done via the command line:

.. code:: bash

    $ python -m solc.install v0.4.25

Or from python using the ``install_solc`` function.

.. code:: python

    >>> from solc import install_solc
    >>> install_solc('v0.4.25')

The installed binary can be found under your home directory. The
``v0.4.25`` binary would be located at
``$HOME/.py-solc/solc-v0.4.25/bin/solc``. Older linux installs will also
require that you set the environment variable
``LD_LIBRARY_PATH=$HOME/.py-solc/solc-v0.4.25/bin``

Import path remappings
----------------------

``solc`` provides path aliasing allow you to have more reusable project
configurations.

You can use this like:

::

    from solc import compile_source, compile_files, link_code

    compile_files([source_file_path], import_remappings=["zeppeling=/my-zeppelin-checkout-folder"])

`More information about solc import
aliasing <http://solidity.readthedocs.io/en/develop/layout-of-source-files.html#paths>`__

.. |Build Status| image:: https://travis-ci.org/ethereum/py-solc.png
   :target: https://travis-ci.org/ethereum/py-solc
.. |PyPi version| image:: https://pypip.in/v/py-solc/badge.png
   :target: https://pypi.python.org/pypi/py-solc
.. |PyPi downloads| image:: https://pypip.in/d/py-solc/badge.png
   :target: https://pypi.python.org/pypi/py-solc


Keywords

FAQs


Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc