
    Æe                         d dl mZmZ  G d d      Z G d d      Z G d de      Z G d d	e      Z G d
 de      Z G d d      Zy)    )ListTuplec                   d    e Zd ZdZ	 ddZd Zd Z eee      Zd Z	d Z
ddZd	 Zd
 Zd Zd Zy)ImportStatementzRepresent an import in a module

    `readonly` attribute controls whether this import can be changed
    by import actions or not.

    Nc                     || _         || _        d| _        || _        d | _        || _        d| _        d | _        || _        y )NF)	
start_lineend_linereadonlymain_statement_import_infoimport_info_is_changed	new_startblank_lines)selfr   r   r	   r   r   s         F/usr/lib/python3/dist-packages/rope/refactor/importutils/importinfo.py__init__zImportStatement.__init__   sH     % , & &    c                     | j                   S N)r   r   s    r   _get_import_infoz ImportStatement._get_import_info   s       r   c                 `    | j                   s"||| j                  k(  sd| _        || _        y y y y NT)r
   r   r   )r   
new_imports     r   _set_import_infoz ImportStatement._set_import_info   s<    &$"3"33#D *D 4 ' r   c                 ~    | j                   s| j                  | j                  j                         S | j                  S r   )r   r   r   get_import_statementr   s    r   r   z$ImportStatement.get_import_statement'   s7    t22:##88::&&&r   c                 6    t         j                         | _        y r   )
ImportInfoget_empty_importr   r   s    r   empty_importzImportStatement.empty_import-   s    %668r   c                      || _         || _        y r   )r   r   )r   linenor   s      r   movezImportStatement.move0   s    &r   c                 2    | j                   | j                  fS r   )r   r	   r   s    r   get_old_locationz ImportStatement.get_old_location4   s    --r   c                     | j                   S r   )r   r   s    r   get_new_startzImportStatement.get_new_start7   s    ~~r   c                 p    | j                   xs) | j                  d uxs | j                  | j                  k7  S r   )r   r   r   r   s    r   
is_changedzImportStatement.is_changed:   s3     
NN$&K$..DOO*K	
r   c                 $    |j                  |       S r   )dispatch)r   visitors     r   acceptzImportStatement.accept?   s    %%r   Nr   )r   )__name__
__module____qualname____doc__r   r   r   propertyr   r   r"   r%   r'   r)   r+   r/    r   r   r   r      sP     ST'!+ +-=>K'9'.

&r   r   c                   L    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ed	        Zy
)r    c                      y r   r6   r   contexts     r   get_imported_primariesz!ImportInfo.get_imported_primariesD       r   c                 n    | j                  |      D cg c]  }|j                  d      d    c}S c c}w )N.r   )r;   split)r   r:   primarys      r   get_imported_nameszImportInfo.get_imported_namesG   s8    151L1LW1U
&-GMM#q!
 	
 
s   2c                      y r   r6   r   s    r   r   zImportInfo.get_import_statementL   r<   r   c                      y r   r6   r   s    r   is_emptyzImportInfo.is_emptyO   r<   r   c                 4    t        | j                               S r   )hashr   r   s    r   __hash__zImportInfo.__hash__R   s    D--/00r   c                 j    t        |      t        |      k7  ryt        ||      D ]  \  }}||k7  s y y)NFT)lenzip)r   list1list2pair1pair2s        r   _are_name_and_alias_lists_equalz*ImportInfo._are_name_and_alias_lists_equalU   s>    u:U#u- 	LE5~	 r   c                 t    t        || j                        xr! | j                         |j                         k(  S r   )
isinstance	__class__r   r   objs     r   __eq__zImportInfo.__eq__]   s5    sDNN+ J))+s/G/G/II	
r   c                 &    | j                  |       S r   )rU   rS   s     r   __ne__zImportInfo.__ne__c   s    ;;s###r   c                      t               S r   )EmptyImportr6   r   r   r!   zImportInfo.get_empty_importf   s
    }r   N)r1   r2   r3   r;   rA   r   rD   rG   rO   rU   rW   staticmethodr!   r6   r   r   r    r    C   s>    

1
$  r   r    c                   $    e Zd Zd Zd Zd Zd Zy)NormalImportc                     || _         y r   names_and_aliases)r   r_   s     r   r   zNormalImport.__init__l   s
    !2r   c                 |    g }| j                   D ]*  \  }}|r|j                  |       |j                  |       , |S r   )r_   append)r   r:   resultnamealiass        r   r;   z#NormalImport.get_imported_primarieso   sB    11 	$KD%e$d#		$
 r   c                 `    d}| j                   D ]  \  }}||z  }|r|d|z   z  }|dz  } |d d S )Nzimport  as , r^   r   rb   rc   rd   s       r   r   z!NormalImport.get_import_statementx   sQ    11 	KD%dNF&5.(dNF		
 cr{r   c                 2    t        | j                        dk(  S r0   rI   r_   r   s    r   rD   zNormalImport.is_empty       4))*a//r   N)r1   r2   r3   r   r;   r   rD   r6   r   r   r\   r\   k   s    30r   r\   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	
FromImportc                 .    || _         || _        || _        y r   )module_namelevelr_   )r   rp   rq   r_   s       r   r   zFromImport.__init__   s    &
!2r   c                    | j                   d   d   dk(  r3| j                  |      }|D cg c]  }|j                  d      r| c}S g }| j                   D ]*  \  }}|r|j                  |       |j                  |       , |S c c}w )Nr   *_)r_   get_imported_module
startswithra   )r   r:   modulerc   rb   rd   s         r   r;   z!FromImport.get_imported_primaries   s    !!!$Q'3.--g6F%+HT4??33GDHH11 	$KD%e$d#		$
  Is   BBc                     | j                   dk(  r1|j                  j                  | j                  |j                        S |j                  j                  | j                  |j                  | j                         S )zSGet the imported resource

        Returns `None` if module was not found.
        r   )folder)rq   projectfind_modulerp   ry   find_relative_moduler9   s     r   get_imported_resourcez FromImport.get_imported_resource   s_    
 ::???..t/?/?.WW??77  '..$** r   c                     | j                   dk(  r0|j                  j                  | j                  |j                        S |j                  j                  | j                  |j                  | j                         S )zGet the imported `PyModule`

        Raises `rope.base.exceptions.ModuleNotFoundError` if module
        could not be found.
        r   )rq   rz   
get_modulerp   ry   get_relative_moduler9   s     r   ru   zFromImport.get_imported_module   s\     ::???--d.>.>OO??66  '..$** r   c                     dd| j                   z  z   | j                  z   dz   }| j                  D ]  \  }}||z  }|r|d|z   z  }|dz  } |d d S )Nzfrom r>   z import rf   rg   rh   )rq   rp   r_   ri   s       r   r   zFromImport.get_import_statement   so    3++d.>.>>K11 	KD%dNF&5.(dNF		
 cr{r   c                 2    t        | j                        dk(  S r0   rk   r   s    r   rD   zFromImport.is_empty   rl   r   c                 `    t        | j                        dkD  xr | j                  d   d   dk(  S )Nr   rs   rk   r   s    r   is_star_importzFromImport.is_star_import   s3    4))*Q.V43I3I!3LQ3OSV3VVr   N)
r1   r2   r3   r   r;   r}   ru   r   rD   r   r6   r   r   rn   rn      s&    3


0Wr   rn   c                   8    e Zd ZU g Zeeeef      ed<   d Zd Z	y)rY   r_   c                      yr   r6   r   s    r   rD   zEmptyImport.is_empty   s    r   c                     g S r   r6   r9   s     r   r;   z"EmptyImport.get_imported_primaries   s    	r   N)
r1   r2   r3   r_   r   r   str__annotations__rD   r;   r6   r   r   rY   rY      s$    /1tE#s(O,1r   rY   c                       e Zd Zd Zy)ImportContextc                      || _         || _        y r   )rz   ry   )r   rz   ry   s      r   r   zImportContext.__init__   s    r   N)r1   r2   r3   r   r6   r   r   r   r      s    r   r   N)	typingr   r   r   r    r\   rn   rY   r   r6   r   r   <module>r      sO    <& <&~% %P0: 048W 8Wv*  r   