
   %DC                       S r SSKrSSKrSS/rS rS r " S S\5      r " S S	5      r " S
 S5      r	\
S:X  a  \" \	" 5       5        gg)z-An object-oriented interface to .netrc files.    NnetrcNetrcParseErrorc                  V    [         R                  S:H  =(       a    [        [         S5      $ )Nposixgetuid)osnamehasattr     /usr/lib/python3.13/netrc.py_can_security_checkr   
   s    77g7'"h"77r   c                 j     SS K nUR                  U 5      S   $ ! [        [        4 a    SU  3s $ f = f)Nr   zuid )pwdgetpwuidImportErrorLookupError)uidr   s     r   	_getpwuidr      s>    ||C ##% cU|s    22c                   (    \ rS rSrSrSS jrS rSrg)r      z5Exception raised on syntax errors in the .netrc file.Nc                 R    X l         X0l        Xl        [        R	                  X5        g N)filenamelinenomsg	Exception__init__)selfr   r   r   s       r   r   NetrcParseError.__init__   s     4%r   c                 Z    U R                   < SU R                  < SU R                  < S3$ )Nz (z, line ))r   r   r   )r   s    r   __str__NetrcParseError.__str__   s    %)XXt}}dkkJJr   )r   r   r   )NN)__name__
__module____qualname____firstlineno____doc__r   r#   __static_attributes__r   r   r   r   r      s    ?&Kr   c                   ,    \ rS rSrS rS rS rS rSrg)	_netrclex#   c                 :    SU l         Xl        SU l        / U l        g )N   z
	 )r   instream
whitespacepushback)r   fps     r   r   _netrclex.__init__$   s    #r   c                 r    U R                   R                  S5      nUS:X  a  U =R                  S-  sl        U$ )Nr/   
)r0   readr   )r   chs     r   
_read_char_netrclex._read_char*   s0    ]]":KK1K	r   c                    U R                   (       a  U R                   R                  S5      $ Sn[        U R                  S5      nU H  nX0R                  ;   a  M  US:X  a1  U H)  nUS:X  a  Us  s  $ US:X  a  U R                  5       nX-  nM+     MK  US:X  a  U R                  5       nX-  nU H2  nX0R                  ;   a  Us  s  $ US:X  a  U R                  5       nX-  nM4     M     U$ )Nr    "\)r2   popiterr9   r1   )r   tokenfiterr8   s       r   	get_token_netrclex.get_token0   s    ====$$Q''T__b)B__$SyBSy$t!__.KE   :*BB__,$t!__.KE   ( r   c                 :    U R                   R                  U5        g r   )r2   append)r   rA   s     r   
push_token_netrclex.push_tokenK   s    U#r   )r0   r   r2   r1   N)	r%   r&   r'   r(   r   r9   rC   rG   r*   r   r   r   r,   r,   #   s    6$r   r,   c                   6    \ rS rSrS	S jrS rS rS rS rSr	g)
r   O   Nc                    US L nUc=  [         R                  R                  [         R                  R                  S5      S5      n0 U l        0 U l         [        USS9 nU R                  XU5        S S S 5        g ! , (       d  f       g = f! [         a:    [        USS9 nU R                  XU5        S S S 5         g ! , (       d  f        g = ff = f)N~z.netrczutf-8)encodinglocale)	r   pathjoin
expanduserhostsmacrosopen_parseUnicodeDecodeError)r   filedefault_netrcr3   s       r   r   netrc.__init__P   s    <77<< 2 23 7BD
	5dW-Dm4 .--! 	5dX."Dm4 /...	5sH   
B A:1B :
BB B CB<2C<
C	CCc                    [        U5      n UR                  nUR                  5       =pgU(       d  g US   S:X  a;  UR                  U:X  a)  [        U5      S:X  a  UR                  R                  5         Mj  US:X  a  UR                  5       nOUS:X  a  SnOUS:X  a  UR                  5       n/ U R                  U'    UR                  R                  5       n	U	(       d  [        SXR                  5      eU	S:X  a  O U R                  U   R                  U	5        M^  GM  [        S	U-  XR                  5      eU(       d  [        S
U-  XR                  5      eS=n
=p0 U R                  U'    UR                  nUR                  5       nUR                  S5      (       a,  UR                  U:X  a  UR                  R                  5         M_  US;   a#  XU4U R                  U'   UR                  U5        OfUS:X  d  US:X  a  UR                  5       n
OGUS:X  a  UR                  5       nO0US:X  a  UR                  5       nO[        SU-  XR                  5      eM  U R                  X#U R                  U   S   5        GMp  )Nr/   r   #machinedefaultmacdefz.Macro definition missing null line terminator.r6   zbad toplevel token %rzmissing %r namer<   >   r<   r^   r]   r\   loginuseraccountpasswordzbad follower token %r)r,   r   rC   lenr0   readlinerS   r   rF   rR   
startswithrG   _security_check)r   rW   r3   rX   lexersaved_linenotopleveltt	entrynameliner_   ra   rb   prev_linenos                 r   rU   netrc._parse]   sN   " <<L!OO--HA#<<</CGqLNN++-y!OO-	y%	x!OO-	)+I& >>224D-L ,,0 0 t| KK	*11$7  %+b0$F F %&7"&<dLLQQ *,+E+G$&DJJy!#ll__&==%%||{2//1==-2X,FDJJy)$$R(7]bFl!OO-E9_#oo/G:%$0H)*AB*F*.> >% (   DJJy4I!4LMy r   c                    [        5       (       a  U(       a  US:w  a  [        R                  " UR                  5       5      n[        R                  " 5       nUR
                  U:w  a2  [        UR
                  5      n[        U5      n[        SU SU S35      eUR                  [        R                  [        R                  -  -  (       a  [        S5      eg g g g )N	anonymousz~/.netrc file owner (z, z) does not match current userzY~/.netrc access too permissive: access permissions must restrict access to only the owner)r   r   fstatfilenor   st_uidr   r   st_modestatS_IRWXGS_IRWXO)r   r3   rX   r_   propcurrent_user_idfownerr`   s           r   rf   netrc._security_check   s      ]u7K88BIIK(D iikO{{o-"4;;/ 1%,VHBtf =% %' ' t|| ;<%!" " = 8L] r   c                 ~    XR                   ;   a  U R                   U   $ SU R                   ;   a  U R                   S   $ g)z8Return a (user, account, password) tuple for given host.r]   N)rR   )r   hosts     r   authenticatorsnetrc.authenticators   s9    ::::d##$**$::i((r   c                 ^   SnU R                   R                  5        HC  nU R                   U   nUSU SUS    S3-  nUS   (       a  USUS    S3-  nUSUS	    S3-  nME     U R                  R                  5        H+  nUS
U S3-  nU R                  U    H  nX-  nM	     US-  nM-     U$ )z3Dump the class data in the format of a .netrc file.r<   zmachine z
	login r   r6   r/   z		account z
	password    zmacdef )rR   keysrS   )r   repr}   attrsmacrorl   s         r   __repr__netrc.__repr__   s    JJOO%DJJt$EXdV:eAhZr::CQxE!H:R00[q
"--C & [[%%'EWUG2&&CE* +4KC	 (
 
r   )rR   rS   r   )
r%   r&   r'   r(   r   rU   rf   r~   r   r*   r   r   r   r   r   O   s    5>N@" r   __main__)r)   r   ru   __all__r   r   r   r   r,   r   r%   printr   r   r   <module>r      s`    3 %
&8
	Ki 	K)$ )$Xu un z	%'N r   