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', 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 d470057..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 ( @@ -44,7 +45,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')