summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>2017-03-01 20:12:13 +0000
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>2017-03-01 20:12:13 +0000
commit44d8edfd8c3bcaa3167e84fd11cc62b43bfd3af5 (patch)
tree0eb7221647e009e7b3675d63381cef500cccf08f
parent455f51c36ce6100b0da816e0056af60fa978c8a6 (diff)
downloadpsycopg2-44d8edfd8c3bcaa3167e84fd11cc62b43bfd3af5.tar.gz
Ignore None arguments passed to make_dsn()fix-517
Close #517.
-rw-r--r--NEWS7
-rw-r--r--lib/extensions.py3
-rwxr-xr-xtests/test_connection.py4
3 files changed, 14 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 8fc14cd..1b934b3 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,13 @@
Current release
---------------
+What's new in psycopg 2.7.1
+---------------------------
+
+- Ignore `!None` arguments passed to `~psycopg2.connect()` and
+ `~psycopg2.extensions.make_dsn()` (:ticket:`#517`).
+
+
What's new in psycopg 2.7
-------------------------
diff --git a/lib/extensions.py b/lib/extensions.py
index 9fee551..00d71f0 100644
--- a/lib/extensions.py
+++ b/lib/extensions.py
@@ -162,6 +162,9 @@ def make_dsn(dsn=None, **kwargs):
"you can't specify both 'database' and 'dbname' arguments")
kwargs['dbname'] = kwargs.pop('database')
+ # Drop the None arguments
+ kwargs = dict((k, v) for (k, v) in kwargs.iteritems() if v is not None)
+
if dsn is not None:
tmp = parse_dsn(dsn)
tmp.update(kwargs)
diff --git a/tests/test_connection.py b/tests/test_connection.py
index a9525b4..dae0560 100755
--- a/tests/test_connection.py
+++ b/tests/test_connection.py
@@ -459,6 +459,10 @@ class MakeDsnTestCase(ConnectingTestCase):
dsn = ext.make_dsn(dsnin)
self.assertEqual(dsn, dsnin)
+ def test_null_args(self):
+ dsn = ext.make_dsn("dbname=foo", user="bar", password=None)
+ self.assertDsnEqual(dsn, "dbname=foo user=bar")
+
@skip_before_libpq(9, 2)
def test_url_is_cool(self):
url = 'postgresql://tester:secret@/test?application_name=wat'