From db8306b5c4d64e22f1b10d05f97d22ea5fdacec3 Mon Sep 17 00:00:00 2001 From: ilvalle Date: Thu, 2 Jun 2016 17:21:36 +0200 Subject: [PATCH] fix iteritems, enabled test_cache & test_dal for 3.5 --- gluon/http.py | 3 ++- gluon/languages.py | 6 +++--- gluon/rocket.py | 5 +++-- gluon/scheduler.py | 4 ++-- gluon/shell.py | 3 ++- gluon/sqlhtml.py | 8 ++++---- gluon/tests/__init__.py | 4 ++-- gluon/tests/test_dal.py | 2 +- gluon/tools.py | 8 ++++---- gluon/utf8.py | 9 ++++----- 10 files changed, 27 insertions(+), 25 deletions(-) diff --git a/gluon/http.py b/gluon/http.py index 53f5bf5d..c251cbdd 100644 --- a/gluon/http.py +++ b/gluon/http.py @@ -11,6 +11,7 @@ HTTP statuses helpers """ import re +from gluon._compat import iteritems __all__ = ['HTTP', 'redirect'] @@ -112,7 +113,7 @@ class HTTP(Exception): if isinstance(body, str): headers['Content-Length'] = len(body) rheaders = [] - for k, v in headers.iteritems(): + for k, v in iteritems(headers): if isinstance(v, list): rheaders += [(k, str(item)) for item in v] elif not v is None: diff --git a/gluon/languages.py b/gluon/languages.py index 9c550865..67574064 100644 --- a/gluon/languages.py +++ b/gluon/languages.py @@ -18,7 +18,7 @@ import pkgutil import logging from cgi import escape 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.utf8 import Utf8 @@ -756,7 +756,7 @@ class translator(object): if isinstance(symbols, dict): symbols.update( (key, xmlescape(value).translate(ttab_in)) - for key, value in symbols.iteritems() + for key, value in iteritems(symbols) if not isinstance(value, NUMBERS)) else: if not isinstance(symbols, tuple): @@ -939,7 +939,7 @@ class translator(object): if isinstance(symbols, dict): symbols.update( (key, str(value).translate(ttab_in)) - for key, value in symbols.iteritems() + for key, value in iteritems(symbols) if not isinstance(value, NUMBERS)) else: if not isinstance(symbols, tuple): diff --git a/gluon/rocket.py b/gluon/rocket.py index 74d1ab64..51460532 100644 --- a/gluon/rocket.py +++ b/gluon/rocket.py @@ -11,6 +11,7 @@ import errno import socket import logging import platform +from gluon._compat import iteritems # Define Constants VERSION = '1.2.6' @@ -1430,7 +1431,7 @@ class Worker(Thread): raise BadRequest req = match.groupdict() - for k, v in req.iteritems(): + for k, v in iteritems(req): if not v: req[k] = "" if k == 'path': @@ -1654,7 +1655,7 @@ class WSGIWorker(Worker): environ = self.base_environ.copy() # 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 # Add CGI Variables diff --git a/gluon/scheduler.py b/gluon/scheduler.py index 19b4254d..ebf6182d 100644 --- a/gluon/scheduler.py +++ b/gluon/scheduler.py @@ -9,7 +9,7 @@ Background processes made simple --------------------------------- """ from __future__ import print_function -from gluon._compat import Queue, long +from gluon._compat import Queue, long, iteritems import os import time @@ -234,7 +234,7 @@ def _decode_list(lst): def _decode_dict(dct): newdict = {} - for k, v in dct.iteritems(): + for k, v in iteritems(dct): if isinstance(k, unicode): k = k.encode('utf-8') if isinstance(v, unicode): diff --git a/gluon/shell.py b/gluon/shell.py index a933fe74..f39660ff 100644 --- a/gluon/shell.py +++ b/gluon/shell.py @@ -30,6 +30,7 @@ from gluon.globals import Request, Response, Session from gluon.storage import Storage, List from gluon.admin import w2p_unpack from pydal.base import BaseAdapter +from gluon._compat import iteritems logger = logging.getLogger("web2py") @@ -146,7 +147,7 @@ def env( path_info = '%s/%s' % (path_info, '/'.join(request.args)) if request.vars: 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)) request.env.path_info = path_info diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index b396f939..26e25c81 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -19,7 +19,7 @@ import urllib import re 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.html import XmlComponent, truncate_string from gluon.html import XML, SPAN, TAG, A, DIV, CAT, UL, LI, TEXTAREA, BR, IMG @@ -2222,7 +2222,7 @@ class SQLFORM(FORM): if fields: # add missing tablename to virtual fields for table in tables: - for k, f in table.iteritems(): + for k, f in iteritems(table): if isinstance(f, Field.Virtual): f.tablename = table._tablename columns = [f for f in fields if f.tablename in tablenames] @@ -2234,7 +2234,7 @@ class SQLFORM(FORM): for table in tables: fields += filter(filter1, table) columns += filter(filter2, table) - for k, f in table.iteritems(): + for k, f in iteritems(table): if not k.startswith('_'): if isinstance(f, Field.Virtual) and f.readable: f.tablename = table._tablename @@ -2434,7 +2434,7 @@ class SQLFORM(FORM): selectable_columns.append(str(field)) # look for virtual fields not displayed (and virtual method # 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: expcolumns.append(str(field)) diff --git a/gluon/tests/__init__.py b/gluon/tests/__init__.py index a0d4ad30..f9b2f3fd 100644 --- a/gluon/tests/__init__.py +++ b/gluon/tests/__init__.py @@ -6,10 +6,11 @@ from .test_fileutils import * from .test_globals import * from .test_recfile import * from .test_storage import * +from .test_dal import * +from .test_cache import * if sys.version[:3] == '2.7': - from .test_cache import * from .test_compileapp import * from .test_html import * from .test_is_url import * @@ -20,7 +21,6 @@ if sys.version[:3] == '2.7': from .test_template import * from .test_validators import * from .test_utils import * - from .test_dal import * from .test_tools import * from .test_appadmin import * from .test_scheduler import * diff --git a/gluon/tests/test_dal.py b/gluon/tests/test_dal.py index 70fcdf92..4c7e0b24 100644 --- a/gluon/tests/test_dal.py +++ b/gluon/tests/test_dal.py @@ -34,7 +34,7 @@ class TestDALSubclass(unittest.TestCase): db.close() def testSerialization(self): - import pickle + from gluon._compat import pickle db = DAL(check_reserved=['all']) db.define_table('t_a', Field('f_a')) db.t_a.insert(f_a='test') diff --git a/gluon/tools.py b/gluon/tools.py index 1358e67a..57413838 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -13,7 +13,7 @@ Auth, Mail, PluginManager and various utilities import base64 from functools import reduce 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 logging import sys @@ -744,7 +744,7 @@ class Mail(object): to.extend(bcc) payload['Subject'] = encoded_or_raw(subject.decode(encoding)) 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)) result = {} try: @@ -1230,7 +1230,7 @@ class AuthJWT(object): self.header_prefix = header_prefix self.jwt_add_header = jwt_add_header or {} 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 self.cached_b64h = self.jwt_b64e(json.dumps(base_header)) digestmod_mapping = { @@ -5879,7 +5879,7 @@ class Service(object): prefix='pys', documentation=documentation, 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) if request.env.request_method == 'POST': fault = {} diff --git a/gluon/utf8.py b/gluon/utf8.py index 3689d985..315885b1 100644 --- a/gluon/utf8.py +++ b/gluon/utf8.py @@ -11,7 +11,7 @@ Utilities and class for UTF8 strings managing ---------------------------------------------- """ from __future__ import print_function -from gluon._compat import builtin as __builtin__, unicodeT +from gluon._compat import builtin as __builtin__, unicodeT, iteritems __all__ = ['Utf8'] @@ -339,9 +339,8 @@ class Utf8(str): 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, unicode(v, 'utf-8') if isinstance(v, str) else v) - for k, v in kwargs.iteritems()) - return str.__new__(Utf8, unicode(self, 'utf-8'). - format(*args, **kwargs).encode('utf-8')) + for k, v in iteritems(kwargs)) + return str.__new__(Utf8, unicode(self, 'utf-8').format(*args, **kwargs).encode('utf-8')) def __mod__(self, right): if isinstance(right, tuple): @@ -350,7 +349,7 @@ class Utf8(str): elif isinstance(right, dict): right = dict((unicode(k, 'utf-8') if isinstance(k, str) else k, 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): right = unicode(right, 'utf-8') return str.__new__(Utf8, unicode(self, 'utf-8').__mod__(right).encode('utf-8'))