diff --git a/setup.py b/setup.py index c43d3d681..8ec5947c8 100644 --- a/setup.py +++ b/setup.py @@ -216,6 +216,7 @@ def read(fname): 'PyYAML', 'zeroc-ice>=3.6.4,<3.7', 'pywin32; platform_system=="Windows"', + 'requests' ], tests_require=[ 'pytest', diff --git a/src/omero/plugins/import.py b/src/omero/plugins/import.py index 5762e7b1e..029589c35 100644 --- a/src/omero/plugins/import.py +++ b/src/omero/plugins/import.py @@ -35,7 +35,7 @@ import csv import sys import shlex -from urllib.request import urlopen +import requests from zipfile import ZipFile @@ -312,8 +312,14 @@ def add_python_argument(*args, **kwargs): for name, help in ( ("bulk", "Bulk YAML file for driving multiple imports"), ("logprefix", "Directory or file prefix for --file and --errs"), - ("file", "File for storing the standard output from the Java process"), - ("errs", "File for storing the standard error from the Java process") + ( + "file", + "File for storing the standard output from the Java process" + ), + ( + "errs", + "File for storing the standard error from the Java process" + ) ): add_python_argument("--%s" % name, nargs="?", help=help) add_python_argument("---%s" % name, nargs="?", help=SUPPRESS) @@ -575,8 +581,8 @@ def download_omero_java(self, version): jars_dir, omero_java_txt = self._userdir_jars(parentonly=True) if not jars_dir.exists(): jars_dir.mkdir() - with urlopen(omero_java_zip) as resp: - with ZipFile(BytesIO(resp.read())) as zipfile: + with requests.get(omero_java_zip) as resp: + with ZipFile(BytesIO(resp.content)) as zipfile: topdirs = set(f.filename.split( os.path.sep)[0] for f in zipfile.filelist if f.is_dir()) if len(topdirs) != 1: @@ -767,6 +773,7 @@ def parse_csv(self, path, delimiter=","): class TestEngine(ImportControl): COMMAND = [TEST_CLASS] + try: register("import", ImportControl, HELP, epilog=EXAMPLES) register("testengine", TestEngine, TESTHELP) diff --git a/src/omero/util/upgrade_check.py b/src/omero/util/upgrade_check.py index 3d422de64..2ec6d52ae 100644 --- a/src/omero/util/upgrade_check.py +++ b/src/omero/util/upgrade_check.py @@ -6,16 +6,14 @@ """ from future import standard_library -standard_library.install_aliases() from builtins import str from builtins import object from omero_version import omero_version import platform import logging -import urllib.request, urllib.error, urllib.parse -import urllib.request, urllib.parse, urllib.error -import socket +import requests +standard_library.install_aliases() class UpgradeCheck(object): @@ -47,8 +45,8 @@ class UpgradeCheck(object): """ # - # Default timeout is 3 seconds. - # * http://docs.python.org/2/library/socket.html#socket.setdefaulttimeout + # our default timeout to use for requests; package default is no timeout + # * https://requests.readthedocs.io/en/master/user/quickstart/#timeouts # DEFAULT_TIMEOUT = 6.0 @@ -102,7 +100,7 @@ def getOSVersion(self): platform.mac_ver()[0]) else: version = platform.platform() - except: + except Exception: version = platform.platform() return version @@ -129,20 +127,13 @@ def run(self): params["python.version"] = platform.python_version() params["python.compiler"] = platform.python_compiler() params["python.build"] = platform.python_build() - params = urllib.parse.urlencode(params) - - old_timeout = socket.getdefaulttimeout() - try: - socket.setdefaulttimeout(self.timeout) - full_url = "%s?%s" % (self.url, params) - request = urllib.request.Request(full_url) - request.add_header('User-Agent', self.agent) - self.log.debug("Attempting to connect to %s" % full_url) - response = urllib.request.urlopen(request) - result = response.read() - finally: - socket.setdefaulttimeout(old_timeout) + headers = {'User-Agent': self.agent} + request = requests.get( + self.url, headers=headers, params=params, + timeout=self.DEFAULT_TIMEOUT + ) + result = request.text except Exception as e: self.log.error(str(e), exc_info=0) self._set(None, e) @@ -152,5 +143,5 @@ def run(self): self.log.info("no update needed") self._set(None, None) else: - self.log.warn("UPGRADE AVAILABLE:" + result.decode('utf-8')) - self._set(result.decode('utf-8'), None) + self.log.warn("UPGRADE AVAILABLE:" + result) + self._set(result, None)