mirror of
https://github.com/pypiserver/pypiserver
synced 2025-02-22 19:19:37 +01:00
Revert changes to 'upstream-derived' file
This commit is contained in:
parent
711deb51b7
commit
127b097022
@ -89,15 +89,17 @@ except ImportError: # pragma: no cover
|
||||
|
||||
def json_dumps(data):
|
||||
raise ImportError(
|
||||
"JSON support requires simplejson.")
|
||||
"JSON support requires Python 2.6 or simplejson.")
|
||||
|
||||
json_lds = json_dumps
|
||||
|
||||
# We now try to fix 2.x/3.x incompatibilities.
|
||||
# We now try to fix 2.5/2.6/3.1/3.2 incompatibilities.
|
||||
# It ain't pretty but it works... Sorry for the mess.
|
||||
|
||||
py = sys.version_info
|
||||
py3k = py >= (3, 0, 0)
|
||||
py25 = py < (2, 6, 0)
|
||||
py31 = (3, 1, 0) <= py < (3, 2, 0)
|
||||
|
||||
# Workaround for the missing "as" keyword in py3k.
|
||||
def _e():
|
||||
@ -142,7 +144,17 @@ else: # 2.x
|
||||
from StringIO import StringIO as BytesIO
|
||||
from ConfigParser import SafeConfigParser as ConfigParser, \
|
||||
Error as ConfigParserError
|
||||
from collections import MutableMapping as DictMixin
|
||||
if py25:
|
||||
msg = "Python 2.5 support may be dropped in future versions of Bottle."
|
||||
warnings.warn(msg, DeprecationWarning)
|
||||
from UserDict import DictMixin
|
||||
|
||||
def next(it):
|
||||
return it.next()
|
||||
|
||||
bytes = str
|
||||
else: # 2.6, 2.7
|
||||
from collections import MutableMapping as DictMixin
|
||||
unicode = unicode
|
||||
json_loads = json_lds
|
||||
eval(compile('def _raise(*a): raise a[0], a[1], a[2]', '<py3fix>', 'exec'))
|
||||
@ -162,6 +174,15 @@ def touni(s, enc='utf8', err='strict'):
|
||||
|
||||
tonat = touni if py3k else tob
|
||||
|
||||
# 3.2 fixes cgi.FieldStorage to accept bytes (which makes a lot of sense).
|
||||
# 3.1 needs a workaround.
|
||||
if py31:
|
||||
from io import TextIOWrapper
|
||||
|
||||
class NCTextIOWrapper(TextIOWrapper):
|
||||
def close(self):
|
||||
pass # Keep wrapped buffer open.
|
||||
|
||||
|
||||
# A bug in functools causes it to break if the wrapper is an instance method
|
||||
def update_wrapper(wrapper, wrapped, *a, **ka):
|
||||
@ -1274,7 +1295,11 @@ class BaseRequest(object):
|
||||
for key in ('REQUEST_METHOD', 'CONTENT_TYPE', 'CONTENT_LENGTH'):
|
||||
if key in self.environ: safe_env[key] = self.environ[key]
|
||||
args = dict(fp=self.body, environ=safe_env, keep_blank_values=True)
|
||||
if py3k:
|
||||
if py31:
|
||||
args['fp'] = NCTextIOWrapper(args['fp'],
|
||||
encoding='utf8',
|
||||
newline='\n')
|
||||
elif py3k:
|
||||
args['encoding'] = 'utf8'
|
||||
data = cgi.FieldStorage(**args)
|
||||
self['_cgi.FieldStorage'] = data #http://bugs.python.org/issue18394
|
||||
@ -1380,7 +1405,7 @@ class BaseRequest(object):
|
||||
basic = parse_auth(self.environ.get('HTTP_AUTHORIZATION', ''))
|
||||
if basic: return basic
|
||||
ruser = self.environ.get('REMOTE_USER')
|
||||
if ruser: return ruser, None
|
||||
if ruser: return (ruser, None)
|
||||
return None
|
||||
|
||||
@property
|
||||
@ -1503,10 +1528,10 @@ class BaseResponse(object):
|
||||
# Header blacklist for specific response codes
|
||||
# (rfc2616 section 10.2.3 and 10.3.5)
|
||||
bad_headers = {
|
||||
204: {'Content-Type'},
|
||||
304: {'Allow', 'Content-Encoding', 'Content-Language',
|
||||
'Content-Length', 'Content-Range', 'Content-Type', 'Content-Md5',
|
||||
'Last-Modified'}
|
||||
204: set(('Content-Type', )),
|
||||
304: set(('Allow', 'Content-Encoding', 'Content-Language',
|
||||
'Content-Length', 'Content-Range', 'Content-Type',
|
||||
'Content-Md5', 'Last-Modified'))
|
||||
}
|
||||
|
||||
def __init__(self, body='', status=None, headers=None, **more_headers):
|
||||
@ -1671,7 +1696,7 @@ class BaseResponse(object):
|
||||
:param path: limits the cookie to a given path (default: current path)
|
||||
:param secure: limit the cookie to HTTPS connections (default: off).
|
||||
:param httponly: prevents client-side javascript to read this cookie
|
||||
(default: off).
|
||||
(default: off, requires Python 2.6 or newer).
|
||||
|
||||
If neither `expires` nor `max_age` is set (default), the cookie will
|
||||
expire at the end of the browser session (as soon as the browser
|
||||
|
Loading…
Reference in New Issue
Block a user