From dc581b9317fdfd1e69be0c37c61f135b33b6ee8f Mon Sep 17 00:00:00 2001 From: Piper Merriam Date: Sat, 6 Aug 2016 23:43:01 -0600 Subject: [PATCH 1/3] use the solc_binary argument --- solc/wrapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solc/wrapper.py b/solc/wrapper.py index d470057..a12443b 100644 --- a/solc/wrapper.py +++ b/solc/wrapper.py @@ -44,7 +44,7 @@ def solc_wrapper(solc_binary=SOLC_BINARY, devdoc=None, formal=None, success_return_code=0): - command = ['solc'] + command = [solc_binary] if help: command.append('--help') From 473b365274c655e36aadea389cf7acb2b49a8f8a Mon Sep 17 00:00:00 2001 From: Piper Merriam Date: Thu, 18 Aug 2016 12:49:55 -0600 Subject: [PATCH 2/3] compiler version to use solc binary and gevent subprocess --- solc/main.py | 17 ++++++++++------- solc/wrapper.py | 3 ++- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/solc/main.py b/solc/main.py index 835e22c..564f56c 100644 --- a/solc/main.py +++ b/solc/main.py @@ -27,8 +27,9 @@ is_solc_available = functools.partial(is_executable_available, SOLC_BINARY) -def get_solc_version(): - stdoutdata, stderrdata = solc_wrapper(version=True) +def get_solc_version(**kwargs): + kwargs['version'] = True + stdoutdata, stderrdata = solc_wrapper(**kwargs) version_match = version_regex.search(stdoutdata) if version_match is None: raise SolcError( @@ -39,7 +40,7 @@ def get_solc_version(): return version_match.groups()[0] -def _parse_compiler_output(stdoutdata): +def _parse_compiler_output(stdoutdata, compiler_version): output = json.loads(stdoutdata) @@ -55,8 +56,6 @@ def _parse_compiler_output(stdoutdata): sorted_contracts = sorted(contracts.items(), key=lambda c: c[0]) - compiler_version = get_solc_version() - return { contract_name: { 'abi': contract_data['abi'], @@ -106,7 +105,9 @@ def compile_source(source, output_values=ALL_OUTPUT_VALUES, **kwargs): **kwargs ) - contracts = _parse_compiler_output(stdoutdata) + compiler_version = get_solc_version(version=True, **kwargs) + + contracts = _parse_compiler_output(stdoutdata, compiler_version) return contracts @@ -128,7 +129,9 @@ def compile_files(source_files, output_values=ALL_OUTPUT_VALUES, **kwargs): **kwargs ) - contracts = _parse_compiler_output(stdoutdata) + compiler_version = get_solc_version(version=True, **kwargs) + + contracts = _parse_compiler_output(stdoutdata, compiler_version) return contracts diff --git a/solc/wrapper.py b/solc/wrapper.py index a12443b..1d8284c 100644 --- a/solc/wrapper.py +++ b/solc/wrapper.py @@ -1,6 +1,7 @@ from __future__ import absolute_import -import subprocess +from gevent import subprocess + import textwrap from .exceptions import ( From 93566b5a1053f20b105231ae8acf944d42178625 Mon Sep 17 00:00:00 2001 From: Piper Merriam Date: Thu, 18 Aug 2016 12:52:21 -0600 Subject: [PATCH 3/3] use gevent --- requirements.txt | 1 + setup.py | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e69de29..eacf84f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -0,0 +1 @@ +gevent>=1.1.2 diff --git a/setup.py b/setup.py index 3410335..6d5f9da 100644 --- a/setup.py +++ b/setup.py @@ -23,7 +23,9 @@ url='https://github.com/pipermerriam/py-solc', include_package_data=True, py_modules=['solc'], - install_requires=[], + install_requires=[ + "gevent>=1.1.2", + ], license="MIT", zip_safe=False, keywords='ethereum solidity solc',