ó
†Å•Zc           @  sæ   d  d l  m Z y d  d l m Z Wn! e k
 rG d  d l m Z n Xd e f d „  ƒ  YZ d e f d „  ƒ  YZ	 d e f d	 „  ƒ  YZ
 d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   print_function(   t   MutableMapping(   t	   DictMixint   ObjectDBc           B  s›   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z e d „ Z d „  Z d „  Z d „  Z RS(   c         C  s+   | |  _  | |  _ g  |  _ | j |  _ d  S(   N(   t   dbt
   validationt	   observerst   files(   t   selfR   R   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyt   __init__
   s    			c         C  sJ   xC t  |  j ƒ D]2 } |  j j | ƒ s |  j | =|  j | ƒ q q Wd  S(   N(   t   listR   R   t   is_file_validt   _file_removed(   R   t   file(    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyt   validate_files   s    
c         C  s[   | |  j  k r d  SxA t |  j  | ƒ D], } |  j j | | ƒ s' |  j  | | =q' q' Wd  S(   N(   R   R
   R   t   is_scope_valid(   R   R   t   key(    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyt   validate_file   s
    c         C  sD   | |  j  k r d  S|  j  j | | ƒ |  j | ƒ |  j | ƒ d  S(   N(   R   t   renameR   t   _file_added(   R   R   t   newfile(    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyt
   file_moved   s
    c         C  s   |  j  j ƒ  S(   N(   R   t   keys(   R   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyt	   get_files$   s    c         C  sA   |  j  | | d t ƒ} | j | ƒ } |  j j | ƒ r= | Sd  S(   Nt   readonly(   t   _get_scope_infot   Truet   get_returnedR   t   is_value_valid(   R   t   pathR   t   argst
   scope_infot   result(    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR   '   s    c         C  sA   |  j  | | d t ƒ} | j | ƒ } |  j j | ƒ r= | Sd  S(   NR   (   R   R   t   get_per_nameR   R   (   R   R   R   t   nameR   R    (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyt   get_pername-   s    c         C  s"   |  j  | | d t ƒ} | j ƒ  S(   NR   (   R   R   t   get_call_infos(   R   R   R   R   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyt   get_callinfos3   s    c         C  sS   |  j  | | d t ƒ} | j | ƒ } |  j j | | ƒ rO | j | | ƒ n  d  S(   NR   (   R   t   FalseR   R   t   is_more_validt   add_call(   R   R   R   R   t   returnedR   t   old_returned(    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyt   add_callinfo7   s    c         C  sS   |  j  | | d t ƒ} | j | ƒ } |  j j | | ƒ rO | j | | ƒ n  d  S(   NR   (   R   R&   R!   R   R'   t   save_per_name(   R   R   R   R"   t   valueR   t	   old_value(    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyt   add_pername=   s    c         C  s   |  j  j | ƒ d  S(   N(   R   t   append(   R   t   observer(    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyt   add_file_list_observerC   s    c         C  s   |  j  j ƒ  d  S(   N(   R   t   write(   R   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR3   F   s    c         C  s¿   | |  j  k r< | r t ƒ  S|  j  j | ƒ |  j | ƒ n  | |  j  | k rs | r\ t ƒ  S|  j  | j | ƒ n  |  j  | | } t | t ƒ r» t |  j  |  j  | |  j  | | ƒ n  | S(   N(   R   t   _NullScopeInfot   createR   t   create_scopet
   isinstancet   dictt   print(   R   R   R   R   R    (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR   I   s    (c         C  s%   x |  j  D] } | j | ƒ q
 Wd  S(   N(   R   t   removed(   R   R   R1   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR   X   s    c         C  s%   x |  j  D] } | j | ƒ q
 Wd  S(   N(   R   t   added(   R   R   R1   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR   \   s    c         C  sG   d } x' |  j  j ƒ  D] } | t | ƒ 7} q Wd t |  j  ƒ | f S(   Ni    s)   ObjectDB holds %s file and %s scope infos(   R   t   valuest   len(   R   t   scope_countt	   file_dict(    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyt   __str__`   s
    (   t   __name__t
   __module__R	   R   R   R   R   R   R#   R%   R+   R/   R2   R3   R   R   R   R   R@   (    (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR      s    														R4   c           B  sA   e  Z e d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C  s   | |  _  d  S(   N(   t   error_on_write(   R   RC   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR	   j   s    c         C  s   d  S(   N(    (   R   R"   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR!   m   s    c         C  s   |  j  r t ƒ  ‚ n  d  S(   N(   RC   t   NotImplementedError(   R   R"   R-   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR,   p   s    	c         C  s   d  S(   N(    (   R   t
   parameters(    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR   t   s    c         C  s   g  S(   N(    (   R   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR$   w   s    c         C  s   |  j  r t ƒ  ‚ n  d  S(   N(   RC   RD   (   R   RE   R)   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR(   z   s    	(	   RA   RB   R   R	   R!   R,   R   R$   R(   (    (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR4   h   s   				t   FileInfoc           B  s   e  Z d  „  Z RS(   c         C  s   d  S(   N(    (   R   R   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR6      s    (   RA   RB   R6   (    (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyRF      s   t   FileDictc           B  s   e  Z d  „  Z d „  Z RS(   c         C  s   d  S(   N(    (   R   R   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR5   ‡   s    c         C  s   d  S(   N(    (   R   R   t   new_key(    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR   Š   s    (   RA   RB   R5   R   (    (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyRG   …   s   	t	   ScopeInfoc           B  s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C  s   d  S(   N(    (   R   R"   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR!      s    c         C  s   d  S(   N(    (   R   R"   R-   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR,   “   s    c         C  s   d  S(   N(    (   R   RE   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR   –   s    c         C  s   d  S(   N(    (   R   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR$   ™   s    c         C  s   d  S(   N(    (   R   RE   R)   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR(   œ   s    (   RA   RB   R!   R,   R   R$   R(   (    (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyRI   Ž   s
   				t   CallInfoc           B  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C  s   | |  _  | |  _ d  S(   N(   R   R)   (   R   R   R)   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR	   ¢   s    	c         C  s   |  j  S(   N(   R   (   R   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyt   get_parameters¦   s    c         C  s   |  j  S(   N(   R)   (   R   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR   ©   s    (   RA   RB   R	   RK   R   (    (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyRJ       s   		t   FileListObserverc           B  s   e  Z d  „  Z d „  Z RS(   c         C  s   d  S(   N(    (   R   R   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR;   ¯   s    c         C  s   d  S(   N(    (   R   R   (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyR:   ²   s    (   RA   RB   R;   R:   (    (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyRL   ­   s   	N(   t
   __future__R    t   collectionsR   t   ImportErrort   UserDictR   t   objectR   R4   RF   RG   RI   RJ   RL   (    (    (    s4   lib/python2.7/site-packages/rope/base/oi/objectdb.pyt   <module>   s   `	