@@ -56,6 +56,7 @@ def parse(cls, sslmode):
5656 'direct_tls' ,
5757 'server_settings' ,
5858 'target_session_attrs' ,
59+ 'krbsrvname' ,
5960 ])
6061
6162
@@ -261,7 +262,7 @@ def _dot_postgresql_path(filename) -> typing.Optional[pathlib.Path]:
261262def _parse_connect_dsn_and_args (* , dsn , host , port , user ,
262263 password , passfile , database , ssl ,
263264 direct_tls , server_settings ,
264- target_session_attrs ):
265+ target_session_attrs , krbsrvname ):
265266 # `auth_hosts` is the version of host information for the purposes
266267 # of reading the pgpass file.
267268 auth_hosts = None
@@ -383,6 +384,11 @@ def _parse_connect_dsn_and_args(*, dsn, host, port, user,
383384 if target_session_attrs is None :
384385 target_session_attrs = dsn_target_session_attrs
385386
387+ if 'krbsrvname' in query :
388+ val = query .pop ('krbsrvname' )
389+ if krbsrvname is None :
390+ krbsrvname = val
391+
386392 if query :
387393 if server_settings is None :
388394 server_settings = query
@@ -650,11 +656,15 @@ def _parse_connect_dsn_and_args(*, dsn, host, port, user,
650656 )
651657 ) from None
652658
659+ if krbsrvname is None :
660+ krbsrvname = os .getenv ('PGKRBSRVNAME' )
661+
653662 params = _ConnectionParameters (
654663 user = user , password = password , database = database , ssl = ssl ,
655664 sslmode = sslmode , direct_tls = direct_tls ,
656665 server_settings = server_settings ,
657- target_session_attrs = target_session_attrs )
666+ target_session_attrs = target_session_attrs ,
667+ krbsrvname = krbsrvname )
658668
659669 return addrs , params
660670
@@ -665,7 +675,7 @@ def _parse_connect_arguments(*, dsn, host, port, user, password, passfile,
665675 max_cached_statement_lifetime ,
666676 max_cacheable_statement_size ,
667677 ssl , direct_tls , server_settings ,
668- target_session_attrs ):
678+ target_session_attrs , krbsrvname ):
669679 local_vars = locals ()
670680 for var_name in {'max_cacheable_statement_size' ,
671681 'max_cached_statement_lifetime' ,
@@ -694,7 +704,8 @@ def _parse_connect_arguments(*, dsn, host, port, user, password, passfile,
694704 password = password , passfile = passfile , ssl = ssl ,
695705 direct_tls = direct_tls , database = database ,
696706 server_settings = server_settings ,
697- target_session_attrs = target_session_attrs )
707+ target_session_attrs = target_session_attrs ,
708+ krbsrvname = krbsrvname )
698709
699710 config = _ClientConfiguration (
700711 command_timeout = command_timeout ,
0 commit comments