a DOgf @sdZddlZddlZddlZddlZddlZgdZGdddeZdddZ dd d Z dd d Z dddZ ddZ zddlZejejfWn>eefyz ddlZWneye ZYn0e ZYn0e ZdS)aUtilities to get a password and/or the current user name. getpass(prompt[, stream]) - Prompt for a password, with echo turned off. getuser() - Get the user name from the environment or password database. GetPassWarning - This UserWarning is issued when getpass() cannot prevent echoing of the password contents while reading. On Windows, the msvcrt module will be used. N)getpassgetuserGetPassWarningc@s eZdZdS)rN)__name__ __module__ __qualname__rr/usr/lib64/python3.9/getpass.pyrr Password: c Csd}t}zJtdtjtjB}t|d}||t |}|||sX|}Wn^t y| zt j }Wn$ttfyd}t||}Yn0t j }|st j}Yn0|durzt|}|dd}|dtjM<tj} ttdr | tjO} z6t|| |t|||d}Wt|| ||nt|| ||0Wn>tjy|dur|||ur| t||}Yn0|d|WdS1s0YdS)aPrompt for a password, with echo turned off. Args: prompt: Written on stream to ask for the input. Default: 'Password: ' stream: A writable file object to display the prompt. Defaults to the tty. If no tty is available defaults to sys.stderr. Returns: The seKr3t input. Raises: EOFError: If our input tty or stdin was closed. GetPassWarning: When we were unable to turn echo off on the input. Always restores terminal settings before returning. Nz/dev/ttyzw+TCSASOFT)input ) contextlib ExitStackosopenO_RDWRO_NOCTTYioFileIO enter_context TextIOWrapperOSErrorclosesysstdinfilenoAttributeError ValueErrorfallback_getpassstderrtermios tcgetattrZECHOZ TCSAFLUSHhasattrr tcsetattr _raw_inputflusherrorwrite) promptstreampasswdstackfdZttyroldnewZtcsetattr_flagsrrr unix_getpasssV                r2cCstjtjurt||S|D]}t|qd}t}|dkst|dkrHqt|dkrTt|dkrj|dd}q.||}q.tdtd|S)z:Prompt for password with echo off, using Windows getwch(). rN)rr __stdin__r!msvcrtZputwchZgetwchKeyboardInterrupt)r+r,cZpwrrr win_getpassas       r<cCs0tjdtdd|stj}td|dt||S)Nz%Can not control echo on the terminal.) stacklevelz&Warning: Password input may be echoed.)file)warningswarnrrr"printr')r+r,rrr r!xs r!r3cCs|s tj}|stj}t|}|rnz||Wn6tyd||jd}||j}||Yn0| | }|s~t |ddkr|dd}|S)Nreplacer7r) rr"rstrr*UnicodeEncodeErrorencodeencodingdecoder(readlineEOFError)r+r,rlinerrr r's&    r'cCs<dD]}tj|}|r|Sqddl}|tdS)zGet the username from the environment or password database. First try various environment variables, then the password database. This works on Windows as long as USERNAME is set. )ZLOGNAMEZUSERZLNAMEUSERNAMErN)renvirongetpwdgetpwuidgetuid)nameuserrOrrr rs   r)r N)r N)r N)r3NN)__doc__rrrrr@__all__ UserWarningrr2r<r!r'rr#r$r& ImportErrorrr9rrrrr s, D