[Python-Dev] Could getpass use streams other than stdin?

Mike Brown mike at skew.org
Fri Aug 13 00:26:23 CEST 2004


On posix, it would be useful if I could have getpass.getpass() write the 
prompt to stderr or to an arbitrary stream (file-like object), rather than 
always writing to stdin.

In my use case, I need to send the results of a command-line script to stdout 
after the user authenticates, and the user may be redirecting stdout, so I 
don't want the password prompt to pollute the output. If I could have the 
"Password: " show up in stderr, that would be ideal.

I don't think this would be terribly difficult to implement an API like

def getpass(prompt='', stream=None)
    if stream is None:
        stream = sys.stdin
    ...

but I'm unsure of the nuances of termios and arbitrary streams. Would it be 
better to just make the choice be between stdin and stderr? -- in which case 
the API would be something like

def getpass(prompt='', use_stderr=False)

Or is the whole exercise a waste of time?

Thanks


More information about the Python-Dev mailing list