diff options
| author | xmo-odoo <xmo@odoo.com> | 2017-05-10 09:39:55 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-05-10 09:39:55 +0200 |
| commit | fffaf735f58f1ac57781c095eb552de6d1fcdc47 (patch) | |
| tree | 88ab0ab65430d871862a836524e0ecc890d1674d /odoo/sql_db.py | |
| parent | 10eee18a047d35305dc46282e610e88936d81ffc (diff) | |
[FIX] P3: list -> iterable builtins (#16811)
In Python 3:
* various builtins and dict methods were changed to return
view/iterable objects rather than lists
* and the separate Python 2 view/iterable builtins and methods were
removed altogether
This is problematic when using these items as list (which the happens
repeatedly in Odoo), but more viciously when iterating *multiple times*
over them (which also happens, which I've messed up multiple times while
writing this, and which is a pain to debug even when you've just created
the issue).
Convert all code using these to semantics-matching cross-version
helper functions to get the LCD behaviour between P2 and P3, and
forbid the builtins via lint.
issue #8530
Diffstat (limited to 'odoo/sql_db.py')
| -rw-r--r-- | odoo/sql_db.py | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/odoo/sql_db.py b/odoo/sql_db.py index 9a438d387de..a722c3ea41b 100644 --- a/odoo/sql_db.py +++ b/odoo/sql_db.py @@ -47,7 +47,7 @@ def undecimalize(symb, cr): return None return float(symb) -for name, typeoid in types_mapping.items(): +for name, typeoid in pycompat.items(types_mapping): psycopg2.extensions.register_type(psycopg2.extensions.new_type(typeoid, name, lambda x, cr: x)) psycopg2.extensions.register_type(psycopg2.extensions.new_type((700, 701, 1700,), 'float', undecimalize)) @@ -190,9 +190,9 @@ class Cursor(object): row = self._obj.fetchone() return row and self.__build_dict(row) def dictfetchmany(self, size): - return map(self.__build_dict, self._obj.fetchmany(size)) + return [self.__build_dict(row) for row in self._obj.fetchmany(size)] def dictfetchall(self): - return map(self.__build_dict, self._obj.fetchall()) + return [self.__build_dict(row) for row in self._obj.fetchall()] def __del__(self): if not self._closed and not self._cnx.closed: @@ -260,7 +260,7 @@ class Cursor(object): sqllogs = {'from': self.sql_from_log, 'into': self.sql_into_log} sum = 0 if sqllogs[type]: - sqllogitems = sqllogs[type].items() + sqllogitems = pycompat.items(sqllogs[type]) _logger.debug("SQL LOG %s:", type) for r in sorted(sqllogitems, key=lambda k: k[1]): delay = timedelta(microseconds=r[1][1]) @@ -473,7 +473,7 @@ class LazyCursor(object): if cr is None: from odoo import registry cr = self._cursor = registry(self.dbname).cursor() - for _ in pycompat.range(self._depth): + for _ in range(self._depth): cr.__enter__() return getattr(cr, name) |
