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"])
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | ccff0a52f8d2f801fdcab6f6bded196e58fbeed3ad4332c2db2f44bf9c8db763 |
|
MD5 | 2f95cfbd4715d6bbcdb824e8d543163e |
|
BLAKE2b-256 | 4d5a26babe767c9ad5da6a3ea987622494ae5f7bd579d83f2d63ce9a44aa6d7e |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | e2b9b00321cf143eaf29e86c57302b6a97b0b67dd38a132d8fc1b80cc1dd1ce1 |
|
MD5 | d3cc157e7f4ae2dcaa8e4c16b21c2d92 |
|
BLAKE2b-256 | ae4ec704433d2a9979425085d2d7807a946df39e3192196f2e36cb23440b7e55 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc701551f6e1e1504a76ba8696293520d9c0009e21da6e7cba46100ca72054dd |
|
MD5 | 91bcfd0d0763c8e8deb0a14d3a30348d |
|
BLAKE2b-256 | ac58102e808763d1ab9b99f0834edbee598132a4cdb5486c6a4b54a75d4ac0a4 |