fix iteritems, enabled test_cache & test_dal for 3.5
This commit is contained in:
+2
-1
@@ -11,6 +11,7 @@ HTTP statuses helpers
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
from gluon._compat import iteritems
|
||||||
|
|
||||||
__all__ = ['HTTP', 'redirect']
|
__all__ = ['HTTP', 'redirect']
|
||||||
|
|
||||||
@@ -112,7 +113,7 @@ class HTTP(Exception):
|
|||||||
if isinstance(body, str):
|
if isinstance(body, str):
|
||||||
headers['Content-Length'] = len(body)
|
headers['Content-Length'] = len(body)
|
||||||
rheaders = []
|
rheaders = []
|
||||||
for k, v in headers.iteritems():
|
for k, v in iteritems(headers):
|
||||||
if isinstance(v, list):
|
if isinstance(v, list):
|
||||||
rheaders += [(k, str(item)) for item in v]
|
rheaders += [(k, str(item)) for item in v]
|
||||||
elif not v is None:
|
elif not v is None:
|
||||||
|
|||||||
+3
-3
@@ -18,7 +18,7 @@ import pkgutil
|
|||||||
import logging
|
import logging
|
||||||
from cgi import escape
|
from cgi import escape
|
||||||
from threading import RLock
|
from threading import RLock
|
||||||
from gluon._compat import copyreg, PY2, maketrans, iterkeys, unicodeT, to_unicode, to_bytes
|
from gluon._compat import copyreg, PY2, maketrans, iterkeys, unicodeT, to_unicode, to_bytes, iteritems
|
||||||
|
|
||||||
from gluon.portalocker import read_locked, LockedFile
|
from gluon.portalocker import read_locked, LockedFile
|
||||||
from gluon.utf8 import Utf8
|
from gluon.utf8 import Utf8
|
||||||
@@ -756,7 +756,7 @@ class translator(object):
|
|||||||
if isinstance(symbols, dict):
|
if isinstance(symbols, dict):
|
||||||
symbols.update(
|
symbols.update(
|
||||||
(key, xmlescape(value).translate(ttab_in))
|
(key, xmlescape(value).translate(ttab_in))
|
||||||
for key, value in symbols.iteritems()
|
for key, value in iteritems(symbols)
|
||||||
if not isinstance(value, NUMBERS))
|
if not isinstance(value, NUMBERS))
|
||||||
else:
|
else:
|
||||||
if not isinstance(symbols, tuple):
|
if not isinstance(symbols, tuple):
|
||||||
@@ -939,7 +939,7 @@ class translator(object):
|
|||||||
if isinstance(symbols, dict):
|
if isinstance(symbols, dict):
|
||||||
symbols.update(
|
symbols.update(
|
||||||
(key, str(value).translate(ttab_in))
|
(key, str(value).translate(ttab_in))
|
||||||
for key, value in symbols.iteritems()
|
for key, value in iteritems(symbols)
|
||||||
if not isinstance(value, NUMBERS))
|
if not isinstance(value, NUMBERS))
|
||||||
else:
|
else:
|
||||||
if not isinstance(symbols, tuple):
|
if not isinstance(symbols, tuple):
|
||||||
|
|||||||
+3
-2
@@ -11,6 +11,7 @@ import errno
|
|||||||
import socket
|
import socket
|
||||||
import logging
|
import logging
|
||||||
import platform
|
import platform
|
||||||
|
from gluon._compat import iteritems
|
||||||
|
|
||||||
# Define Constants
|
# Define Constants
|
||||||
VERSION = '1.2.6'
|
VERSION = '1.2.6'
|
||||||
@@ -1430,7 +1431,7 @@ class Worker(Thread):
|
|||||||
raise BadRequest
|
raise BadRequest
|
||||||
|
|
||||||
req = match.groupdict()
|
req = match.groupdict()
|
||||||
for k, v in req.iteritems():
|
for k, v in iteritems(req):
|
||||||
if not v:
|
if not v:
|
||||||
req[k] = ""
|
req[k] = ""
|
||||||
if k == 'path':
|
if k == 'path':
|
||||||
@@ -1654,7 +1655,7 @@ class WSGIWorker(Worker):
|
|||||||
environ = self.base_environ.copy()
|
environ = self.base_environ.copy()
|
||||||
|
|
||||||
# Grab the headers
|
# Grab the headers
|
||||||
for k, v in self.read_headers(sock_file).iteritems():
|
for k, v in iteritems(self.read_headers(sock_file)):
|
||||||
environ[str('HTTP_' + k)] = v
|
environ[str('HTTP_' + k)] = v
|
||||||
|
|
||||||
# Add CGI Variables
|
# Add CGI Variables
|
||||||
|
|||||||
+2
-2
@@ -9,7 +9,7 @@ Background processes made simple
|
|||||||
---------------------------------
|
---------------------------------
|
||||||
"""
|
"""
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
from gluon._compat import Queue, long
|
from gluon._compat import Queue, long, iteritems
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
@@ -234,7 +234,7 @@ def _decode_list(lst):
|
|||||||
|
|
||||||
def _decode_dict(dct):
|
def _decode_dict(dct):
|
||||||
newdict = {}
|
newdict = {}
|
||||||
for k, v in dct.iteritems():
|
for k, v in iteritems(dct):
|
||||||
if isinstance(k, unicode):
|
if isinstance(k, unicode):
|
||||||
k = k.encode('utf-8')
|
k = k.encode('utf-8')
|
||||||
if isinstance(v, unicode):
|
if isinstance(v, unicode):
|
||||||
|
|||||||
+2
-1
@@ -30,6 +30,7 @@ from gluon.globals import Request, Response, Session
|
|||||||
from gluon.storage import Storage, List
|
from gluon.storage import Storage, List
|
||||||
from gluon.admin import w2p_unpack
|
from gluon.admin import w2p_unpack
|
||||||
from pydal.base import BaseAdapter
|
from pydal.base import BaseAdapter
|
||||||
|
from gluon._compat import iteritems
|
||||||
|
|
||||||
logger = logging.getLogger("web2py")
|
logger = logging.getLogger("web2py")
|
||||||
|
|
||||||
@@ -146,7 +147,7 @@ def env(
|
|||||||
path_info = '%s/%s' % (path_info, '/'.join(request.args))
|
path_info = '%s/%s' % (path_info, '/'.join(request.args))
|
||||||
if request.vars:
|
if request.vars:
|
||||||
vars = ['%s=%s' % (k, v) if v else '%s' % k
|
vars = ['%s=%s' % (k, v) if v else '%s' % k
|
||||||
for (k, v) in request.vars.iteritems()]
|
for (k, v) in iteritems(request.vars)]
|
||||||
path_info = '%s?%s' % (path_info, '&'.join(vars))
|
path_info = '%s?%s' % (path_info, '&'.join(vars))
|
||||||
request.env.path_info = path_info
|
request.env.path_info = path_info
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -19,7 +19,7 @@ import urllib
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from gluon._compat import StringIO, unichr, urllib_quote
|
from gluon._compat import StringIO, unichr, urllib_quote, iteritems
|
||||||
from gluon.http import HTTP, redirect
|
from gluon.http import HTTP, redirect
|
||||||
from gluon.html import XmlComponent, truncate_string
|
from gluon.html import XmlComponent, truncate_string
|
||||||
from gluon.html import XML, SPAN, TAG, A, DIV, CAT, UL, LI, TEXTAREA, BR, IMG
|
from gluon.html import XML, SPAN, TAG, A, DIV, CAT, UL, LI, TEXTAREA, BR, IMG
|
||||||
@@ -2222,7 +2222,7 @@ class SQLFORM(FORM):
|
|||||||
if fields:
|
if fields:
|
||||||
# add missing tablename to virtual fields
|
# add missing tablename to virtual fields
|
||||||
for table in tables:
|
for table in tables:
|
||||||
for k, f in table.iteritems():
|
for k, f in iteritems(table):
|
||||||
if isinstance(f, Field.Virtual):
|
if isinstance(f, Field.Virtual):
|
||||||
f.tablename = table._tablename
|
f.tablename = table._tablename
|
||||||
columns = [f for f in fields if f.tablename in tablenames]
|
columns = [f for f in fields if f.tablename in tablenames]
|
||||||
@@ -2234,7 +2234,7 @@ class SQLFORM(FORM):
|
|||||||
for table in tables:
|
for table in tables:
|
||||||
fields += filter(filter1, table)
|
fields += filter(filter1, table)
|
||||||
columns += filter(filter2, table)
|
columns += filter(filter2, table)
|
||||||
for k, f in table.iteritems():
|
for k, f in iteritems(table):
|
||||||
if not k.startswith('_'):
|
if not k.startswith('_'):
|
||||||
if isinstance(f, Field.Virtual) and f.readable:
|
if isinstance(f, Field.Virtual) and f.readable:
|
||||||
f.tablename = table._tablename
|
f.tablename = table._tablename
|
||||||
@@ -2434,7 +2434,7 @@ class SQLFORM(FORM):
|
|||||||
selectable_columns.append(str(field))
|
selectable_columns.append(str(field))
|
||||||
# look for virtual fields not displayed (and virtual method
|
# look for virtual fields not displayed (and virtual method
|
||||||
# fields to be added here?)
|
# fields to be added here?)
|
||||||
for (field_name, field) in table.iteritems():
|
for (field_name, field) in iteritems(table):
|
||||||
if isinstance(field, Field.Virtual) and not str(field) in expcolumns:
|
if isinstance(field, Field.Virtual) and not str(field) in expcolumns:
|
||||||
expcolumns.append(str(field))
|
expcolumns.append(str(field))
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,11 @@ from .test_fileutils import *
|
|||||||
from .test_globals import *
|
from .test_globals import *
|
||||||
from .test_recfile import *
|
from .test_recfile import *
|
||||||
from .test_storage import *
|
from .test_storage import *
|
||||||
|
from .test_dal import *
|
||||||
|
from .test_cache import *
|
||||||
|
|
||||||
|
|
||||||
if sys.version[:3] == '2.7':
|
if sys.version[:3] == '2.7':
|
||||||
from .test_cache import *
|
|
||||||
from .test_compileapp import *
|
from .test_compileapp import *
|
||||||
from .test_html import *
|
from .test_html import *
|
||||||
from .test_is_url import *
|
from .test_is_url import *
|
||||||
@@ -20,7 +21,6 @@ if sys.version[:3] == '2.7':
|
|||||||
from .test_template import *
|
from .test_template import *
|
||||||
from .test_validators import *
|
from .test_validators import *
|
||||||
from .test_utils import *
|
from .test_utils import *
|
||||||
from .test_dal import *
|
|
||||||
from .test_tools import *
|
from .test_tools import *
|
||||||
from .test_appadmin import *
|
from .test_appadmin import *
|
||||||
from .test_scheduler import *
|
from .test_scheduler import *
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ class TestDALSubclass(unittest.TestCase):
|
|||||||
db.close()
|
db.close()
|
||||||
|
|
||||||
def testSerialization(self):
|
def testSerialization(self):
|
||||||
import pickle
|
from gluon._compat import pickle
|
||||||
db = DAL(check_reserved=['all'])
|
db = DAL(check_reserved=['all'])
|
||||||
db.define_table('t_a', Field('f_a'))
|
db.define_table('t_a', Field('f_a'))
|
||||||
db.t_a.insert(f_a='test')
|
db.t_a.insert(f_a='test')
|
||||||
|
|||||||
+4
-4
@@ -13,7 +13,7 @@ Auth, Mail, PluginManager and various utilities
|
|||||||
import base64
|
import base64
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
from gluon._compat import pickle, thread, urllib2, Cookie, StringIO, configparser, MIMEBase, MIMEMultipart, \
|
from gluon._compat import pickle, thread, urllib2, Cookie, StringIO, configparser, MIMEBase, MIMEMultipart, \
|
||||||
MIMEText, Encoders, Charset, long, urllib_quote
|
MIMEText, Encoders, Charset, long, urllib_quote, iteritems
|
||||||
import datetime
|
import datetime
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
@@ -744,7 +744,7 @@ class Mail(object):
|
|||||||
to.extend(bcc)
|
to.extend(bcc)
|
||||||
payload['Subject'] = encoded_or_raw(subject.decode(encoding))
|
payload['Subject'] = encoded_or_raw(subject.decode(encoding))
|
||||||
payload['Date'] = email.utils.formatdate()
|
payload['Date'] = email.utils.formatdate()
|
||||||
for k, v in headers.iteritems():
|
for k, v in iteritems(headers):
|
||||||
payload[k] = encoded_or_raw(v.decode(encoding))
|
payload[k] = encoded_or_raw(v.decode(encoding))
|
||||||
result = {}
|
result = {}
|
||||||
try:
|
try:
|
||||||
@@ -1230,7 +1230,7 @@ class AuthJWT(object):
|
|||||||
self.header_prefix = header_prefix
|
self.header_prefix = header_prefix
|
||||||
self.jwt_add_header = jwt_add_header or {}
|
self.jwt_add_header = jwt_add_header or {}
|
||||||
base_header = {'alg': self.algorithm, 'typ': 'JWT'}
|
base_header = {'alg': self.algorithm, 'typ': 'JWT'}
|
||||||
for k, v in self.jwt_add_header.iteritems():
|
for k, v in iteritems(self.jwt_add_header):
|
||||||
base_header[k] = v
|
base_header[k] = v
|
||||||
self.cached_b64h = self.jwt_b64e(json.dumps(base_header))
|
self.cached_b64h = self.jwt_b64e(json.dumps(base_header))
|
||||||
digestmod_mapping = {
|
digestmod_mapping = {
|
||||||
@@ -5879,7 +5879,7 @@ class Service(object):
|
|||||||
prefix='pys',
|
prefix='pys',
|
||||||
documentation=documentation,
|
documentation=documentation,
|
||||||
ns=True)
|
ns=True)
|
||||||
for method, (function, returns, args, doc) in procedures.iteritems():
|
for method, (function, returns, args, doc) in iteritems(procedures):
|
||||||
dispatcher.register_function(method, function, returns, args, doc)
|
dispatcher.register_function(method, function, returns, args, doc)
|
||||||
if request.env.request_method == 'POST':
|
if request.env.request_method == 'POST':
|
||||||
fault = {}
|
fault = {}
|
||||||
|
|||||||
+4
-5
@@ -11,7 +11,7 @@ Utilities and class for UTF8 strings managing
|
|||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
"""
|
"""
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
from gluon._compat import builtin as __builtin__, unicodeT
|
from gluon._compat import builtin as __builtin__, unicodeT, iteritems
|
||||||
|
|
||||||
__all__ = ['Utf8']
|
__all__ = ['Utf8']
|
||||||
|
|
||||||
@@ -339,9 +339,8 @@ class Utf8(str):
|
|||||||
s, 'utf-8') if isinstance(s, str) else s for s in args]
|
s, 'utf-8') if isinstance(s, str) else s for s in args]
|
||||||
kwargs = dict((unicode(k, 'utf-8') if isinstance(k, str) else k,
|
kwargs = dict((unicode(k, 'utf-8') if isinstance(k, str) else k,
|
||||||
unicode(v, 'utf-8') if isinstance(v, str) else v)
|
unicode(v, 'utf-8') if isinstance(v, str) else v)
|
||||||
for k, v in kwargs.iteritems())
|
for k, v in iteritems(kwargs))
|
||||||
return str.__new__(Utf8, unicode(self, 'utf-8').
|
return str.__new__(Utf8, unicode(self, 'utf-8').format(*args, **kwargs).encode('utf-8'))
|
||||||
format(*args, **kwargs).encode('utf-8'))
|
|
||||||
|
|
||||||
def __mod__(self, right):
|
def __mod__(self, right):
|
||||||
if isinstance(right, tuple):
|
if isinstance(right, tuple):
|
||||||
@@ -350,7 +349,7 @@ class Utf8(str):
|
|||||||
elif isinstance(right, dict):
|
elif isinstance(right, dict):
|
||||||
right = dict((unicode(k, 'utf-8') if isinstance(k, str) else k,
|
right = dict((unicode(k, 'utf-8') if isinstance(k, str) else k,
|
||||||
unicode(v, 'utf-8') if isinstance(v, str) else v)
|
unicode(v, 'utf-8') if isinstance(v, str) else v)
|
||||||
for k, v in right.iteritems())
|
for k, v in iteritems(right))
|
||||||
elif isinstance(right, str):
|
elif isinstance(right, str):
|
||||||
right = unicode(right, 'utf-8')
|
right = unicode(right, 'utf-8')
|
||||||
return str.__new__(Utf8, unicode(self, 'utf-8').__mod__(right).encode('utf-8'))
|
return str.__new__(Utf8, unicode(self, 'utf-8').__mod__(right).encode('utf-8'))
|
||||||
|
|||||||
Reference in New Issue
Block a user