Python3.4, fix lib python3 issues

This commit is contained in:
Andriy Sokolovskiy 2014-11-28 17:50:04 +02:00
parent a0d4c3f365
commit ee04e4bc54
5 changed files with 30 additions and 8 deletions

View File

@ -59,7 +59,7 @@ from psycopg2._psycopg import NotSupportedError, OperationalError
from psycopg2._psycopg import _connect, apilevel, threadsafety, paramstyle
from psycopg2._psycopg import __version__
from psycopg2 import tz
from psycopg2 import tz, _py3
# Register default adapters.
@ -147,7 +147,7 @@ def connect(dsn=None,
if port is not None:
items.append(('port', port))
items.extend([(k, v) for (k, v) in kwargs.iteritems() if v is not None])
items.extend([(k, v) for (k, v) in _py3.iteritems(kwargs) if v is not None])
if dsn is not None and items:
raise TypeError(

19
lib/_py3.py Normal file
View File

@ -0,0 +1,19 @@
import sys
PY3 = sys.version_info[0] == 3
if PY3:
import _thread
def iteritems(d, **kw):
return iter(d.items(**kw))
thread = _thread
else:
import thread as _thread
def iteritems(d, **kw):
return iter(d.iteritems(**kw))
thread = _thread

View File

@ -29,6 +29,9 @@ This module contains symbolic names for all PostgreSQL error codes.
# http://www.postgresql.org/docs/current/static/errcodes-appendix.html
#
from psycopg2 import _py3
def lookup(code, _cache={}):
"""Lookup an error code or class code and return its symbolic name.
@ -38,7 +41,7 @@ def lookup(code, _cache={}):
return _cache[code]
# Generate the lookup map at first usage.
for k, v in globals().iteritems():
for k, v in _py3.iteritems(globals()):
if isinstance(v, str) and len(v) in (2, 5):
_cache[v] = k

View File

@ -26,7 +26,6 @@ and classes until a better place in the distribution is found.
# License for more details.
import os as _os
import sys as _sys
import time as _time
import re as _re
@ -37,6 +36,7 @@ except:
import psycopg2
from psycopg2 import extensions as _ext
from psycopg2 import _py3
from psycopg2.extensions import cursor as _cursor
from psycopg2.extensions import connection as _connection
from psycopg2.extensions import adapt as _A
@ -191,7 +191,7 @@ class DictRow(list):
self._index = data[1]
# drop the crusty Py2 methods
if _sys.version_info[0] > 2:
if _py3.PY3:
items = iteritems; del iteritems
keys = iterkeys; del iterkeys
values = itervalues; del itervalues
@ -788,7 +788,7 @@ def register_hstore(conn_or_curs, globally=False, unicode=False,
array_oid = tuple([x for x in array_oid if x])
# create and register the typecaster
if _sys.version_info[0] < 3 and unicode:
if not _py3.PY3 and unicode:
cast = HstoreAdapter.parse_unicode
else:
cast = HstoreAdapter.parse

View File

@ -26,6 +26,7 @@ This module implements thread-safe (and not) connection pools.
import psycopg2
import psycopg2.extensions as _ext
from psycopg2 import _py3
class PoolError(psycopg2.Error):
@ -204,8 +205,7 @@ class PersistentConnectionPool(AbstractConnectionPool):
# we we'll need the thread module, to determine thread ids, so we
# import it here and copy it in an instance variable
import thread
self.__thread = thread
self.__thread = _py3.thread
def getconn(self):
"""Generate thread id and return a connection."""