Fix error on urllib

This commit is contained in:
Matthew Honnibal 2018-03-29 00:08:16 +02:00
parent 07b8c255a5
commit b5098079d8
3 changed files with 21 additions and 13 deletions

View File

@ -9,7 +9,7 @@ import ujson
from .link import link
from ..util import prints, get_package_path
from ..compat import url_open, url_error
from ..compat import url_read, HTTPError
from .. import about
@ -58,13 +58,13 @@ def download(model, direct=False):
def get_json(url, desc):
try:
r = url_open(url)
except url_error as e:
data = url_read(url)
except HTTPError as e:
msg = ("Couldn't fetch %s. Please find a model for your spaCy "
"installation (v%s), and download it manually.")
prints(msg % (desc, about.__version__), about.__docs_models__,
title="Server error (%d: %s)" % (e.code, e.reason), exits=1)
return ujson.load(r)
return ujson.loads(data)
def get_compatibility():

View File

@ -6,7 +6,7 @@ from pathlib import Path
import sys
import ujson
from ..compat import path2str, locale_escape, url_open, url_error
from ..compat import path2str, locale_escape, url_read, HTTPError
from ..util import prints, get_data_path, read_json
from .. import about
@ -16,11 +16,11 @@ def validate():
with the installed models. Should be run after `pip install -U spacy`.
"""
try:
r = url_open(about.__compatibility__)
except url_error as e:
data = url_read(about.__compatibility__)
except HTTPError as e:
prints("Couldn't fetch compatibility table.",
title="Server error (%d: %s)" % (e.code, e.reason), exits=1)
compat = ujson.load(r)['spacy']
compat = ujson.loads(data)['spacy']
current_compat = compat.get(about.__version__)
if not current_compat:
prints(about.__compatibility__, exits=1,

View File

@ -39,9 +39,9 @@ except ImportError:
import urllib2 as urllib
try:
from urllib.error import HTTPError as url_error
from urllib.error import HTTPError
except ImportError:
from urllib2 import HTTPError as url_error
from urllib2 import HTTPError
pickle = pickle
copy_reg = copy_reg
@ -49,7 +49,6 @@ CudaStream = CudaStream
cupy = cupy
copy_array = copy_array
urllib = urllib
url_error = url_error
izip = getattr(itertools, 'izip', zip)
is_windows = sys.platform.startswith('win')
@ -68,7 +67,7 @@ if is_python2:
input_ = raw_input # noqa: F821
json_dumps = lambda data: ujson.dumps(data, indent=2, escape_forward_slashes=False).decode('utf8')
path2str = lambda path: str(path).decode('utf8')
url_open = lambda url: urllib.urlopen(url)
url_open = urllib.urlopen
elif is_python3:
bytes_ = bytes
@ -77,7 +76,16 @@ elif is_python3:
input_ = input
json_dumps = lambda data: ujson.dumps(data, indent=2, escape_forward_slashes=False)
path2str = lambda path: str(path)
url_open = lambda url: urllib.request.urlopen(url)
url_open = urllib.request.urlopen
def url_read(url):
file_ = url_open(url)
code = file_.getcode()
if code != 200:
raise HTTPError(url, code, "Cannot GET url", [], file_)
data = file_.read()
return data
def b_to_str(b_str):