+
    Bi%                        ^ RI t ^ RIt^ RIt^ RIHtHtHt ^ RIHt ^ RIH	t	  ^ RI
t
 ^ RIt]P                  ! R4       ! R R]P                  4      4       t ! R R	]P                  4      t]P"                  ! ]
R
4       ! R R]P                  4      4       t ! R R]P                  4      t]R8X  d   ]P*                  ! 4        R# R#   ] d    Rt
 Li ; i  ] d    Rt Li ; i)    N)BytesIOStringIOTextIOWrapper)mock)supportz
os.environc                   2   a  ] tR t^t o R tR tR tRtV tR# )GetpassGetuserTestc                t    R pW!P                   n        V P                  V\        P                  ! 4       4       R# )	some_nameN)getreturn_valueassertEqualgetpassgetuser)selfenvironexpected_names   && (/usr/lib/python3.14/test/test_getpass.py%test_username_takes_username_from_env8GetpassGetuserTest.test_username_takes_username_from_env   s(    ##0 (9:    c           	     ,   R VP                   n         \        P                  ! 4        T P                  VP                   P                  R Uu. uF  p\        P                  ! V4      NK  	  up4       R #   \         d     LY\
         d     Lei ; iu upi )N)LOGNAMEUSERLNAMEUSERNAME)
r   r   r   r   OSErrorKeyErrorr   call_args_listr   call)r   r   xs   && r   &test_username_priorities_of_env_values9GetpassGetuserTest.test_username_priorities_of_env_values   s{    #' 	OO 	KK&&#KL#KaTYYq\#KL	N  	 		
 Ms#   A4 B
4BB
BBc           	        R pRVP                   n        \        '       d   \        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p^*Vn        V.Vn        V P                  V\        P                  ! 4       4       VP                  ^*4       RRR4       RRR4       R# V P                  \        \        P                  4       R#   + '       g   i     L@; i  + '       g   i     R# ; i)r   Nz	os.getuidzpwd.getpwuid)r   r   pwdr   patchr   r   r   assert_called_once_withassertRaisesr   )r   r   r   uidgetpws   &&   r   test_username_falls_back_to_pwd2GetpassGetuserTest.test_username_falls_back_to_pwd&   s    ##' 3K((CJJ~..%#% &3_"  !(!24--b1 / )( gw7 /. )((s$   C.AC	#C.C+&C..C?	 N)	__name__
__module____qualname____firstlineno__r   r"   r+   __static_attributes____classdictcell____classdict__s   @r   r	   r	      s     ;
N8 8r   r	   c                      a  ] tR t^5t o R tR t]P                  ! R4      R 4       t]P                  ! R4      R 4       t	R t
R tRtV tR	# )
GetpassRawinputTestc                    \         P                  ! \        R 7      p\        R4      p\        P                  ! RWR7       VP
                  P                  4        R# )specinput_stringsome_promptinputN)r   Mockr   r   
_raw_inputflushr'   )r   streamr>   s   &  r    test_flushes_stream_after_prompt4GetpassRawinputTest.test_flushes_stream_after_prompt7   s:    )(=&>,,.r   c                    \        R 4      pRp\        P                  ! R4      ;_uu_ 4       p\        P                  ! W!R7       VP
                  P                  V4       RRR4       R#   + '       g   i     R# ; i)r;   r<   z
sys.stderrr=   N)r   r   r&   r   r@   writer'   )r   r>   promptstderrs   &   r   test_uses_stderr_as_default/GetpassRawinputTest.test_uses_stderr_as_default>   sQ    (ZZ%%v3LL008 &%%%s   3A))A:		sys.stdinc                    R VP                   n        \        P                  ! \	        4       R7       VP                   P                  4        R# )r;   rB   N)readliner   r   r@   r   r'   )r   
mock_inputs   &&r    test_uses_stdin_as_default_input4GetpassRawinputTest.test_uses_stdin_as_default_inputE   s2    +9
((*-335r   c                    \        \        4       R R7      pRVP                  n        \        P
                  ! RVR7       VP                  P                  4        R# )ascii)encodingu   HasÅ‚o: )rG   rB   N)r   r   rN   r   r   r@   r'   )r   rO   rB   s   && r   #test_uses_stdin_as_different_locale7GetpassRawinputTest.test_uses_stdin_as_different_localeK   s@    wy7;+8
(-v>335r   c                h    \        R 4      pV P                  \        \        P                  VR7       R# ) r=   N)r   r(   EOFErrorr   r@   r   r>   s   & r   test_raises_on_empty_input.GetpassRawinputTest.test_raises_on_empty_inputS   s&    (G$6$6eDr   c                j    \        R 4      pV P                  R\        P                  ! VR7      4       R# )ztest
testr=   N)r   r   r   r@   rZ   s   & r   test_trims_trailing_newline/GetpassRawinputTest.test_trims_trailing_newlineW   s'    "!3!3%!@Ar   r-   N)r.   r/   r0   r1   rC   rI   r   r&   rP   rU   r[   r_   r2   r3   r4   s   @r   r7   r7   5   s[     /9 
ZZ6 6
 
ZZ6 6EB Br   r7   z!tests require system with termiosc                   P   a  ] tR t^at o R tR tR tR tR tR t	R t
R tR	tV tR
# )UnixGetpassTestc                t   \         P                  ! R 4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       pRVn        \        P                  ! 4        VP                  R\        P                  \        P                  ,          4       VP                  VP                  R4       VP                  VP                  4       RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)os.open	io.FileIOio.TextIOWrapperNz/dev/ttyzw+)	r   r&   r   r   unix_getpassr'   osO_RDWRO_NOCTTY)r   openfileiotextios   &   r   test_uses_tty_directly&UnixGetpassTest.test_uses_tty_directlyd   s    ZZ	""d

;''6

-..& !%D  "(()+R[[)@B**4+<+<dC**6+>+>? / ( #".. (' #""s;   D&D	B	D &D	.D& DD	D#D&&D7	c                   \         P                  ! R 4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4        \         P                  ! R4      ;_uu_ 4        \         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p^Vn        . ROp\        V4      Vn        \        P
                  ! 4        VP                  ^\         P                  V4       RRR4       RRR4       RRR4       RRR4       RRR4       R#   + '       g   i     L2; i  + '       g   i     L=; i  + '       g   i     LH; i  + '       g   i     LS; i  + '       g   i     R# ; i)rd   re   rf   termios.tcgetattrtermios.tcsetattrN)   rs   rs   rs   rs   )r   r&   r   listr   rg   assert_called_withANY)r   rk   	tcgetattr	tcsetattr
fake_attrss   &    r   test_resets_termios#UnixGetpassTest.test_resets_termiosr   s    ZZ	""d

;''

-..

.//9

.//9 !D2J%)*%5I"  "((DHHjA 0 0 / ( #" 0/ 0/ /. (' #""sk   E#E	D=<D*AD-D*5D==E	E#D'"D**D:5D==EE	E E##E4	c                x   \         P                  ! R 4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4        \         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p^Vn        \        4       Vn        \        P
                  Vn        \        P                  ! 4        VP                  RVP                  4       RRR4       RRR4       RRR4       RRR4       RRR4       RRR4       R#   + '       g   i     L:; i  + '       g   i     LE; i  + '       g   i     LP; i  + '       g   i     L[; i  + '       g   i     Lf; i  + '       g   i     R# ; i)rd   re   rf   rq   rr   zgetpass.fallback_getpass
Password: N)
r   r&   r   r   termioserrorside_effectr   rg   r'   )r   rk   rl   rm   rx   fallbacks   &     r   -test_falls_back_to_fallback_if_termios_raises=UnixGetpassTest.test_falls_back_to_fallback_if_termios_raises~   s   ZZ	""d

;''6

-..&

.//

.//9

566( !D"))F$+MMI!  ",,\-3-@-@B 7 0 0 / ( #"
 76 0/ 0/ /. (' #""s   F(F	F<E/E:AE	EE/'F/F	7F(	EEE,'E//E?:FFF	F% F((F9	c                   \         P                  ! R 4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4        \         P                  ! R4      ;_uu_ 4        \         P                  ! R4      ;_uu_ 4        \         P                  ! R4      ;_uu_ 4        ^Vn        \         P                  ! \        R7      p\
        P                  ! VR7       VP                  P                  4        RRR4       RRR4       RRR4       RRR4       RRR4       R#   + '       g   i     L2; i  + '       g   i     L=; i  + '       g   i     LH; i  + '       g   i     LS; i  + '       g   i     R# ; i)rd   re   rf   rq   rr   r9   rM   N)	r   r&   r   r?   r   r   rg   rA   ru   )r   rk   mock_streams   &  r   test_flushes_stream_after_input/UnixGetpassTest.test_flushes_stream_after_input   s    ZZ	""d

;''

-..

.//

.// !D))2K  4002	 0 0 / ( #" 0/ 0/ /. (' #""sk   E%E	D?<D,AD/D,7D??E	E%D)$D,,D<7D??E
E	E"E%%E6	c                   \         P                  ! R 4      ;_uu_ 4       p\         P                  ! R\        R7      ;_uu_ 4       p\        Vn        \
        VP                  n        \        P                  ! 4       ;_uu_ 4       pV P                  \        P                  4      ;_uu_ 4        \        P                  ! 4        RRR4       RRR4       VP                  P                  4        V P                  RXP!                  4       4       V P                  RVP!                  4       4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L@; i  + '       g   i     R# ; i)rd   rK   r9   NWarningz	Password:)r   r&   r   IOErrorr   AttributeErrorfilenor   captured_stderrassertWarnsr   GetPassWarningrg   rN   r'   assertIngetvalue)r   os_openstdinrH   s   &   r   test_falls_back_to_stdin(UnixGetpassTest.test_falls_back_to_stdin   s    ZZ	""g

;X66%")G'5ELL$((**f%%g&<&<==((* > + NN224MM)V__%67MM+v'89 7 #"
 >= +* 76 #""sT   %E5>E"	(E*D< EA"E"	*E5<EEEE"	"E2-E55F	c                l   R p\         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4        \         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4        \         P                  ! R4      ;_uu_ 4        \         P                  ! R4      ;_uu_ 4       p^Vn        Wn        \        P                  ! RR7      pVP                  R	V! 4       V! 4       RR
7       V P                  WQ4       RRR4       RRR4       RRR4       RRR4       RRR4       RRR4       R#   + '       g   i     L:; i  + '       g   i     LE; i  + '       g   i     LP; i  + '       g   i     L[; i  + '       g   i     Lf; i  + '       g   i     R# ; i)z*************rd   re   rf   rq   rr   zgetpass._raw_input*	echo_charr}   )r>   r   N)r   r&   r   r   rg   r'   r   )r   mock_resultr   rm   rO   results   &     r   ,test_echo_char_replaces_input_with_asterisks<UnixGetpassTest.test_echo_char_replaces_input_with_asterisks   s   %ZZ	""g

;''

-..&

.//

.//

/00J#$G &1#))C8F..|VX5;X / NV1 1 0 0 / ( #"
 10 0/ 0/ /. (' #""s   F" F	E<>E)E<AEEE)!E<)F	1F"EEE&!E))E94E<<FF	FF""F3	c           
        R p\        V R24      p\        4       p\        P                  ! RV4      ;_uu_ 4        \        P                  ! RV4      ;_uu_ 4        \        P                  ! RW2R4      pRRR4       RRR4       V P                  XV4       V P                  RVP                  4       4       R#   + '       g   i     LL; i  + '       g   i     LW; i)zmy1pa$$word!
rK   
sys.stdoutr}   r   NzPassword: ************r   r   r&   r   r@   r   r   )r   passwdrO   mock_outputr   s   &    r   test_raw_input_with_echo_char-UnixGetpassTest.test_raw_input_with_echo_char   s    m,
jZZZ00

<55''k(+-F 6 1 	(1;3G3G3IJ	 65 10s#    C
B7	3C
7CC

C	c           
        R pRp\        V R24      p\        4       p\        P                  ! RV4      ;_uu_ 4        \        P                  ! RV4      ;_uu_ 4        \        P                  ! RWCR4      pRRR4       RRR4       V P                  XV4       V P                  RVP                  4       4       R#   + '       g   i     LL; i  + '       g   i     LW; i)	zpass	wdzpass	wr   rK   r   r}   r   NzPassword: ******* r   )r   r   expect_resultrO   r   r   s   &     r   !test_control_chars_with_echo_char1UnixGetpassTest.test_control_chars_with_echo_char   s    !m,
jZZZ00

<55''k(+-F 6 1 	/5{7K7K7MN	 65 10s#    CB9	5C9C	CC	r-   N)r.   r/   r0   r1   rn   rz   r   r   r   r   r   r   r2   r3   r4   s   @r   rb   rb   a   s8     @
BB
3
:2 	K
O 
Or   rb   c            
         a ] tR t^t oR t]P                  ! R. RO4      R 4       tR t]P                  ! R. RO4      R 4       t	]P                  ! RRR.4      R 4       t
]P                  ! R]! ]]! ^ ^4      4       U u. uF  p V P                  4       '       d   K  V NK  	  up 4      R	 4       t]P                  ! RR
^ R. / .4      R 4       tRtVtR# u up i )GetpassEchoCharTestc                2    \         P                  ! R 4       R # Nr   _check_echo_charr   s   &r   test_accept_none$GetpassEchoCharTest.test_accept_none   s      &r   r   c                2    \         P                  ! V4       R # r   r   r   r   s   &&r   "test_accept_single_printable_ascii6GetpassEchoCharTest.test_accept_single_printable_ascii   s      +r   c                R    V P                  \        \        P                  R R7       R# )rX   r   Nr(   
ValueErrorr   r   s   &r   test_reject_empty_string,GetpassEchoCharTest.test_reject_empty_string   s    *gooDr   c                R    V P                  \        \        P                  VR 7       R# r   Nr   r   s   &&r   #test_reject_multi_character_strings7GetpassEchoCharTest.test_reject_multi_character_strings   s    *gooKr      Æu   ❤c                R    V P                  \        \        P                  VR 7       R# r   r   r   s   &&r   test_reject_non_ascii)GetpassEchoCharTest.test_reject_non_ascii       
 	*gooKr   c                R    V P                  \        \        P                  VR 7       R# r   r   r   s   &&r   $test_reject_non_printable_characters8GetpassEchoCharTest.test_reject_non_printable_characters   r   r      *g        c                R    V P                  \        \        P                  VR 7       R# r   )r(   	TypeErrorr   r   s   &&r   test_reject_non_string*GetpassEchoCharTest.test_reject_non_string   s    )W__	Jr   r-   N)r   A )z***AAzaA*!)r.   r/   r0   r1   r   r   subTestsr   r   r   r   mapchrrangeisprintabler   r   r2   r3   )chr5   s   0@r   r   r      s    ' k?3, 4,E k#89L :L k%$ L	L keAsm,$,r~~ 	,$ L	L kD!S"b#9:K ;K$s    C
C
r   __main__)r   rh   unittestior   r   r   r   r^   r   r~   ImportErrorr%   r&   TestCaser	   r7   
skipUnlessrb   r   r.   mainr-   r   r   <module>r      s     	  / /   L 8**  8  8F$B(++ $BX 
WABgOh'' gO CgOT!K(++ !KH zMMO M  G  
Cs"   C C 	CC	C#"C#