
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \4  ã               @   sX   d Z ddlZddlZddlZddgZG dd„ deƒZG dd„ dƒZedkrTe	eƒ ƒ dS )z-An object-oriented interface to .netrc files.é    NÚnetrcÚNetrcParseErrorc               @   s"   e Zd ZdZddd„Zdd„ ZdS )r   z5Exception raised on syntax errors in the .netrc file.Nc             C   s"   || _ || _|| _tj| |ƒ d S )N)ÚfilenameÚlinenoÚmsgÚ	ExceptionÚ__init__)Úselfr   r   r   © r
   ú/usr/lib64/python3.6/netrc.pyr      s    zNetrcParseError.__init__c             C   s   d| j | j| jf S )Nz%s (%s, line %s))r   r   r   )r	   r
   r
   r   Ú__str__   s    zNetrcParseError.__str__)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r
   r
   r
   r   r   
   s   
c               @   s.   e Zd Zd
dd„Zdd„ Zdd„ Zdd	„ ZdS )r   Nc             C   sx   |d k}|d krFyt jjt jd dƒ}W n tk
rD   tdƒ‚Y nX i | _i | _t|ƒ�}| j	|||ƒ W d Q R X d S )NÚHOMEz.netrcz'Could not find .netrc: $HOME is not set)
ÚosÚpathÚjoinÚenvironÚKeyErrorÚOSErrorÚhostsÚmacrosÚopenÚ_parse)r	   ÚfileÚdefault_netrcÚfpr
   r
   r   r      s    
znetrc.__init__c             C   sÈ  t j |ƒ}| jd7  _|jjddƒ|_�x˜|j}|jƒ  }}|sFP n¼|d dkrv|j|kr,t|ƒdkr,|jjƒ  q,nŒ|dkrˆ|jƒ }nz|dkr–d}nl|dkrð|jƒ }g | j	|< d	|_
x4|jjƒ }	|	 sÐ|	d
krØd|_
P | j	| j|	ƒ q¸W q,ntd| ||jƒ‚d}
d  }}i | j|< �x¤|jƒ }|jdƒ�s:|dk�r~|�r^|
||f| j|< |j|ƒ P ntd||t|ƒf ||jƒ‚�q|dk�s’|dk�rž|jƒ }
�q|dk�r´|jƒ }�q|dk�r¨tjdk�rž|�ržtj|jƒ ƒ}|jtjƒ k�r|dd l}y|j|jƒd }W n  tk
�r*   d|j }Y nX y|jtjƒ ƒd }W n" tk
�rd   dtjƒ  }Y nX td||f ||jƒ‚|jtjtjB @ �ržtd||jƒ‚|jƒ }ntd| ||jƒ‚�qW q,W d S )Nz !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ú#Ú r   é   ÚmachineÚdefaultÚmacdefz 	Ú
z 	
zbad toplevel token %rz&malformed %s entry %s terminated by %sÚloginÚuserÚaccountÚpasswordÚposixzuid %sz9~/.netrc file owner (%s) does not match current user (%s)zY~/.netrc access too permissive: access permissions must restrict access to only the ownerzbad follower token %r>   r    r#   r"   r$   )ÚshlexZ	wordcharsZ
commentersÚreplacer   Z	get_tokenÚlenZinstreamÚreadliner   Z
whitespaceÚappendr   r   Ú
startswithZ
push_tokenÚreprr   ÚnameÚfstatÚfilenoÚst_uidÚgetuidÚpwdÚgetpwuidr   Úst_modeÚstatÚS_IRWXGÚS_IRWXO)r	   r   r   r   ZlexerZsaved_linenoZtoplevelZttZ	entrynameÚliner&   r(   r)   Zpropr7   Zfownerr'   r
   r
   r   r   #   s�    












znetrc._parsec             C   s0   || j kr| j | S d| j kr(| j d S dS dS )z8Return a (user, account, password) tuple for given host.r#   N)r   )r	   Úhostr
   r
   r   Úauthenticatorst   s
    



znetrc.authenticatorsc             C   s¸   d}xf| j jƒ D ]X}| j | }|d|› d|d › d�7 }|d rT|d|d › d�7 }|d|d	 › d�7 }qW xF| jjƒ D ]8}|d
|› d�7 }x| j| D ]}||7 }q˜W |d7 }qxW |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	   Zrepr>   ZattrsZmacror=   r
   r
   r   Ú__repr__}   s    
znetrc.__repr__)N)r   r   r   r   r   r?   rB   r
   r
   r
   r   r      s   
Q	Ú__main__)
r   r   r+   r:   Ú__all__r   r   r   r   Úprintr
   r
   r
   r   Ú<module>   s   w