summaryrefslogtreecommitdiff
path: root/odoo/sql_db.py
diff options
context:
space:
mode:
authorxmo-odoo <xmo@odoo.com>2017-05-10 09:39:55 +0200
committerGitHub <noreply@github.com>2017-05-10 09:39:55 +0200
commitfffaf735f58f1ac57781c095eb552de6d1fcdc47 (patch)
tree88ab0ab65430d871862a836524e0ecc890d1674d /odoo/sql_db.py
parent10eee18a047d35305dc46282e610e88936d81ffc (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.py10
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)