U e5d¾ã@sXdZddlZddlZddlZddgZGdd„deƒZGdd„dƒZedkrTe eƒƒdS)z-An object-oriented interface to .netrc files.éNÚnetrcÚNetrcParseErrorc@s"eZdZdZddd„Zdd„ZdS)rz5Exception raised on syntax errors in the .netrc file.NcCs"||_||_||_t ||¡dS)N)ÚfilenameÚlinenoÚmsgÚ ExceptionÚ__init__)Úselfrrr©r ú/usr/lib64/python3.8/netrc.pyr szNetrcParseError.__init__cCsd|j|j|jfS)Nz%s (%s, line %s))rrr)r r r r Ú__str__szNetrcParseError.__str__)NN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rr r r r r r s c@s.eZdZd dd„Zdd„Zdd„Zdd „ZdS) rNc CsX|dk}|dkr&tj tj d¡d¡}i|_i|_t|ƒ�}| |||¡W5QRXdS)Nú~z.netrc)ÚosÚpathÚjoinÚ expanduserÚhostsÚmacrosÚopenÚ_parse)r ÚfileÚ default_netrcÚfpr r r rs znetrc.__init__cCs¸t |¡}|jd7_|j dd¡|_|j}| ¡}}|sD�q´n¶|ddkrt|j|kr(t|ƒdkr(|j ¡q(n†|dkr†| ¡}nt|dkr”d}nf|dkrè| ¡}g|j |<d |_ |j ¡} | rÊ| d krÒd |_ q(|j |  | ¡q´q(nt d |||jƒ‚d} d} } i|j |<| ¡}| d¡�s.|d k�rr| �rR| | | f|j |<| |¡q(nt d||t|ƒf||jƒ‚�q|dk�s†|dk�r’| ¡} �q|dk�r¨| ¡} �q|dk�rœtjdk�r’|�r’t | ¡¡} | jt ¡k�rpddl}z| | j¡d}Wn tk �rd| j}YnXz| t ¡¡d}Wn"tk �rXdt ¡}YnXt d||f||jƒ‚| jtjtjB@�r’t d||jƒ‚| ¡} nt d|||jƒ‚�qq(dS)Nz !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ú#ÚréÚmachineÚdefaultÚmacdefz Ú z zbad toplevel token %r>rr"r!r z&malformed %s entry %s terminated by %sÚloginÚuserÚaccountÚpasswordÚposixzuid %sz9~/.netrc file owner (%s) does not match current user (%s)zY~/.netrc access too permissive: access permissions must restrict access to only the ownerzbad follower token %r)ÚshlexZ wordcharsZ commentersÚreplacerZ get_tokenÚlenZinstreamÚreadlinerZ whitespaceÚappendrrÚ startswithZ push_tokenÚreprrÚnameÚfstatÚfilenoÚst_uidÚgetuidÚpwdÚgetpwuidÚKeyErrorÚst_modeÚstatÚS_IRWXGÚS_IRWXO)r rrrZlexerZ saved_linenoZtoplevelZttZ entrynameÚliner$r&r'Zpropr5Zfownerr%r r r r s¦        ÿ  ÿ  ÿý    ÿýý ÿz netrc._parsecCs0||jkr|j|Sd|jkr(|jdSdSdS)z8Return a (user, account, password) tuple for given host.r!N)r)r Úhostr r r Úauthenticatorsqs     znetrc.authenticatorscCs¬d}|j ¡D]X}|j|}|d|›d|d›d�7}|drR|d|d›d�7}|d|d ›d�7}q|j ¡D]4}|d |›d�7}|j|D] }||7}q�|d7}qr|S) z3Dump the class data in the format of a .netrc file.rzmachine z login rr#rz account z password ézmacdef )rÚkeysr)r Zrepr=ÚattrsZmacror<r r r Ú__repr__zs   znetrc.__repr__)N)r rrrrr>rBr r r r rs Q Ú__main__) rrr)r9Ú__all__rrrr Úprintr r r r Ús  t