
    F\h
                         S r SSKrSSKrS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                   (    \ 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       /usr/lib/python3.13/netrc.pyr   NetrcParseError.__init__   s     4%    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   
   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!   
)r"   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    "\)r$   popiterr+   r#   )r   tokenfiterr*   s       r   	get_token_netrclex.get_token#   s    ====$$Q''T__b)B__$SyBSy$t!__.KE   :*BB__,$t!__.KE   ( r   c                 :    U R                   R                  U5        g r   )r$   append)r   r3   s     r   
push_token_netrclex.push_token>   s    U#r   )r"   r
   r$   r#   N)	r   r   r   r   r   r+   r5   r9   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   B   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)	ospathjoin
expanduserhostsmacrosopen_parseUnicodeDecodeError)r   filedefault_netrcr%   s       r   r   netrc.__init__C   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.r(   zbad toplevel token %rzmissing %r namer.   >   r.   rQ   rP   rO   loginuseraccountpasswordzbad follower token %r)r   r
   r5   lenr"   readlinerF   r   r8   rE   
startswithr9   _security_check)r   rJ   r%   rK   lexersaved_linenotopleveltt	entrynamelinerR   rT   rU   prev_linenos                 r   rH   netrc._parseP   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                    [         R                  S:X  a  U(       a  US:w  a  [         R                  " UR                  5       5      nUR                  [         R
                  " 5       :w  a]  SS Kn UR                  UR                  5      S   n UR                  [         R
                  " 5       5      S   n[        SU SU S35      eUR                  [        R                  [        R                  -  -  (       a  [        S5      eg g g g ! [         a    SUR                  -  n Nf = f! [         a    S[         R
                  " 5       -  n Nf = f)	Nposix	anonymousr   zuid %sz~/.netrc file owner (z, z) does not match current userzY~/.netrc access too permissive: access permissions must restrict access to only the owner)rA   namefstatfilenost_uidgetuidpwdgetpwuidKeyErrorr   st_modestatS_IRWXGS_IRWXO)r   r%   rK   rR   proprj   fownerrS   s           r   rY   netrc._security_check   s   77g-E[4H88BIIK(D{{biik)4 \\$++6q9F2<<		4Q7D &,VHBtf =% %' ' t|| ;<%!" " = 5I-   4%3F4   2#biik1D2s$   .D 'D' D$#D$'"EEc                 ~    XR                   ;   a  U R                   U   $ SU R                   ;   a  U R                   S   $ g)z8Return a (user, account, password) tuple for given host.rP   N)rE   )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   r(   r!   z		account z
	password    zmacdef )rE   keysrF   )r   repru   attrsmacror_   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   )rE   rF   r   )
r   r   r   r   r   rH   rY   rv   r~   r   r   r   r   r   r   B   s    5>N@",r   __main__)
r   rA   rn   __all__r   r   r   r   r   printr   r   r   <module>r      sV    3 %
&	Ki 	K)$ )$X{ {z z	%'N r   