Python wrapper around the solc binary
Project description
# py-solc
[![Build Status](https://travis-ci.org/pipermerriam/py-solc.png)](https://travis-ci.org/pipermerriam/py-solc)
[![PyPi version](https://pypip.in/v/py-solc/badge.png)](https://pypi-hypernode.com/pypi/py-solc)
[![PyPi downloads](https://pypip.in/d/py-solc/badge.png)](https://pypi-hypernode.com/pypi/py-solc)
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
```sh
pip install py-solc
```
Or to install with support for gevent
```sh
pip install py-solc[gevent]
```
To enable gevent subprocessing set the environment variable `SOLC_THREADING_BACKEND=gevent`
## 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
```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)
Installation can be done via the command line:
```bash
$ python -m solc.install v0.4.16
```
Or from python using the `install_solc` function.
```python
>>> from solc import install_solc
>>> install_solc('v0.4.16')
```
The installed binary can be found under your home directory. The `v0.4.16`
binary would be located at `$HOME/.py-solc/solc-v0.4.16/bin/solc`. Older linux
installs will also require that you set the environment variable
`LD_LIBRARY_PATH=$HOME/.py-solc/solc-v0.4.16/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](https://travis-ci.org/pipermerriam/py-solc.png)](https://travis-ci.org/pipermerriam/py-solc)
[![PyPi version](https://pypip.in/v/py-solc/badge.png)](https://pypi-hypernode.com/pypi/py-solc)
[![PyPi downloads](https://pypip.in/d/py-solc/badge.png)](https://pypi-hypernode.com/pypi/py-solc)
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
```sh
pip install py-solc
```
Or to install with support for gevent
```sh
pip install py-solc[gevent]
```
To enable gevent subprocessing set the environment variable `SOLC_THREADING_BACKEND=gevent`
## 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
```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)
Installation can be done via the command line:
```bash
$ python -m solc.install v0.4.16
```
Or from python using the `install_solc` function.
```python
>>> from solc import install_solc
>>> install_solc('v0.4.16')
```
The installed binary can be found under your home directory. The `v0.4.16`
binary would be located at `$HOME/.py-solc/solc-v0.4.16/bin/solc`. Older linux
installs will also require that you set the environment variable
`LD_LIBRARY_PATH=$HOME/.py-solc/solc-v0.4.16/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)
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
py-solc-1.3.0.tar.gz
(10.4 kB
view details)
Built Distribution
py_solc-1.3.0-py3-none-any.whl
(14.1 kB
view details)
File details
Details for the file py-solc-1.3.0.tar.gz
.
File metadata
- Download URL: py-solc-1.3.0.tar.gz
- Upload date:
- Size: 10.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6b70056471bde7b0f91994368f03647704852105d75708f478128dbe7328bba8 |
|
MD5 | 2130e2beef438eb655d4be1b21db2cd8 |
|
BLAKE2b-256 | a2f79a19289655ca78d944de8f5155bb4769af4aa1d0cc4fe237c4fda07713fe |
File details
Details for the file py_solc-1.3.0-py3-none-any.whl
.
File metadata
- Download URL: py_solc-1.3.0-py3-none-any.whl
- Upload date:
- Size: 14.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc97b803a45c478f7e173dc2f1403e69e31b5f8c6d4b169b98b9e98d6ac39311 |
|
MD5 | fedf8bc7542ed468c3ca504c99862655 |
|
BLAKE2b-256 | e1fad7f23f4374da655394e8ebfcecaca4a8167690a17b108039764980b273e7 |