Skip to content

Commit 1424466

Browse files
author
James William Pye
committed
Pop the password resolution keywords before prompting.
While showing *some* of them may be properly illustrative, it seems to be more noise than signal.
1 parent 85425ec commit 1424466

1 file changed

Lines changed: 19 additions & 20 deletions

File tree

postgresql/clientparameters.py

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -359,31 +359,30 @@ def resolve_password(
359359
Finally, remove the pgpassfile key as the password has been resolved for the
360360
given parameters.
361361
"""
362-
if 'prompt_password' in parameters:
363-
if parameters['prompt_password'] is True:
364-
if sys.stdin.isatty():
365-
prompt = prompt_title or parameters.pop('prompt_title', '')
366-
prompt += '[' + pg_iri.serialize(parameters, obscure_password = True) + ']'
367-
parameters['password'] = getpass("Password for " + prompt +": ")
368-
else:
369-
# getpass will throw an exception if it's not a tty,
370-
# so just take the next line.
371-
pw = sys.stdin.readline()
372-
# try to clean it up..
373-
if pw.endswith(os.linesep):
374-
pw = pw[:len(pw)-len(os.linesep)]
375-
parameters['password'] = pw
376-
del parameters['prompt_password']
362+
prompt_for_password = parameters.pop('prompt_password', False)
363+
pgpassfile = parameters.pop('pgpassfile', None)
364+
prompt_title = parameters.pop('prompt_title', None)
365+
if prompt_for_password is True:
366+
# it's a prompt
367+
if sys.stdin.isatty():
368+
prompt = prompt_title or parameters.pop('prompt_title', '')
369+
prompt += '[' + pg_iri.serialize(parameters, obscure_password = True) + ']'
370+
parameters['password'] = getpass("Password for " + prompt +": ")
371+
else:
372+
# getpass will throw an exception if it's not a tty,
373+
# so just take the next line.
374+
pw = sys.stdin.readline()
375+
# try to clean it up..
376+
if pw.endswith(os.linesep):
377+
pw = pw[:len(pw)-len(os.linesep)]
378+
parameters['password'] = pw
377379
else:
378380
if parameters.get('password') is None:
379381
# No password? Look in the pgpassfile.
380-
passfile = parameters.get('pgpassfile')
381-
if passfile is not None:
382-
parameters['password'] = pg_pass.lookup_pgpass(parameters, passfile)
382+
if pgpassfile is not None:
383+
parameters['password'] = pg_pass.lookup_pgpass(parameters, pgpassfile)
383384
# Don't need the pgpassfile parameter anymore as the password
384385
# has been resolved.
385-
parameters.pop('pgpassfile', None)
386-
parameters.pop('prompt_title', None)
387386

388387
def x_settings(sdict, config):
389388
d=dict(sdict)

0 commit comments

Comments
 (0)