Ë
    òT•j
  ã                   ó„   — d Z ddlZddlZddgZ G d„ de«      Z G d„ d«      Z G d„ d«      Zed	k(  r e	 e«       «       yy)
z-An object-oriented interface to .netrc files.é    NÚnetrcÚNetrcParseErrorc                   ó   — e Zd ZdZdd„Zd„ Zy)r   z5Exception raised on syntax errors in the .netrc file.Nc                 óZ   — || _         || _        || _        t        j	                  | |«       y ©N)ÚfilenameÚlinenoÚmsgÚ	ExceptionÚ__init__)Úselfr
   r   r	   s       ú/usr/lib/python3.12/netrc.pyr   zNetrcParseError.__init__   s'   € Ø ˆŒØˆŒØˆŒÜ×Ñ˜4 Õ%ó    c                 óT   — | j                   ›d| j                  ›d| j                  ›d�S )Nz (z, line ú))r
   r   r	   )r   s    r   Ú__str__zNetrcParseError.__str__   s   € Ø%)§X£X¨t¯}«}¸d¿k»kÐJÐJr   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   r   r   
   s   „ Ù?ó&óKr   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú	_netrclexc                 ó<   — d| _         || _        d| _        g | _        y )Né   z
	 )r	   ÚinstreamÚ
whitespaceÚpushback)r   Úfps     r   r   z_netrclex.__init__   s   € ØˆŒØˆŒØ#ˆŒØˆ�r   c                 óp   — | j                   j                  d«      }|dk(  r| xj                  dz  c_        |S )Nr   ú
)r   Úreadr	   )r   Úchs     r   Ú
_read_charz_netrclex._read_char   s0   € Ø�]‰]×Ñ Ó"ˆØ�Š:Ø�KŠK˜1Ñ�KØˆ	r   c                 ó²  — | j                   r| j                   j                  d«      S d}t        | j                  d«      }|D ]’  }|| j                  v rŒ|dk(  r-|D ]'  }|dk(  r|c c S |dk(  r| j                  «       }||z  }Œ) ŒD|dk(  r| j                  «       }||z  }|D ]0  }|| j                  v r|c c S |dk(  r| j                  «       }||z  }Œ2 Œ” |S )Nr   Ú ú"ú\)r   ÚpopÚiterr$   r   )r   ÚtokenÚfiterr#   s       r   Ú	get_tokenz_netrclex.get_token#   sð   € Ø�=Š=Ø—=‘=×$Ñ$ QÓ'Ð'ØˆÜ�T—_‘_ bÓ)ˆØò 	 ˆBØ�T—_‘_Ñ$ØØ�SŠyØò  �BØ˜S’yØ$œØ˜tšØ!Ÿ_™_Ó.˜Ø˜R‘K‘Eñ ð ˜’:ØŸ™Ó*�BØ˜‘�Øò  �BØ˜TŸ_™_Ñ,Ø$œØ˜tšØ!Ÿ_™_Ó.˜Ø˜R‘K‘Eñ ð	 ð( ˆr   c                 ó:   — | j                   j                  |«       y r   )r   Úappend)r   r+   s     r   Ú
push_tokenz_netrclex.push_token>   s   € Ø�‰×Ñ˜UÕ#r   N)r   r   r   r   r$   r-   r0   r   r   r   r   r      s   „ òòòó6$r   r   c                   ó,   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zy)r   Nc                 óœ  — |d u }|€=t         j                  j                  t         j                  j                  d«      d«      }i | _        i | _        	 t        |d¬«      5 }| j                  |||«       d d d «       y # 1 sw Y   y xY w# t        $ r9 t        |d¬«      5 }| j                  |||«       d d d «       Y y # 1 sw Y   Y y xY ww xY w)Nú~z.netrczutf-8)ÚencodingÚlocale)	ÚosÚpathÚjoinÚ
expanduserÚhostsÚmacrosÚopenÚ_parseÚUnicodeDecodeError)r   ÚfileÚdefault_netrcr   s       r   r   znetrc.__init__C   s¶   € Ø ˜ˆØˆ<Ü—7‘7—<‘<¤§¡× 2Ñ 2°3Ó 7¸ÓBˆDØˆŒ
ØˆŒð	5Ü�d WÔ-ð 5°Ø—‘˜D " mÔ4÷5÷ 5ñ 5ûä!ò 	5Ü�d XÔ.ð 5°"Ø—‘˜D " mÔ4÷5÷ 5ó 5úð	5úsH   ÁB	 Á A=Á4B	 Á=BÂB	 ÂB	 Â	CÂB=Â3CÂ=C	ÃCÃCc                 ó¸  — t        |«      }	 |j                  }|j                  «       x}}|sy |d   dk(  r8|j                  |k(  r(t        |«      dk(  r|j                  j                  «        Œb|dk(  r|j                  «       }n |dk(  rd}n˜|dk(  ry|j                  «       }g | j                  |<   	 |j                  j                  «       }	|	st        d||j                  «      ‚|	dk(  rn| j                  |   j                  |	«       ŒXŒþt        d	|z  ||j                  «      ‚|st        d
|z  ||j                  «      ‚dx}
x}}i | j                  |<   	 |j                  }|j                  «       }|j                  d«      r*|j                  |k(  r|j                  j                  «        ŒX|dv r$|
||f| j                  |<   |j                  |«       nb|dk(  s|dk(  r|j                  «       }
nF|dk(  r|j                  «       }n0|dk(  r|j                  «       }nt        d|z  ||j                  «      ‚Œá| j                  ||| j                  |   d   «       �ŒO)Nr   r   ú#ÚmachineÚdefaultÚmacdefz.Macro definition missing null line terminator.r!   zbad toplevel token %rzmissing %r namer&   >   r&   rE   rD   rC   ÚloginÚuserÚaccountÚpasswordzbad follower token %r)r   r	   r-   Úlenr   Úreadliner;   r   r/   r:   Ú
startswithr0   Ú_security_check)r   r?   r   r@   ÚlexerÚsaved_linenoÚtoplevelÚttÚ	entrynameÚlinerF   rH   rI   Úprev_linenos                 r   r=   znetrc._parseP   s[  € Ü˜"“ˆØà Ÿ<™<ˆLØ!ŸO™OÓ-Ð-ˆH�rÙØØ�A‘˜#’Ø—<‘< <Ò/´C¸³G¸q²LØ—N‘N×+Ñ+Ô-ØØ�y’Ø!ŸO™OÓ-‘	Ø�y’Ø%‘	Ø�x’Ø!ŸO™OÓ-�	Ø)+�—‘˜IÑ&ØØ Ÿ>™>×2Ñ2Ó4�DÙÜ-ØLØ  %§,¡,ó0ð 0ð ˜t’|ð Ø—K‘K 	Ñ*×1Ñ1°$Ô7ð ð ä%Ø+¨bÑ0°$¸¿¹óFð Fñ Ü%Ð&7¸"Ñ&<¸dÀEÇLÁLÓQÐQð *,Ð+ˆEÐ+�G˜hØ$&ˆD�J‰J�yÑ!ØØ#Ÿl™l�Ø—_‘_Ó&�Ø—=‘= Ô%Ø—|‘| {Ò2ØŸ™×/Ñ/Ô1ØØÐ=Ñ=Ø-2°G¸XÐ,F�D—J‘J˜yÑ)Ø×$Ñ$ RÔ(ØØ˜7’] b¨F¢lØ!ŸO™OÓ-‘EØ˜9’_Ø#Ÿo™oÓ/‘GØ˜:Ò%Ø$Ÿ™Ó0‘Hä)Ð*AÀBÑ*FØ*.°·±ó>ð >ð% ð( × Ñ   ]°D·J±J¸yÑ4IÈ!Ñ4LÔMñy r   c                 óx  — t         j                  dk(  rã|rà|dk7  rÚt        j                  |j                  «       «      }|j                  t        j
                  «       k7  r\dd l}	 |j                  |j                  «      d   }	 |j                  t        j
                  «       «      d   }t        d|› d|› d�«      ‚|j                  t        j                  t        j                  z  z  rt        d«      ‚y y y y # t        $ r d|j                  z  }Y Œ�w xY w# t        $ r dt        j
                  «       z  }Y Œ�w xY w)	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)r6   ÚnameÚfstatÚfilenoÚst_uidÚgetuidÚpwdÚgetpwuidÚKeyErrorr   Úst_modeÚstatÚS_IRWXGÚS_IRWXO)r   r   r@   rF   Úpropr]   ÚfownerrG   s           r   rM   znetrc._security_check�   s  € Ü�7‰7�gÒ¡-°E¸[Ò4HÜ—8‘8˜BŸI™I›KÓ(ˆDØ�{‰{œbŸi™i›kÒ)Ûð4Ø Ÿ\™\¨$¯+©+Ó6°qÑ9�Fð2ØŸ<™<¬¯	©	«Ó4°QÑ7�Dô &Ø,¨V¨H°B°t°fð =%ð %ó'ð 'ð —‘¤§¡¬t¯|©|Ñ ;Ò<Ü%ð!ó"ð "ð =ð 5I -Ðøô  ò 4Ø%¨¯©Ñ3’Fð4ûô  ò 2Ø#¤b§i¡i£kÑ1’Dð2ús$   Á$C8 Â&D Ã8DÄDÄ D9Ä8D9c                 óx   — || j                   v r| j                   |   S d| j                   v r| j                   d   S y)z8Return a (user, account, password) tuple for given host.rD   N)r:   )r   Úhosts     r   Úauthenticatorsznetrc.authenticators¦   s;   € à�4—:‘:ÑØ—:‘:˜dÑ#Ð#Ø˜$Ÿ*™*Ñ$Ø—:‘:˜iÑ(Ð(àr   c                 óJ  — d}| j                   j                  «       D ]=  }| j                   |   }|d|› d|d   › d�z  }|d   r|d|d   › d�z  }|d|d	   › d�z  }Œ? | j                  j                  «       D ])  }|d
|› d�z  }| j                  |   D ]  }||z  }Œ	 |dz  }Œ+ |S )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 )r:   Úkeysr;   )r   Úreprg   ÚattrsÚmacrorS   s         r   Ú__repr__znetrc.__repr__¯   sã   € àˆØ—J‘J—O‘OÓ%ò 	.ˆDØ—J‘J˜tÑ$ˆEØ�X˜d˜V :¨e°A©h¨Z°rÐ:Ñ:ˆCØ�QŠxØ˜ E¨!¡H :¨RÐ0Ñ0�Ø�[  q¡ 
¨"Ð-Ñ-‰Cð	.ð —[‘[×%Ñ%Ó'ò 	ˆEØ�W˜U˜G 2Ð&Ñ&ˆCØŸ™ EÑ*ò �Ø�t‘‘ðà�4‰K‰Cð		ð
 ˆ
r   r   )r   r   r   r   r=   rM   rh   ro   r   r   r   r   r   B   s   „ ó5ò>Nò@"ò,ór   Ú__main__)
r   r6   ra   Ú__all__r   r   r   r   r   Úprintr   r   r   ú<module>rs      sV   ðÙ 3÷ àÐ%Ð
&€ô	K�iô 	K÷)$ñ )$÷X{ñ {ðz ˆzÒÙ	‰%‹'…Nð r   