Merge branch 'fix-679'

This commit is contained in:
Daniele Varrazzo 2018-02-21 12:05:06 +00:00
commit 90b26c3e23
3 changed files with 17 additions and 2 deletions

1
NEWS
View File

@ -20,6 +20,7 @@ What's new in psycopg 2.7.5
- Fixed building on Solaris 11 and derivatives such as SmartOS and illumos - Fixed building on Solaris 11 and derivatives such as SmartOS and illumos
(:ticket:`#677`). (:ticket:`#677`).
- Maybe fixed building on MSYS2 (as reported in :ticket:`#658`). - Maybe fixed building on MSYS2 (as reported in :ticket:`#658`).
- Allow string subclasses in connection and other places (:ticket:`#679`).
What's new in psycopg 2.7.4 What's new in psycopg 2.7.4

View File

@ -168,11 +168,11 @@ psycopg_ensure_bytes(PyObject *obj)
PyObject *rv = NULL; PyObject *rv = NULL;
if (!obj) { return NULL; } if (!obj) { return NULL; }
if (PyUnicode_CheckExact(obj)) { if (PyUnicode_Check(obj)) {
rv = PyUnicode_AsUTF8String(obj); rv = PyUnicode_AsUTF8String(obj);
Py_DECREF(obj); Py_DECREF(obj);
} }
else if (Bytes_CheckExact(obj)) { else if (Bytes_Check(obj)) {
rv = obj; rv = obj;
} }
else { else {

View File

@ -246,6 +246,13 @@ class ConnectionTests(ConnectingTestCase):
else: else:
del os.environ['PGCLIENTENCODING'] del os.environ['PGCLIENTENCODING']
def test_connect_no_string(self):
class MyString(str):
pass
conn = psycopg2.connect(MyString(dsn))
conn.close()
def test_weakref(self): def test_weakref(self):
from weakref import ref from weakref import ref
import gc import gc
@ -400,6 +407,13 @@ class ParseDsnTestCase(ConnectingTestCase):
self.assertRaises(TypeError, ext.parse_dsn, None) self.assertRaises(TypeError, ext.parse_dsn, None)
self.assertRaises(TypeError, ext.parse_dsn, 42) self.assertRaises(TypeError, ext.parse_dsn, 42)
def test_str_subclass(self):
class MyString(str):
pass
res = ext.parse_dsn(MyString("dbname=test"))
self.assertEqual(res, {'dbname': 'test'})
class MakeDsnTestCase(ConnectingTestCase): class MakeDsnTestCase(ConnectingTestCase):
def test_empty_arguments(self): def test_empty_arguments(self):