eaiovnaovbqoebvqoeavibavo B  f@sXdZddlZddlZddlZddgZGdddeZGdddZedkrTe edS)z-An object-oriented interface to .netrc files.NnetrcNetrcParseErrorc@s"eZdZdZdddZddZdS)rz5Exception raised on syntax errors in the .netrc file.NcCs"||_||_||_t||dS)N)filenamelinenomsg Exception__init__)selfrrrr */opt/alt/python37/lib64/python3.7/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 ddZddZddZdd ZdS) rNc CsX|dk}|dkr&tjtjdd}i|_i|_t|}||||WdQRXdS)N~z.netrc)ospathjoin expanduserhostsmacrosopen_parse)r file default_netrcfpr r r rs znetrc.__init__cCst|}|jd7_|jdd|_x|j}|}}|sFPn|ddkrv|j|kr,t|dkr,|jq,n|dkr|}nx|dkrd}nj|dkr|}g|j |<d |_ x2|j} | r| d krd |_ P|j | | qWq,nt d |||jd} d} } i|j |<x|}|ds8|d kr|| r\| | | f|j |<||Pnt d||t|f||jq|dks|dkr|} q|dkr|} q|dkrtjdkr|rt|} | jtkrzddl}y|| jd}Wn tk r(d| j}YnXy|td}Wn"tk rbdt}YnXt d||f||j| jtjtjB@rt d||j|} nt d|||jqWq,WdS)Nz !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~#rmachinedefaultmacdefz  z zbad toplevel token %r>rr r"r!z&malformed %s entry %s terminated by %sloginuseraccountpasswordposixzuid %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 commentersreplacerZ get_tokenlenZinstreamreadlinerZ whitespaceappendrr startswithZ push_tokenreprrnamefstatfilenost_uidgetuidpwdgetpwuidKeyErrorst_modestatS_IRWXGS_IRWXO)r rrrZlexerZ saved_linenoZtoplevelZttZ entrynameliner$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.authenticatorscCsd}xf|jD]X}|j|}|d|d|dd7}|drT|d|dd7}|d|d d7}qWxF|jD]8}|d |d7}x|j|D] }||7}qW|d7}qxW|S) z3Dump the class data in the format of a .netrc file.rzmachine z login rr#rz account z password zmacdef )rkeysr)r Zrepr=ZattrsZmacror<r r r __repr__zs   znetrc.__repr__)N)r rrrrr>rAr r r r rs Q __main__) rrr)r9__all__rrrr printr r r r s  t