diff options
| author | xmo-odoo <xmo@odoo.com> | 2017-04-27 13:59:33 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-04-27 13:59:33 +0200 |
| commit | 2e6a589f417af48e3322955ffff6e94b6d8a24e3 (patch) | |
| tree | aa613ecc1f74a9531a03de89aa2bdc7bb32eed3b /odoo/addons | |
| parent | de4a2216b953abb86094c9bfa5f45b1eaaa79d3d (diff) | |
[FIX] builtins removed from Python 3
* Reverse wrapper courtesy of @rco-odoo's original P3 branch
* thin compat module stripped down from werkzeug (to augment as needed)
issue 8530
Diffstat (limited to 'odoo/addons')
| -rw-r--r-- | odoo/addons/base/ir/ir_model.py | 3 | ||||
| -rw-r--r-- | odoo/addons/base/ir/ir_qweb/ir_qweb.py | 3 | ||||
| -rw-r--r-- | odoo/addons/base/ir/ir_qweb/qweb.py | 5 | ||||
| -rw-r--r-- | odoo/addons/base/ir/ir_translation.py | 3 | ||||
| -rw-r--r-- | odoo/addons/base/ir/ir_ui_menu.py | 4 | ||||
| -rw-r--r-- | odoo/addons/base/ir/ir_ui_view.py | 6 | ||||
| -rw-r--r-- | odoo/addons/base/res/ir_property.py | 3 | ||||
| -rw-r--r-- | odoo/addons/base/tests/test_api.py | 6 | ||||
| -rw-r--r-- | odoo/addons/base/tests/test_expression.py | 3 | ||||
| -rw-r--r-- | odoo/addons/base/tests/test_float.py | 13 | ||||
| -rw-r--r-- | odoo/addons/base/tests/test_ir_sequence.py | 4 | ||||
| -rw-r--r-- | odoo/addons/base/tests/test_ir_sequence_date_range.py | 8 | ||||
| -rw-r--r-- | odoo/addons/base/tests/test_misc.py | 4 | ||||
| -rw-r--r-- | odoo/addons/base/tests/test_orm.py | 4 | ||||
| -rw-r--r-- | odoo/addons/base/tests/test_res_config.py | 3 | ||||
| -rw-r--r-- | odoo/addons/test_limits/models.py | 4 | ||||
| -rw-r--r-- | odoo/addons/test_new_api/tests/test_attributes.py | 3 | ||||
| -rw-r--r-- | odoo/addons/test_pylint/tests/test_pylint.py | 15 |
18 files changed, 59 insertions, 35 deletions
diff --git a/odoo/addons/base/ir/ir_model.py b/odoo/addons/base/ir/ir_model.py index 4c64a172057..79118c845f2 100644 --- a/odoo/addons/base/ir/ir_model.py +++ b/odoo/addons/base/ir/ir_model.py @@ -10,6 +10,7 @@ from odoo import api, fields, models, SUPERUSER_ID, tools, _ from odoo.exceptions import AccessError, UserError, ValidationError from odoo.modules.registry import Registry from odoo.osv import expression +from odoo.tools import pycompat from odoo.tools.safe_eval import safe_eval _logger = logging.getLogger(__name__) @@ -1055,7 +1056,7 @@ class IrModelAccess(models.Model): else: model_name = model - if isinstance(group_ids, (int, long)): + if isinstance(group_ids, pycompat.integer_types): group_ids = [group_ids] query = """ SELECT 1 FROM ir_model_access a diff --git a/odoo/addons/base/ir/ir_qweb/ir_qweb.py b/odoo/addons/base/ir/ir_qweb/ir_qweb.py index dc71f3304ab..20a640be8d4 100644 --- a/odoo/addons/base/ir/ir_qweb/ir_qweb.py +++ b/odoo/addons/base/ir/ir_qweb/ir_qweb.py @@ -4,6 +4,7 @@ import ast from urlparse import urlparse from lxml import html +from odoo.tools import pycompat from .qweb import QWeb, Contextifier from .assetsbundle import AssetsBundle from lxml import etree @@ -90,7 +91,7 @@ class IrQWeb(models.AbstractModel, QWeb): view = self.env['ir.ui.view'].browse(view_id) return view.inherit_id is not None - if isinstance(name, (int, long)) or is_child_view(name): + if isinstance(name, pycompat.integer_types) or is_child_view(name): for node in etree.fromstring(template): if node.get('t-name'): node.set('t-name', str(name)) diff --git a/odoo/addons/base/ir/ir_qweb/qweb.py b/odoo/addons/base/ir/ir_qweb/qweb.py index 0c69bd90baa..a4204326344 100644 --- a/odoo/addons/base/ir/ir_qweb/qweb.py +++ b/odoo/addons/base/ir/ir_qweb/qweb.py @@ -11,6 +11,9 @@ from werkzeug.utils import escape as _escape from itertools import chain, izip, tee import __builtin__ from functools import reduce + +from odoo.tools import pycompat + builtin_defaults = {name: getattr(__builtin__, name) for name in dir(__builtin__)} try: @@ -160,7 +163,7 @@ def foreach_iterator(base_ctx, enum, name): if not enum: return if isinstance(enum, int): - enum = xrange(enum) + enum = pycompat.range(enum) size = None if isinstance(enum, Sized): ctx["%s_size" % name] = size = len(enum) diff --git a/odoo/addons/base/ir/ir_translation.py b/odoo/addons/base/ir/ir_translation.py index bf580bbf3bf..7d73f40d65b 100644 --- a/odoo/addons/base/ir/ir_translation.py +++ b/odoo/addons/base/ir/ir_translation.py @@ -8,6 +8,7 @@ from difflib import get_close_matches from odoo import api, fields, models, tools, SUPERUSER_ID, _ from odoo.exceptions import AccessError, UserError, ValidationError from odoo.modules import get_module_path, get_module_resource +from odoo.tools import pycompat _logger = logging.getLogger(__name__) @@ -395,7 +396,7 @@ class IrTranslation(models.Model): if isinstance(types, basestring): types = (types,) if res_id: - if isinstance(res_id, (int, long)): + if isinstance(res_id, pycompat.integer_types): res_id = (res_id,) else: res_id = tuple(res_id) diff --git a/odoo/addons/base/ir/ir_ui_menu.py b/odoo/addons/base/ir/ir_ui_menu.py index 15ba7509700..c8a39322835 100644 --- a/odoo/addons/base/ir/ir_ui_menu.py +++ b/odoo/addons/base/ir/ir_ui_menu.py @@ -133,9 +133,9 @@ class IrUiMenu(models.Model): if not self._context.get('ir.ui.menu.full_list'): menus = menus._filter_visible_menus() if offset: - menus = menus[long(offset):] + menus = menus[offset:] if limit: - menus = menus[:long(limit)] + menus = menus[:limit] return len(menus) if count else menus @api.multi diff --git a/odoo/addons/base/ir/ir_ui_view.py b/odoo/addons/base/ir/ir_ui_view.py index 729d4a8364d..c557d15ee6b 100644 --- a/odoo/addons/base/ir/ir_ui_view.py +++ b/odoo/addons/base/ir/ir_ui_view.py @@ -22,7 +22,7 @@ from odoo.exceptions import ValidationError from odoo.http import request from odoo.modules.module import get_resource_from_path, get_resource_path from odoo.osv import orm -from odoo.tools import config, graph, ConstantMapping, SKIPPED_ELEMENT_TYPES +from odoo.tools import config, graph, ConstantMapping, SKIPPED_ELEMENT_TYPES, pycompat from odoo.tools.convert import _fix_multiple_roots from odoo.tools.parse_version import parse_version from odoo.tools.safe_eval import safe_eval @@ -944,7 +944,7 @@ actual arch. view ID or an XML ID. Note that this method may be overridden for other kinds of template values. """ - if isinstance(template, (int, long)): + if isinstance(template, pycompat.integer_types): return template if '.' not in template: raise ValueError('Invalid template id: %r' % template) @@ -1045,7 +1045,7 @@ actual arch. @api.multi def render(self, values=None, engine='ir.qweb'): - assert isinstance(self.id, (int, long)) + assert isinstance(self.id, pycompat.integer_types) qcontext = dict( env=self.env, diff --git a/odoo/addons/base/res/ir_property.py b/odoo/addons/base/res/ir_property.py index 4dcc33209f2..8e1b7eda860 100644 --- a/odoo/addons/base/res/ir_property.py +++ b/odoo/addons/base/res/ir_property.py @@ -5,6 +5,7 @@ from operator import itemgetter from odoo import api, fields, models, _ from odoo.exceptions import UserError +from odoo.tools import pycompat TYPE2FIELD = { 'char': 'value_text', @@ -70,7 +71,7 @@ class Property(models.Model): if field == 'value_reference': if isinstance(value, models.BaseModel): value = '%s,%d' % (value._name, value.id) - elif isinstance(value, (int, long)): + elif isinstance(value, pycompat.integer_types): field_id = values.get('fields_id') if not field_id: if not prop: diff --git a/odoo/addons/base/tests/test_api.py b/odoo/addons/base/tests/test_api.py index cbb63daec59..8270d6086d5 100644 --- a/odoo/addons/base/tests/test_api.py +++ b/odoo/addons/base/tests/test_api.py @@ -2,7 +2,7 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import models -from odoo.tools import mute_logger +from odoo.tools import mute_logger, pycompat from odoo.tests import common from odoo.exceptions import AccessError @@ -69,8 +69,8 @@ class TestAPI(common.TransactionCase): self.cr.execute("SELECT COUNT(*) FROM res_partner WHERE active") count1 = self.cr.fetchone()[0] count2 = self.env['res.partner'].search([], count=True) - self.assertIsInstance(count1, (int, long)) - self.assertIsInstance(count2, (int, long)) + self.assertIsInstance(count1, pycompat.integer_types) + self.assertIsInstance(count2, pycompat.integer_types) self.assertEqual(count1, count2) @mute_logger('odoo.models') diff --git a/odoo/addons/base/tests/test_expression.py b/odoo/addons/base/tests/test_expression.py index 104c4a6dfe1..4dea4797b0c 100644 --- a/odoo/addons/base/tests/test_expression.py +++ b/odoo/addons/base/tests/test_expression.py @@ -214,9 +214,8 @@ class TestExpression(TransactionCase): # create new company with partners, and partners with no company company2 = self.env['res.company'].create({'name': 'Acme 2'}) - for i in xrange(4): + for i in range(4): Partner.create({'name': 'P of Acme %s' % i, 'company_id': company2.id}) - for i in xrange(4): Partner.create({'name': 'P of All %s' % i, 'company_id': False}) # check if many2one works with negative empty list diff --git a/odoo/addons/base/tests/test_float.py b/odoo/addons/base/tests/test_float.py index 03e15b5877e..8c4ee380bd2 100644 --- a/odoo/addons/base/tests/test_float.py +++ b/odoo/addons/base/tests/test_float.py @@ -4,7 +4,7 @@ from math import log10 from odoo.tests.common import TransactionCase -from odoo.tools import float_compare, float_is_zero, float_repr, float_round, float_split_str +from odoo.tools import float_compare, float_is_zero, float_repr, float_round, float_split_str, pycompat class TestFloatPrecision(TransactionCase): @@ -98,14 +98,13 @@ class TestFloatPrecision(TransactionCase): precisions = [2, 2, 2, 2, 2, 2, 3, 4] # Note: max precision for double floats is 53 bits of precision or # 17 significant decimal digits - for magnitude in range(7): - for i in xrange(len(fractions)): - frac, exp, prec = fractions[i], expecteds[i], precisions[i] + for magnitude in pycompat.range(7): + for frac, exp, prec in zip(fractions, expecteds, precisions): for sign in [-1,1]: - for x in xrange(0,10000,97): - n = x * 10**magnitude + for x in pycompat.range(0, 10000, 97): + n = x * 10 ** magnitude f = sign * (n + frac) - f_exp = ('-' if f != 0 and sign == -1 else '') + str(n) + exp + f_exp = ('-' if f != 0 and sign == -1 else '') + str(n) + exp try_round(f, f_exp, digits=prec) def try_zero(amount, expected): diff --git a/odoo/addons/base/tests/test_ir_sequence.py b/odoo/addons/base/tests/test_ir_sequence.py index 76db66d7008..946043d9f4b 100644 --- a/odoo/addons/base/tests/test_ir_sequence.py +++ b/odoo/addons/base/tests/test_ir_sequence.py @@ -154,7 +154,7 @@ class TestIrSequenceGenerate(unittest.TestCase): self.assertTrue(seq) with environment() as env: - for i in xrange(1, 10): + for i in range(1, 10): n = env['ir.sequence'].next_by_code('test_sequence_type_5') self.assertEqual(n, str(i)) @@ -169,7 +169,7 @@ class TestIrSequenceGenerate(unittest.TestCase): self.assertTrue(seq) with environment() as env: - for i in xrange(1, 10): + for i in range(1, 10): n = env['ir.sequence'].next_by_code('test_sequence_type_6') self.assertEqual(n, str(i)) diff --git a/odoo/addons/base/tests/test_ir_sequence_date_range.py b/odoo/addons/base/tests/test_ir_sequence_date_range.py index 147b0f26050..7bd43eb4ea9 100644 --- a/odoo/addons/base/tests/test_ir_sequence_date_range.py +++ b/odoo/addons/base/tests/test_ir_sequence_date_range.py @@ -116,16 +116,16 @@ class TestIrSequenceDateRangeChangeImplementation(SingleTransactionCase): seq = self.env['ir.sequence'] seq16 = self.env['ir.sequence'].with_context({'ir_sequence_date': january(16)}) - for i in xrange(1, 5): + for i in range(1, 5): n = seq.next_by_code('test_sequence_date_range_3') self.assertEqual(n, str(i)) - for i in xrange(1, 5): + for i in range(1, 5): n = seq16.next_by_code('test_sequence_date_range_3') self.assertEqual(n, str(i)) - for i in xrange(1, 5): + for i in range(1, 5): n = seq.next_by_code('test_sequence_date_range_4') self.assertEqual(n, str(i)) - for i in xrange(1, 5): + for i in range(1, 5): n = seq16.next_by_code('test_sequence_date_range_4') self.assertEqual(n, str(i)) diff --git a/odoo/addons/base/tests/test_misc.py b/odoo/addons/base/tests/test_misc.py index b8ede104a7c..c148b901982 100644 --- a/odoo/addons/base/tests/test_misc.py +++ b/odoo/addons/base/tests/test_misc.py @@ -16,14 +16,14 @@ class TestCountingStream(unittest.TestCase): self.assertEqual(s.index, 0) def test_single(self): - s = misc.CountingStream(xrange(1)) + s = misc.CountingStream(range(1)) self.assertEqual(s.index, -1) self.assertEqual(next(s, None), 0) self.assertIsNone(next(s, None)) self.assertEqual(s.index, 1) def test_full(self): - s = misc.CountingStream(xrange(42)) + s = misc.CountingStream(range(42)) for _ in s: pass self.assertEqual(s.index, 42) diff --git a/odoo/addons/base/tests/test_orm.py b/odoo/addons/base/tests/test_orm.py index ef586218a0d..0da71a84ad5 100644 --- a/odoo/addons/base/tests/test_orm.py +++ b/odoo/addons/base/tests/test_orm.py @@ -5,7 +5,7 @@ from collections import defaultdict from odoo.exceptions import AccessError, MissingError from odoo.tests.common import TransactionCase -from odoo.tools import mute_logger +from odoo.tools import mute_logger, pycompat class TestORM(TransactionCase): @@ -193,7 +193,7 @@ class TestInherits(TransactionCase): """ `default_get` cannot return a dictionary or a new id """ defaults = self.env['res.users'].default_get(['partner_id']) if 'partner_id' in defaults: - self.assertIsInstance(defaults['partner_id'], (bool, int, long)) + self.assertIsInstance(defaults['partner_id'], (bool, pycompat.integer_types)) def test_create(self): """ creating a user should automatically create a new partner """ diff --git a/odoo/addons/base/tests/test_res_config.py b/odoo/addons/base/tests/test_res_config.py index af919ce4b66..89300bf43a5 100644 --- a/odoo/addons/base/tests/test_res_config.py +++ b/odoo/addons/base/tests/test_res_config.py @@ -3,6 +3,7 @@ from odoo import exceptions from odoo.tests.common import TransactionCase +from odoo.tools import pycompat class TestResConfig(TransactionCase): @@ -42,7 +43,7 @@ class TestResConfig(TransactionCase): self.assertIsInstance(res, tuple) self.assertEqual(len(res), 2, "The result should contain 2 elements") self.assertIsInstance(res[0], basestring) - self.assertIsInstance(res[1], (int, long)) + self.assertIsInstance(res[1], pycompat.integer_types) # Check returned values self.assertEqual(res[0], self.expected_path) diff --git a/odoo/addons/test_limits/models.py b/odoo/addons/test_limits/models.py index f46402857cf..506578a811b 100644 --- a/odoo/addons/test_limits/models.py +++ b/odoo/addons/test_limits/models.py @@ -2,8 +2,10 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. import time +import sys from odoo import models, api +from odoo.tools import pycompat class m(models.Model): """ This model exposes a few methods that will consume between 'almost no @@ -37,7 +39,7 @@ class m(models.Model): t0 = time.clock() t1 = time.clock() while t1 - t0 < seconds: - for i in xrange(10000000): + for i in pycompat.range(10000000): x = i * i t1 = time.clock() return True diff --git a/odoo/addons/test_new_api/tests/test_attributes.py b/odoo/addons/test_new_api/tests/test_attributes.py index 636dadf2a06..b37afe7e30d 100644 --- a/odoo/addons/test_new_api/tests/test_attributes.py +++ b/odoo/addons/test_new_api/tests/test_attributes.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- from odoo.tests import common +from odoo.tools import pycompat ANSWER_TO_ULTIMATE_QUESTION = 42 @@ -16,7 +17,7 @@ class TestAttributes(common.TransactionCase): self.assertTrue(hasattr(instance, 'unknown')) # Is it the right type ? - self.assertIsInstance(instance.unknown, (int, long)) + self.assertIsInstance(instance.unknown, pycompat.integer_types) # Is it the right value, in case of, we don't know ;-) self.assertEqual(instance.unknown, ANSWER_TO_ULTIMATE_QUESTION) diff --git a/odoo/addons/test_pylint/tests/test_pylint.py b/odoo/addons/test_pylint/tests/test_pylint.py index 38fa4c3d51a..02c1a14a261 100644 --- a/odoo/addons/test_pylint/tests/test_pylint.py +++ b/odoo/addons/test_pylint/tests/test_pylint.py @@ -25,6 +25,21 @@ class TestPyLint(TransactionCase): 'E0601', # using variable before assignment 'W0123', # eval used 'W0101', # unreachable code + + 'long-suffix', + 'apply-builtin', + 'cmp-builtin', + 'coerce-builtin', + 'execfile-builtin', + 'input-builtin', + 'intern-builtin', + 'long-builtin', + 'raw_input-builtin', + 'reload-builtin', + 'xrange-builtin', + # TODO: enable once report has been removed + # 'file-builtin', + # 'reduce-builtin', ] def _skip_test(self, reason): |
