@@ -51,20 +51,17 @@ class SSLNegotiation(compat.StrEnum):
5151 direct = "direct"
5252
5353
54- _ConnectionParameters = collections .namedtuple (
55- 'ConnectionParameters' ,
56- [
57- 'user' ,
58- 'password' ,
59- 'database' ,
60- 'ssl' ,
61- 'sslmode' ,
62- 'ssl_negotiation' ,
63- 'server_settings' ,
64- 'target_session_attrs' ,
65- 'krbsrvname' ,
66- 'gsslib' ,
67- ])
54+ class _ConnectionParameters (typing .NamedTuple ):
55+ user : str
56+ password : typing .Optional [str ]
57+ database : str
58+ ssl : typing .Union [ssl_module .SSLContext , bool , str , SSLMode , None ]
59+ sslmode : SSLMode
60+ ssl_negotiation : SSLNegotiation
61+ server_settings : typing .Optional [typing .Dict [str , str ]]
62+ target_session_attrs : "SessionAttribute"
63+ krbsrvname : typing .Optional [str ]
64+ gsslib : str
6865
6966
7067_ClientConfiguration = collections .namedtuple (
@@ -275,10 +272,25 @@ def _dot_postgresql_path(filename) -> typing.Optional[pathlib.Path]:
275272 return (homedir / '.postgresql' / filename ).resolve ()
276273
277274
278- def _parse_connect_dsn_and_args (* , dsn , host , port , user ,
279- password , passfile , database , ssl ,
280- direct_tls , server_settings ,
281- target_session_attrs , krbsrvname , gsslib ):
275+ def _parse_connect_dsn_and_args (
276+ * ,
277+ dsn : str ,
278+ host : typing .Union [str , typing .List [str ], typing .Tuple [str ]],
279+ port : typing .Union [int , typing .List [int ]],
280+ user : typing .Optional [str ],
281+ password : typing .Optional [str ],
282+ passfile : typing .Union [str , pathlib .Path , None ],
283+ database : typing .Optional [str ],
284+ ssl : typing .Union [bool , None , str , SSLMode ],
285+ direct_tls : typing .Optional [bool ],
286+ server_settings : typing .Optional [typing .Dict [str , str ]],
287+ target_session_attrs : typing .Optional [str ],
288+ krbsrvname : typing .Optional [str ],
289+ gsslib : typing .Optional [str ],
290+ ) -> typing .Tuple [
291+ typing .List [typing .Union [str , typing .Tuple [str , int ]]],
292+ _ConnectionParameters ,
293+ ]:
282294 # `auth_hosts` is the version of host information for the purposes
283295 # of reading the pgpass file.
284296 auth_hosts = None
@@ -501,7 +513,7 @@ def _parse_connect_dsn_and_args(*, dsn, host, port, user,
501513 database = database , user = user ,
502514 passfile = passfile )
503515
504- addrs = []
516+ addrs : typing . List [ typing . Union [ str , typing . Tuple [ str , int ]]] = []
505517 have_tcp_addrs = False
506518 for h , p in zip (host , port ):
507519 if h .startswith ('/' ):
0 commit comments