From bf42e65f0c265913abe47c579c4081fd374529e8 Mon Sep 17 00:00:00 2001 From: Piper Merriam Date: Thu, 18 Aug 2016 12:38:36 -0600 Subject: [PATCH] cleanup gevent usage --- conftest.py | 18 ++++++++----- requirements-dev.txt | 4 +-- .../test_admin_start_stop_methods.py | 4 ++- tests/providers/test_tester_provider.py | 2 +- web3/__init__.py | 6 ++--- web3/providers/ipc.py | 4 +-- web3/providers/rpc.py | 26 ++++++++++++------- web3/utils/types.py | 6 ++--- 8 files changed, 42 insertions(+), 28 deletions(-) diff --git a/conftest.py b/conftest.py index 064d44a..3831d58 100644 --- a/conftest.py +++ b/conftest.py @@ -1,15 +1,20 @@ -import pytest import contextlib import tempfile import shutil import random -import requests -import gevent +import pytest -# This has to go here so that the `gevent.monkey.patch_all()` happens in the -# main thread. -from geth import ( +import gevent +from gevent import monkey +from gevent import socket + +# needed to use the requests library +monkey.patch_socket() + +import requests # noqa: E402 + +from geth import ( # noqa: E402 LoggingMixin, DevGethProcess, ) @@ -20,7 +25,6 @@ class GethProcess(LoggingMixin, DevGethProcess): def get_open_port(): - import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(("", 0)) s.listen(1) diff --git a/requirements-dev.txt b/requirements-dev.txt index b06ea93..55f0748 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,8 +1,8 @@ pytest>=2.8.2 pytest-pythonpath>=0.3 tox>=1.8.0 -eth-testrpc>=0.6.0 -ethereum-tester-client>=0.9.0 +eth-testrpc>=0.8.0 +ethereum-tester-client>=1.0.0 py-geth>=1.1.0 ethereum>=1.5.2 secp256k1>=0.13.1 diff --git a/tests/admin-module/test_admin_start_stop_methods.py b/tests/admin-module/test_admin_start_stop_methods.py index 500f12f..1dc0629 100644 --- a/tests/admin-module/test_admin_start_stop_methods.py +++ b/tests/admin-module/test_admin_start_stop_methods.py @@ -1,9 +1,11 @@ import pytest + +from gevent import socket + from flaky import flaky def get_open_port(): - import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(("", 0)) s.listen(1) diff --git a/tests/providers/test_tester_provider.py b/tests/providers/test_tester_provider.py index dd2afb2..0f74c50 100644 --- a/tests/providers/test_tester_provider.py +++ b/tests/providers/test_tester_provider.py @@ -1,5 +1,5 @@ import pytest -import socket +from gevent import socket from web3.providers.manager import RequestManager from web3.providers.rpc import ( diff --git a/web3/__init__.py b/web3/__init__.py index 2cf67fc..6d7c092 100644 --- a/web3/__init__.py +++ b/web3/__init__.py @@ -3,12 +3,12 @@ from __future__ import absolute_import import pkg_resources -from web3.main import Web3 # NOQA -from web3.providers.rpc import ( # NOQA +from web3.main import Web3 +from web3.providers.rpc import ( RPCProvider, TestRPCProvider, ) -from web3.providers.ipc import IPCProvider # NOQA +from web3.providers.ipc import IPCProvider __version__ = pkg_resources.get_distribution("web3").version diff --git a/web3/providers/ipc.py b/web3/providers/ipc.py index 133bc7e..a925808 100644 --- a/web3/providers/ipc.py +++ b/web3/providers/ipc.py @@ -12,7 +12,7 @@ except ImportError: import gevent from gevent import socket -from gevent import threading +from gevent.threading import Lock from web3.utils.string import ( force_text, @@ -74,7 +74,7 @@ class IPCProvider(BaseProvider): else: self.ipc_path = ipc_path - self._lock = threading.Lock() + self._lock = Lock() super(IPCProvider, self).__init__(*args, **kwargs) def make_request(self, method, params): diff --git a/web3/providers/rpc.py b/web3/providers/rpc.py index a021fbf..4491396 100644 --- a/web3/providers/rpc.py +++ b/web3/providers/rpc.py @@ -1,7 +1,14 @@ -import requests +# pep8: disable=E402 import gevent +from gevent import monkey -from .base import BaseProvider + +monkey.patch_socket() + + +from .base import BaseProvider # noqa: E402 + +import requests # noqa: E402 class RPCProvider(BaseProvider): @@ -9,15 +16,14 @@ class RPCProvider(BaseProvider): def __init__(self, host="127.0.0.1", port="8545", *args, **kwargs): self.host = host self.port = port - self.session = requests.session() - self.session.headers.update({'content-type': 'application/json'}) super(RPCProvider, self).__init__(*args, **kwargs) def make_request(self, method, params): request = self.encode_rpc_request(method, params) - response = self.session.post( + response = requests.post( "http://{host}:{port}/".format(host=self.host, port=self.port), + headers={'content-type': 'application/json'}, data=request ) @@ -26,7 +32,7 @@ class RPCProvider(BaseProvider): def is_testrpc_available(): try: - import testrpc # NOQA + import testrpc # noqa: E401 return True except ImportError: return False @@ -36,14 +42,16 @@ class TestRPCProvider(RPCProvider): def __init__(self, host="127.0.0.1", port=8545, *args, **kwargs): if not is_testrpc_available(): raise Exception("`TestRPCProvider` requires the `eth-testrpc` package to be installed") - from wsgiref.simple_server import make_server - + from gevent.pywsgi import WSGIServer from testrpc.server import application from testrpc.testrpc import evm_reset evm_reset() - self.server = make_server(host, port, application) + self.server = WSGIServer( + (host, port), + application, + ) self.thread = gevent.spawn(self.server.serve_forever) diff --git a/web3/utils/types.py b/web3/utils/types.py index f9b3686..e27986e 100644 --- a/web3/utils/types.py +++ b/web3/utils/types.py @@ -2,10 +2,10 @@ import sys if sys.version_info.major == 2: - integer_types = (int, long) # NOQA + integer_types = (int, long) bytes_types = (bytes, bytearray) - text_types = (unicode,) # NOQA - string_types = (basestring, bytearray) # NOQA + text_types = (unicode,) + string_types = (basestring, bytearray) else: integer_types = (int,) bytes_types = (bytes, bytearray)