@@ -56,6 +56,7 @@ def parse(cls, sslmode):
56
56
'direct_tls' ,
57
57
'server_settings' ,
58
58
'target_session_attrs' ,
59
+ 'krbsrvname' ,
59
60
])
60
61
61
62
@@ -261,7 +262,7 @@ def _dot_postgresql_path(filename) -> typing.Optional[pathlib.Path]:
261
262
def _parse_connect_dsn_and_args (* , dsn , host , port , user ,
262
263
password , passfile , database , ssl ,
263
264
direct_tls , server_settings ,
264
- target_session_attrs ):
265
+ target_session_attrs , krbsrvname ):
265
266
# `auth_hosts` is the version of host information for the purposes
266
267
# of reading the pgpass file.
267
268
auth_hosts = None
@@ -383,6 +384,11 @@ def _parse_connect_dsn_and_args(*, dsn, host, port, user,
383
384
if target_session_attrs is None :
384
385
target_session_attrs = dsn_target_session_attrs
385
386
387
+ if 'krbsrvname' in query :
388
+ val = query .pop ('krbsrvname' )
389
+ if krbsrvname is None :
390
+ krbsrvname = val
391
+
386
392
if query :
387
393
if server_settings is None :
388
394
server_settings = query
@@ -650,11 +656,15 @@ def _parse_connect_dsn_and_args(*, dsn, host, port, user,
650
656
)
651
657
) from None
652
658
659
+ if krbsrvname is None :
660
+ krbsrvname = os .getenv ('PGKRBSRVNAME' )
661
+
653
662
params = _ConnectionParameters (
654
663
user = user , password = password , database = database , ssl = ssl ,
655
664
sslmode = sslmode , direct_tls = direct_tls ,
656
665
server_settings = server_settings ,
657
- target_session_attrs = target_session_attrs )
666
+ target_session_attrs = target_session_attrs ,
667
+ krbsrvname = krbsrvname )
658
668
659
669
return addrs , params
660
670
@@ -665,7 +675,7 @@ def _parse_connect_arguments(*, dsn, host, port, user, password, passfile,
665
675
max_cached_statement_lifetime ,
666
676
max_cacheable_statement_size ,
667
677
ssl , direct_tls , server_settings ,
668
- target_session_attrs ):
678
+ target_session_attrs , krbsrvname ):
669
679
local_vars = locals ()
670
680
for var_name in {'max_cacheable_statement_size' ,
671
681
'max_cached_statement_lifetime' ,
@@ -694,7 +704,8 @@ def _parse_connect_arguments(*, dsn, host, port, user, password, passfile,
694
704
password = password , passfile = passfile , ssl = ssl ,
695
705
direct_tls = direct_tls , database = database ,
696
706
server_settings = server_settings ,
697
- target_session_attrs = target_session_attrs )
707
+ target_session_attrs = target_session_attrs ,
708
+ krbsrvname = krbsrvname )
698
709
699
710
config = _ClientConfiguration (
700
711
command_timeout = command_timeout ,
0 commit comments