§
    (¶Õi  ã                   ó°   — d Z ddl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¦   «         ¦  «         dS dS )
z-An object-oriented interface to .netrc files.é    NÚnetrcÚNetrcParseErrorc                   ó    — e Zd ZdZdd„Zd„ ZdS )r   z5Exception raised on syntax errors in the .netrc file.Nc                 óf   — || _         || _        || _        t                               | |¦  «         d S ©N)ÚfilenameÚlinenoÚmsgÚ	ExceptionÚ__init__)Úselfr
   r   r	   s       ú/usr/lib/python3.11/netrc.pyr   zNetrcParseError.__init__   s3   € Ø ˆŒØˆŒØˆŒÝ×Ò˜4 Ñ%Ô%Ð%Ð%Ð%ó    c                 ó6   — | j         ›d| j        ›d| j        ›d�S )Nz (z, line ú))r
   r   r	   )r   s    r   Ú__str__zNetrcParseError.__str__   s!   € Ø%)¤X X X¨t¬}¨}¨}¸d¼k¸k¸kÐJÐJr   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   r   r   
   sB   € € € € € Ø?Ð?ð&ð &ð &ð &ðKð Kð Kð Kð Kr   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )Ú	_netrclexc                 ó>   — d| _         || _        d| _        g | _        d S )Né   z
	 )r	   ÚinstreamÚ
whitespaceÚpushback)r   Úfps     r   r   z_netrclex.__init__   s"   € ØˆŒØˆŒØ#ˆŒØˆŒˆˆr   c                 óf   — | j                              d¦  «        }|dk    r| xj        dz  c_        |S )Nr   ú
)r   Úreadr	   )r   Úchs     r   Ú
_read_charz_netrclex._read_char   s5   € ØŒ]×Ò Ñ"Ô"ˆØ�Š:ˆ:ØˆKŒK˜1ÑˆKŒKØˆ	r   c                 ó¦  — | j         r| j                              d¦  «        S d}t          | j        d¦  «        }|D ]•}|| j        v rŒ|dk    r1|D ]-}|dk    r|c c S |dk    r|                      ¦   «         }||z  }Œ.ŒC|dk    r|                      ¦   «         }||z  }|D ]0}|| j        v r|c c S |dk    r|                      ¦   «         }||z  }Œ1Œ–|S )Nr   Ú ú"ú\)r   ÚpopÚiterr$   r   )r   ÚtokenÚfiterr#   s       r   Ú	get_tokenz_netrclex.get_token#   s(  € ØŒ=ð 	(Ø”=×$Ò$ QÑ'Ô'Ð'ØˆÝ�T”_ bÑ)Ô)ˆØð 	 ð 	 ˆBØ�T”_Ð$Ð$ØØ�SŠyˆyØð  ð  �BØ˜S’y�yØ$˜˜˜˜˜Ø˜tš˜Ø!Ÿ_š_Ñ.Ô.˜Ø˜R‘K�E�Eð ð ˜’:�:ØŸšÑ*Ô*�BØ˜‘�Øð  ð  �BØ˜Tœ_Ð,Ð,Ø$˜˜˜˜˜Ø˜tš˜Ø!Ÿ_š_Ñ.Ô.˜Ø˜R‘K�E�Eð ð ˆr   c                 ó:   — | j                              |¦  «         d S 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      sP   € € € € € ðð ð ðð ð ðð ð ð6$ð $ð $ð $ð $r   r   c                   ó.   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )r   Nc                 óÒ  — |d u }|€=t           j                             t           j                             d¦  «        d¦  «        }i | _        i | _        	 t          |d¬¦  «        5 }|                      |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S # t          $ rF t          |d¬¦  «        5 }|                      |||¦  «         d d d ¦  «         Y d S # 1 swxY w Y   Y d S 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—<’<¥¤× 2Ò 2°3Ñ 7Ô 7¸ÑBÔBˆDØˆŒ
ØˆŒð	5Ý�d WÐ-Ñ-Ô-ð 5°Ø—’˜D " mÑ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð 5ð 5øå!ð 	5ð 	5ð 	5Ý�d XÐ.Ñ.Ô.ð 5°"Ø—’˜D " mÑ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð 5ð 5ð 5ð	5øøøsZ   ÁB Á$B	Á<B Â	BÂB ÂBÂB ÂC&Â1CÃ	C&ÃC	ÃC&ÃC	ÃC&Ã%C&c                 óì  — t          |¦  «        }	 |j        }|                     ¦   «         x}}|sd S |d         dk    r8|j        |k    r,t          |¦  «        dk    r|j                             ¦   «          Œf|dk    r|                     ¦   «         }n¢|dk    rd}n™|dk    rz|                     ¦   «         }g | j        |<   	 |j                             ¦   «         }	|	st          d||j        ¦  «        ‚|	dk    rn!| j        |                              |	¦  «         ŒY�Œ
t          d	|z  ||j        ¦  «        ‚|st          d
|z  ||j        ¦  «        ‚dx}
x}}i | j	        |<   	 |j        }|                     ¦   «         }| 
                    d¦  «        r%|j        |k    r|j                             ¦   «          ŒV|dv r#|
||f| j	        |<   |                     |¦  «         nq|dk    s|dk    r|                     ¦   «         }
nO|dk    r|                     ¦   «         }n4|dk    r|                     ¦   «         }nt          d|z  ||j        ¦  «        ‚Œí|                      ||| j	        |         d         ¦  «         �Œe)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Ó  € Ý˜"‘”ˆð<	Nà œ<ˆLØ!ŸOšOÑ-Ô-Ð-ˆH�rØð FØ�Ø�A”˜#’�Ø”< <Ò/Ð/µC¸±G´G¸q²L°LØ”N×+Ò+Ñ-Ô-Ð-ØØ�y’�Ø!ŸOšOÑ-Ô-�	�	Ø�y’�Ø%�	�	Ø�x’�Ø!ŸOšOÑ-Ô-�	Ø)+�”˜IÑ&ð8Ø œ>×2Ò2Ñ4Ô4�DØð 0Ý-ØLØ  %¤,ñ0ô 0ð 0ð ˜t’|�|ð Ø”K 	Ô*×1Ò1°$Ñ7Ô7Ð7ð8ñ å%Ø+¨bÑ0°$¸¼ñFô Fð Fð ð RÝ%Ð&7¸"Ñ&<¸dÀEÄLÑQÔQÐQð *,Ð+ˆEÐ+�G˜hØ$&ˆDŒJ�yÑ!ð>Ø#œl�Ø—_’_Ñ&Ô&�Ø—=’= Ñ%Ô%ð Ø”| {Ò2Ð2Øœ×/Ò/Ñ1Ô1Ð1ØØÐ=Ð=Ð=Ø-2°G¸XÐ,F�D”J˜yÑ)Ø×$Ò$ RÑ(Ô(Ð(ØØ˜7’]�] b¨F¢l lØ!ŸOšOÑ-Ô-�E�EØ˜9’_�_Ø#ŸošoÑ/Ô/�G�GØ˜:Ò%Ð%Ø$ŸšÑ0Ô0�H�Hå)Ð*AÀBÑ*FØ*.°´ñ>ô >ð >ð%>ð( × Ò   ]°D´J¸yÔ4IÈ!Ô4LÑMÔMÐMñy<	Nr   c                 ó€  — t           j        dk    �r&|�r%|dk    �r t          j        |                     ¦   «         ¦  «        }|j        t          j        ¦   «         k    rªdd l}	 |                     |j        ¦  «        d         }n# t          $ r d|j        z  }Y nw xY w	 |                     t          j        ¦   «         ¦  «        d         }n&# t          $ r dt          j        ¦   «         z  }Y nw xY wt          d|› d|› d�¦  «        ‚|j
        t          j        t          j        z  z  rt          d¦  «        ‚d S d S d S d S )	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�   sp  € ÝŒ7�gÒÑ -Ñ°E¸[Ò4HÑ4HÝ”8˜BŸIšI™KœKÑ(Ô(ˆDØŒ{�bœi™kœkÒ)Ð)Ø�
�
�
ð4Ø Ÿ\š\¨$¬+Ñ6Ô6°qÔ9�F�FøÝð 4ð 4ð 4Ø%¨¬Ñ3�F�F�Fð4øøøð2ØŸ<š<­¬	©¬Ñ4Ô4°QÔ7�D�DøÝð 2ð 2ð 2Ø#¥b¤i¡k¤kÑ1�D�D�Dð2øøøå%ð%¨Vð %ð %°tð %ð %ð %ñ'ô 'ð 'ð ”¥¤­t¬|Ñ ;Ñ<ð "Ý%ð!ñ"ô "ð "ð! ÐÐÐÐ4HÐ4Hð"ð "s$   Á# B ÂBÂBÂ,C Ã C/Ã.C/c                 ó^   — || j         v r| j         |         S d| j         v r| j         d         S dS )z8Return a (user, account, password) tuple for given host.rD   N)r:   )r   Úhosts     r   Úauthenticatorsznetrc.authenticators¦   s;   € à�4”:ÐÐØ”:˜dÔ#Ð#Ø˜$œ*Ð$Ð$Ø”:˜iÔ(Ð(à�4r   c                 óJ  — d}| j                              ¦   «         D ]G}| j         |         }|d|› d|d         › d�z  }|d         r|d|d         › d�z  }|d|d	         › d�z  }ŒH| 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—O’OÑ%Ô%ð 	.ð 	.ˆDØ”J˜tÔ$ˆEØÐ:˜dÐ:Ð:¨e°A¬hÐ:Ð:Ð:Ñ:ˆCØ�QŒxð 1ØÐ0 E¨!¤HÐ0Ð0Ð0Ñ0�ØÐ-  q¤Ð-Ð-Ð-Ñ-ˆCˆCØ”[×%Ò%Ñ'Ô'ð 	ð 	ˆEØÐ&˜UÐ&Ð&Ð&Ñ&ˆCØœ EÔ*ð ð �Ø�t‘��Ø�4‰KˆCˆCØˆ
r   r   )r   r   r   r   r=   rM   rh   ro   r   r   r   r   r   B   sh   € € € € € ð5ð 5ð 5ð 5ð>Nð >Nð >Nð@"ð "ð "ð,ð ð ðð ð ð ð r   Ú__main__)r   r6   Úshlexra   Ú__all__r   r   r   r   r   Úprintr   r   r   ú<module>rt      sô   ðØ 3Ð 3ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð àÐ%Ð
&€ð	Kð 	Kð 	Kð 	Kð 	K�iñ 	Kô 	Kð 	Kð)$ð )$ð )$ð )$ð )$ñ )$ô )$ð )$ðX{ð {ð {ð {ð {ñ {ô {ð {ðz ˆzÒÐØ	€Eˆ%ˆ%‰'Œ'�N„N€N€N€Nð Ðr   