
    d                         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         /croot/python-split_1694437901252/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/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!    %)XXXt}}}dkkk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    ]""::KK1KK	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_$$Syy    BSyy$t!__..RKEE  ::**B    BT_,,$t!__..RKEE  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 23 7 7BBD
	5dW--- 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dX... 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	5sZ   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!OO---Hr FA#<<//CGGqLLN++---y!OO--		y%		x!OO--	)+I&8 >2244D 0-L %,0 0 0 t|| K	*11$7778 %+b0$F F F  R%&7"&<dELQQQ *,+E+Gh$&DJy!>#l__&&==%% |{22//111===-2GX,FDJy)$$R(((7]]bFll!OO--EE9__#oo//GG:%%$00HH)*AB*F*.> > >%>(   ]DJy4I!4LMMMy<	Nr   c                    t           j        dk    r&|r%|dk    r t          j        |                                          }|j        t          j                    k    rd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   7g-E[4H4H8BIIKK((D{bikk))


4 \\$+66q9FF 4 4 4%3FFF42<<	44Q7DD 2 2 2#bikk1DDD2%%V % %t % % %' ' ' t| ;< "%!" " "! 4H4H" "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    JOO%% 	. 	.DJt$E:d::eAh::::CQx 10E!H0000-q----CC[%%'' 	 	E&U&&&&CE*  t4KCC
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%%''NNNNN r   