a ÕDOg¾ã@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 ú*/opt/alt/python39/lib64/python3.9/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) rNcCsl|du}|dur&tj tj d¡d¡}i|_i|_t|ƒ}| |||¡Wdƒn1s^0YdS)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}| ¡}}|sDq°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 vrr| rR| | | f|j |<| |¡q(nt d||t|ƒf||jƒ‚q|dks†|dkr’| ¡} q|dkr¨| ¡} q|dkr˜tjdkrŽ|rŽt | ¡¡} | jt ¡krlddl}z| | j¡d}Wntyd| j}Yn0z| t ¡¡d}Wn tyTdt ¡}Yn0t 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||jvr|j|Sd|jvr(|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›d7}|drR|d|d›d7}|d|d ›d7}q|j ¡D]4}|d |›d7}|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