Skip to main content

Python wrapper around the solc binary with 0.5.x support

Project description

Python wrapper around the solc Solidity compiler with 0.5.x support.

Forked from py-solc.

Dependencies

This library allows the use of multiple versions of solc, and installs them as needed. You must have all required solc dependencies installed for it to work properly.

Versions >=0.4.11 may be installed, however only versions >=0.4.2 are supported and tested.

Quickstart

Installation

pip install py-solc-x

Installing the solc Executable

The first time py-solc-x is imported it will automatically install the latest version of solc. If you wish to install a different version you may do so from within python:

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

Or via the command line:

$ python -m solcx.install v0.4.25

You can also view available versions or change the active version of solc:

>>> from solcx import get_installed_solc_versions, set_solc_version
>>> get_installed_solc_versions()
['v0.4.25', 'v0.5.3']

>>> set_solc_version('v0.4.25)

Standard JSON Compilation

Use the solcx.compile_standard function to make use of the standard-json compilation feature.

>>> from solcx 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

>>> from solcx 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"

Import Path Remappings

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

You can use this like:

>>> from solcx 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

Development

This project was recently forked from py-solc and should be considered a beta. Comments, questions, criticisms and pull requests are welcomed.

Running the tests

Tests have not been updated from py-solc and will likely fail.

You can run the tests with:

py.test tests

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

License

This project is licensed under the MIT license.

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

py-solc-x-0.2.1.tar.gz (11.2 kB view details)

Uploaded Source

Built Distributions

py_solc_x-0.2.1-py3.6.egg (22.9 kB view details)

Uploaded Source

py_solc_x-0.2.1-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file py-solc-x-0.2.1.tar.gz.

File metadata

  • Download URL: py-solc-x-0.2.1.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.18.4 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.5.2

File hashes

Hashes for py-solc-x-0.2.1.tar.gz
Algorithm Hash digest
SHA256 ccff0a52f8d2f801fdcab6f6bded196e58fbeed3ad4332c2db2f44bf9c8db763
MD5 2f95cfbd4715d6bbcdb824e8d543163e
BLAKE2b-256 4d5a26babe767c9ad5da6a3ea987622494ae5f7bd579d83f2d63ce9a44aa6d7e

See more details on using hashes here.

File details

Details for the file py_solc_x-0.2.1-py3.6.egg.

File metadata

  • Download URL: py_solc_x-0.2.1-py3.6.egg
  • Upload date:
  • Size: 22.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.18.4 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.5.2

File hashes

Hashes for py_solc_x-0.2.1-py3.6.egg
Algorithm Hash digest
SHA256 e2b9b00321cf143eaf29e86c57302b6a97b0b67dd38a132d8fc1b80cc1dd1ce1
MD5 d3cc157e7f4ae2dcaa8e4c16b21c2d92
BLAKE2b-256 ae4ec704433d2a9979425085d2d7807a946df39e3192196f2e36cb23440b7e55

See more details on using hashes here.

File details

Details for the file py_solc_x-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: py_solc_x-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.18.4 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.5.2

File hashes

Hashes for py_solc_x-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cc701551f6e1e1504a76ba8696293520d9c0009e21da6e7cba46100ca72054dd
MD5 91bcfd0d0763c8e8deb0a14d3a30348d
BLAKE2b-256 ac58102e808763d1ab9b99f0834edbee598132a4cdb5486c6a4b54a75d4ac0a4

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