]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
Allow omitting the conninfo param instead of requiring an empty string
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Wed, 11 Nov 2020 16:39:35 +0000 (16:39 +0000)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Wed, 11 Nov 2020 22:57:47 +0000 (22:57 +0000)
psycopg3/psycopg3/connection.py
tests/test_connection.py
tests/test_connection_async.py
tests/test_psycopg3_dbapi20.py

index 66249767bf2d723c459593d77638395fcad1ea97..9bbbae04c9af5835df7bbebdccd50ac6ae3f3d5d 100644 (file)
@@ -220,15 +220,15 @@ class Connection(BaseConnection):
 
     @classmethod
     def connect(
-        cls,
-        conninfo: Optional[str] = None,
-        *,
-        autocommit: bool = False,
-        **kwargs: Any,
+        cls, conninfo: str = "", *, autocommit: bool = False, **kwargs: Any
     ) -> "Connection":
-        if conninfo is None and not kwargs:
-            raise TypeError("missing conninfo and not parameters specified")
-        conninfo = make_conninfo(conninfo or "", **kwargs)
+        """
+        Connect to a database server and return a new `Connection` instance.
+
+        TODO: connection_timeout to be implemented.
+        """
+
+        conninfo = make_conninfo(conninfo, **kwargs)
         gen = connect(conninfo)
         pgconn = cls.wait(gen)
         conn = cls(pgconn)
@@ -351,15 +351,10 @@ class AsyncConnection(BaseConnection):
 
     @classmethod
     async def connect(
-        cls,
-        conninfo: Optional[str] = None,
-        *,
-        autocommit: bool = False,
-        **kwargs: Any,
+        cls, conninfo: str = "", *, autocommit: bool = False, **kwargs: Any
     ) -> "AsyncConnection":
-        if conninfo is None and not kwargs:
-            raise TypeError("missing conninfo and not parameters specified")
-        conninfo = make_conninfo(conninfo or "", **kwargs)
+        """`asyncio` version of `~Connection.connect()`."""
+        conninfo = make_conninfo(conninfo, **kwargs)
         gen = connect(conninfo)
         pgconn = await cls.wait(gen)
         conn = cls(pgconn)
index 2d28f20e9004381632613e7b6b1f44de122c35ba..66bbda62c9880c18c8d6d5f4ba43ae19d41cc08e 100644 (file)
@@ -256,20 +256,21 @@ def test_set_encoding_bad(conn):
 
 
 @pytest.mark.parametrize(
-    "testdsn, kwargs, want",
+    "args, kwargs, want",
     [
-        ("", {}, ""),
-        ("host=foo user=bar", {}, "host=foo user=bar"),
-        ("host=foo", {"user": "baz"}, "host=foo user=baz"),
+        ((), {}, ""),
+        (("",), {}, ""),
+        (("host=foo user=bar",), {}, "host=foo user=bar"),
+        (("host=foo",), {"user": "baz"}, "host=foo user=baz"),
         (
-            "host=foo port=5432",
+            ("host=foo port=5432",),
             {"host": "qux", "user": "joe"},
             "host=qux user=joe port=5432",
         ),
-        ("host=foo", {"user": None}, "host=foo"),
+        (("host=foo",), {"user": None}, "host=foo"),
     ],
 )
-def test_connect_args(monkeypatch, pgconn, testdsn, kwargs, want):
+def test_connect_args(monkeypatch, pgconn, args, kwargs, want):
     the_conninfo = None
 
     def fake_connect(conninfo):
@@ -279,12 +280,17 @@ def test_connect_args(monkeypatch, pgconn, testdsn, kwargs, want):
         yield
 
     monkeypatch.setattr(psycopg3.connection, "connect", fake_connect)
-    psycopg3.Connection.connect(testdsn, **kwargs)
+    psycopg3.Connection.connect(*args, **kwargs)
     assert conninfo_to_dict(the_conninfo) == conninfo_to_dict(want)
 
 
 @pytest.mark.parametrize(
-    "args, kwargs", [((), {}), (("", ""), {}), ((), {"nosuchparam": 42})]
+    "args, kwargs",
+    [
+        (("host=foo", "host=bar"), {}),
+        (("", ""), {}),
+        ((), {"nosuchparam": 42}),
+    ],
 )
 def test_connect_badargs(monkeypatch, pgconn, args, kwargs):
     def fake_connect(conninfo):
index 60f6a0c687896e23b338953e683815f73cd1bb90..30b50eef3c38e4507d21d5f5bb5b1768f08014bb 100644 (file)
@@ -272,20 +272,21 @@ async def test_set_encoding_bad(aconn):
 
 
 @pytest.mark.parametrize(
-    "testdsn, kwargs, want",
+    "args, kwargs, want",
     [
-        ("", {}, ""),
-        ("host=foo user=bar", {}, "host=foo user=bar"),
-        ("host=foo", {"user": "baz"}, "host=foo user=baz"),
+        ((), {}, ""),
+        (("",), {}, ""),
+        (("host=foo user=bar",), {}, "host=foo user=bar"),
+        (("host=foo",), {"user": "baz"}, "host=foo user=baz"),
         (
-            "host=foo port=5432",
+            ("host=foo port=5432",),
             {"host": "qux", "user": "joe"},
             "host=qux user=joe port=5432",
         ),
-        ("host=foo", {"user": None}, "host=foo"),
+        (("host=foo",), {"user": None}, "host=foo"),
     ],
 )
-async def test_connect_args(monkeypatch, pgconn, testdsn, kwargs, want):
+async def test_connect_args(monkeypatch, pgconn, args, kwargs, want):
     the_conninfo = None
 
     def fake_connect(conninfo):
@@ -295,12 +296,17 @@ async def test_connect_args(monkeypatch, pgconn, testdsn, kwargs, want):
         yield
 
     monkeypatch.setattr(psycopg3.connection, "connect", fake_connect)
-    await psycopg3.AsyncConnection.connect(testdsn, **kwargs)
+    await psycopg3.AsyncConnection.connect(*args, **kwargs)
     assert conninfo_to_dict(the_conninfo) == conninfo_to_dict(want)
 
 
 @pytest.mark.parametrize(
-    "args, kwargs", [((), {}), (("", ""), {}), ((), {"nosuchparam": 42})]
+    "args, kwargs",
+    [
+        (("host=foo", "host=bar"), {}),
+        (("", ""), {}),
+        ((), {"nosuchparam": 42}),
+    ],
 )
 async def test_connect_badargs(monkeypatch, pgconn, args, kwargs):
     def fake_connect(conninfo):
index f12fac88ef7a16bddc2fc0ca9edfdb098eaf7efd..c36bd653df51e510efd5d82b99da2a0b2ccd12f8 100644 (file)
@@ -105,20 +105,21 @@ def test_time_from_ticks(ticks, want):
 
 
 @pytest.mark.parametrize(
-    "testdsn, kwargs, want",
+    "args, kwargs, want",
     [
-        ("", {}, ""),
-        ("host=foo user=bar", {}, "host=foo user=bar"),
-        ("host=foo", {"user": "baz"}, "host=foo user=baz"),
+        ((), {}, ""),
+        (("",), {}, ""),
+        (("host=foo user=bar",), {}, "host=foo user=bar"),
+        (("host=foo",), {"user": "baz"}, "host=foo user=baz"),
         (
-            "host=foo port=5432",
+            ("host=foo port=5432",),
             {"host": "qux", "user": "joe"},
             "host=qux user=joe port=5432",
         ),
-        ("host=foo", {"user": None}, "host=foo"),
+        (("host=foo",), {"user": None}, "host=foo"),
     ],
 )
-def test_connect_args(monkeypatch, pgconn, testdsn, kwargs, want):
+def test_connect_args(monkeypatch, pgconn, args, kwargs, want):
     the_conninfo = None
 
     def fake_connect(conninfo):
@@ -128,12 +129,17 @@ def test_connect_args(monkeypatch, pgconn, testdsn, kwargs, want):
         yield
 
     monkeypatch.setattr(psycopg3.connection, "connect", fake_connect)
-    psycopg3.connect(testdsn, **kwargs)
+    psycopg3.connect(*args, **kwargs)
     assert conninfo_to_dict(the_conninfo) == conninfo_to_dict(want)
 
 
 @pytest.mark.parametrize(
-    "args, kwargs", [((), {}), (("", ""), {}), ((), {"nosuchparam": 42})]
+    "args, kwargs",
+    [
+        (("host=foo", "host=bar"), {}),
+        (("", ""), {}),
+        ((), {"nosuchparam": 42}),
+    ],
 )
 def test_connect_badargs(monkeypatch, pgconn, args, kwargs):
     def fake_connect(conninfo):