B
    V                 @   s   d dl mZ yd dlmZ W n  ek
r<   d dlmZ Y nX G dd deZG dd deZ	G dd	 d	eZ
G d
d deZG dd deZG dd deZG dd deZdS )    )print_function)MutableMapping)	DictMixinc               @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zd#ddZdd Zdd Zd d! Zd"S )$ObjectDBc             C   s   || _ || _g | _|j| _d S )N)db
validation	observersfiles)selfr   r    r   4lib/python3.7/site-packages/rope/base/oi/objectdb.py__init__
   s    zObjectDB.__init__c             C   s6   x0t | jD ]"}| j|s| j|= | | qW d S )N)listr	   r   Zis_file_valid_file_removed)r
   filer   r   r   validate_files   s    zObjectDB.validate_filesc             C   sD   || j krd S x0t| j | D ]}| j||s| j | |= qW d S )N)r	   r   r   Zis_scope_valid)r
   r   keyr   r   r   validate_file   s
    
zObjectDB.validate_filec             C   s4   || j krd S | j || | | | | d S )N)r	   renamer   _file_added)r
   r   Znewfiler   r   r   
file_moved   s
    

zObjectDB.file_movedc             C   s
   | j  S )N)r	   keys)r
   r   r   r   	get_files$   s    zObjectDB.get_filesc             C   s.   | j ||dd}||}| j|r*|S d S )NT)readonly)_get_scope_infoget_returnedr   is_value_valid)r
   pathr   args
scope_inforesultr   r   r   r   '   s    
zObjectDB.get_returnedc             C   s.   | j ||dd}||}| j|r*|S d S )NT)r   )r   get_per_namer   r   )r
   r   r   namer   r    r   r   r   get_pername-   s    
zObjectDB.get_pernamec             C   s   | j ||dd}| S )NT)r   )r   get_call_infos)r
   r   r   r   r   r   r   get_callinfos3   s    zObjectDB.get_callinfosc             C   s8   | j ||dd}||}| j||r4||| d S )NF)r   )r   r   r   is_more_validadd_call)r
   r   r   r   returnedr   Zold_returnedr   r   r   add_callinfo7   s    
zObjectDB.add_callinfoc             C   s8   | j ||dd}||}| j||r4||| d S )NF)r   )r   r!   r   r&   save_per_name)r
   r   r   r"   valuer   	old_valuer   r   r   add_pername=   s    
zObjectDB.add_pernamec             C   s   | j | d S )N)r   append)r
   observerr   r   r   add_file_list_observerC   s    zObjectDB.add_file_list_observerc             C   s   | j   d S )N)r   write)r
   r   r   r   r1   F   s    zObjectDB.writeTc             C   s   || j kr*|rt S | j | | | || j | krR|rBt S | j | | | j | | }t|trt| j | j | | j | |  |S )N)r	   _NullScopeInfocreater   create_scope
isinstancedictprint)r
   r   r   r   r    r   r   r   r   I   s    


zObjectDB._get_scope_infoc             C   s   x| j D ]}|| qW d S )N)r   removed)r
   r   r/   r   r   r   r   X   s    zObjectDB._file_removedc             C   s   x| j D ]}|| qW d S )N)r   added)r
   r   r/   r   r   r   r   \   s    zObjectDB._file_addedc             C   s6   d}x| j  D ]}|t|7 }qW dt| j |f S )Nr   z)ObjectDB holds %s file and %s scope infos)r	   valueslen)r
   Zscope_countZ	file_dictr   r   r   __str__`   s
    zObjectDB.__str__N)T)__name__
__module____qualname__r   r   r   r   r   r   r#   r%   r)   r-   r0   r1   r   r   r   r<   r   r   r   r   r      s    
r   c               @   s>   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd ZdS )r2   Tc             C   s
   || _ d S )N)error_on_write)r
   r@   r   r   r   r   j   s    z_NullScopeInfo.__init__c             C   s   d S )Nr   )r
   r"   r   r   r   r!   m   s    z_NullScopeInfo.get_per_namec             C   s   | j rt d S )N)r@   NotImplementedError)r
   r"   r+   r   r   r   r*   p   s    z_NullScopeInfo.save_per_namec             C   s   d S )Nr   )r
   
parametersr   r   r   r   t   s    z_NullScopeInfo.get_returnedc             C   s   g S )Nr   )r
   r   r   r   r$   w   s    z_NullScopeInfo.get_call_infosc             C   s   | j rt d S )N)r@   rA   )r
   rB   r(   r   r   r   r'   z   s    z_NullScopeInfo.add_callN)T)	r=   r>   r?   r   r!   r*   r   r$   r'   r   r   r   r   r2   h   s   
r2   c               @   s   e Zd Zdd ZdS )FileInfoc             C   s   d S )Nr   )r
   r   r   r   r   r4      s    zFileInfo.create_scopeN)r=   r>   r?   r4   r   r   r   r   rC      s   rC   c               @   s   e Zd Zdd Zdd ZdS )FileDictc             C   s   d S )Nr   )r
   r   r   r   r   r3      s    zFileDict.createc             C   s   d S )Nr   )r
   r   Znew_keyr   r   r   r      s    zFileDict.renameN)r=   r>   r?   r3   r   r   r   r   r   rD      s   rD   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )	ScopeInfoc             C   s   d S )Nr   )r
   r"   r   r   r   r!      s    zScopeInfo.get_per_namec             C   s   d S )Nr   )r
   r"   r+   r   r   r   r*      s    zScopeInfo.save_per_namec             C   s   d S )Nr   )r
   rB   r   r   r   r      s    zScopeInfo.get_returnedc             C   s   d S )Nr   )r
   r   r   r   r$      s    zScopeInfo.get_call_infosc             C   s   d S )Nr   )r
   rB   r(   r   r   r   r'      s    zScopeInfo.add_callN)r=   r>   r?   r!   r*   r   r$   r'   r   r   r   r   rE      s
   rE   c               @   s$   e Zd Zdd Zdd Zdd ZdS )CallInfoc             C   s   || _ || _d S )N)r   r(   )r
   r   r(   r   r   r   r      s    zCallInfo.__init__c             C   s   | j S )N)r   )r
   r   r   r   get_parameters   s    zCallInfo.get_parametersc             C   s   | j S )N)r(   )r
   r   r   r   r      s    zCallInfo.get_returnedN)r=   r>   r?   r   rG   r   r   r   r   r   rF      s   rF   c               @   s   e Zd Zdd Zdd ZdS )FileListObserverc             C   s   d S )Nr   )r
   r   r   r   r   r9      s    zFileListObserver.addedc             C   s   d S )Nr   )r
   r   r   r   r   r8      s    zFileListObserver.removedN)r=   r>   r?   r9   r8   r   r   r   r   rH      s   rH   N)Z
__future__r   collectionsr   ImportErrorUserDictr   objectr   r2   rC   rD   rE   rF   rH   r   r   r   r   <module>   s   `	