ó
†Å•Zc           @   sS  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 Z d  d l
 Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z m Z d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d e f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   builtins(   t
   exceptions(   t   stdmods(   t
   taskhandle(   t   utils(   t   ModuleNotFoundError(   t   PyModulet	   PyPackaget   PyCorec           B   sè  e  Z d  „  Z d „  Z d „  Z d „  Z e d „  ƒ Z d( d „ Z	 d „  Z
 e j d ƒ d( d „ ƒ Z d	 „  Z d
 „  Z e j d ƒ d „  ƒ Z e j d ƒ d( e d „ ƒ Z e j d ƒ d( d „ ƒ Z d( d „ Z e j d ƒ d „  ƒ Z e j d ƒ d( d „ ƒ Z e j d ƒ d „  ƒ Z e j d ƒ d „  ƒ Z e d „ Z e j d ƒ d „  ƒ Z d „  Z d „  Z d( d( d( d „ Z d  „  d! „  d( d" „ Z e j  ƒ  d# „ Z! d$ „  Z" e j d% ƒ d& „  ƒ Z# e e j$ d' „  ƒ ƒ Z% RS()   c         C   sm   | |  _  |  j ƒ  g  |  _ t |  ƒ |  _ t |  ƒ |  _ t j j	 j
 j | ƒ |  _ |  j ƒ  |  j ƒ  d  S(   N(   t   projectt   _init_resource_observert   cache_observerst   _ModuleCachet   module_cachet   _ExtensionCachet   extension_cachet   ropet   baset   oit
   objectinfot   ObjectInfoManagert   object_infot   _init_python_filest   _init_automatic_soa(   t   selfR	   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyt   __init__   s    	
	
c         C   sY   d  |  _ |  j j j d d  ƒ } | d  k	 rU t j j j ƒ  |  _ |  j j	 | ƒ n  d  S(   Nt   python_files(
   t   Nonet   python_matcherR	   t   prefst   getR   R   t	   resourcest   _ResourceMatchert   set_patterns(   R   t   patterns(    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR   !   s
    	c         C   s\   |  j  } t j j j d | d | d | ƒ } t j j j | ƒ |  _ |  j j |  j ƒ d  S(   Nt   changedt   movedt   removed(	   t   _invalidate_resource_cacheR   R   t   resourceobservert   ResourceObservert   FilteredResourceObservert   observerR	   t   add_observer(   R   t   callbackR*   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR
   (   s
    	c         C   sN   |  j  s d  S|  j } t j j j d | d | d | ƒ } |  j j | ƒ d  S(   NR#   R$   R%   (   t   automatic_soat   _file_changed_for_soaR   R   R'   R(   R	   R+   (   R   R,   R*   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR   0   s    		c         C   s.   |  j  j j d d  ƒ } |  j  j j d | ƒ S(   Nt   automatic_soiR-   (   R	   R   R   R   (   R   t   auto_soa(    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR-   8   s    c         C   s;   |  j  j j | ƒ } | d  k	 r7 t |  j  | | ƒ n  d  S(   N(   R	   t   historyt   contents_before_current_changeR   t   perform_soa_on_changed_scopes(   R   t   resourcet   new_resourcet   old_contents(    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR.   =   s    	c         C   s?   | j  ƒ  r t S|  j d  k r/ | j j d ƒ S|  j j | ƒ S(   Ns   .py(   t	   is_foldert   FalseR   R   t   namet   endswitht
   does_match(   R   R4   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyt   is_python_fileC   s
    s    Use `project.get_module` insteadc         C   s   |  j  j | | ƒ S(   s-   Returns a `PyObject` if the module was found.(   R	   t
   get_module(   R   R9   t   folder(    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR=   J   s    c         C   sj   i  } x] |  j  D]R } | j | d ƒ r | t | ƒ d } d | k rb |  j | ƒ | | <qb q q W| S(   Nt   .i   (   t   extension_modulest
   startswitht   lent   builtin_module(   R   t   modnamet   resultt	   extensionR9   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyt   _builtin_submodulesO   s    c         C   s   |  j  j | ƒ S(   N(   R   t   get_pymodule(   R   R9   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyRC   X   s    s)   Use `project.get_relative_module` insteadc         C   s   |  j  j | | | ƒ S(   N(   R	   t   get_relative_module(   R   R9   R>   t   level(    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyRI   [   s    s(   Use `libutils.get_string_module` insteadc         C   s   t  |  | | d | ƒS(   sí   Returns a `PyObject` object for the given code

        If `force_errors` is `True`, `exceptions.ModuleSyntaxError` is
        raised if module has syntax errors.  This overrides
        ``ignore_syntax_errors`` project config.

        t   force_errors(   R   (   R   t   codeR4   RK   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyt   get_string_module_   s    	s'   Use `libutils.get_string_scope` insteadc         C   s   t  j j j | | ƒ S(   s+   Returns a `Scope` object for the given code(   R   R   t   libutilst   get_string_scope(   R   RL   R4   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyRO   j   s    c         C   s"   x |  j  D] } | | ƒ q
 Wd  S(   N(   R   (   R   R4   R5   R*   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR&   o   s    s-   Use `project.get_python_path_folders` insteadc         C   s   |  j  j ƒ  S(   N(   R	   t   get_python_path_folders(   R   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyRP   s   s    s!   Use `project.find_module` insteadc         C   s   |  j  j | | ƒ S(   sj   Returns a resource corresponding to the given module

        returns None if it can not be found
        (   R	   t   find_module(   R   RD   R>   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyRQ   w   s    s*   Use `project.find_relative_module` insteadc         C   s   |  j  j | | | ƒ S(   N(   R	   t   find_relative_module(   R   RD   R>   RJ   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyRR      s    s(   Use `project.get_source_folders` insteadc         C   s   |  j  j ƒ  S(   s   Returns project source folders(   R	   t   get_source_folders(   R   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyRS   ˆ   s    c         C   s   |  j  j | | ƒ S(   N(   R   RH   (   R   R4   RK   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyt   resource_to_pyobject   s    s&   Use `project.get_python_files` insteadc         C   s   |  j  j ƒ  S(   s1   Returns all python files available in the project(   R	   t   get_python_files(   R   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyRU      s    c         C   s1   | j  d ƒ r) | j d ƒ j ƒ  r) t St Sd  S(   Ns   __init__.py(   t	   has_childt	   get_childR7   t   TrueR8   (   R   R>   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyt   _is_package•   s    c         C   sž   x* | j  ƒ  D] } |  j | ƒ r | g Sq Wg  } x7 | j ƒ  D]) } | j j d ƒ r@ | j | ƒ Pq@ q@ Wx* | j  ƒ  D] } | j |  j | ƒ ƒ qz W| S(   Ns   .py(   t   get_foldersRY   t	   get_filesR9   R:   t   appendt   extendt   _find_source_folders(   R   R>   R4   RE   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR^   œ   s    c         C   s“   |  j  j j d t ƒ } |  j  j j d | ƒ } |  j j } | sK d } n  t j j	 j
 j |  | | | | | ƒ } | j |  j j ƒ | j ƒ  | S(   s‚   Run `resource` module

        Returns a `rope.base.oi.doa.PythonFileRunner` object for
        controlling the process.

        t   perform_doit   perform_doaN(   R	   R   R   RX   R   t   doa_data_receivedR   R   R   R   t   doat   PythonFileRunnert   add_finishing_observerR   t   forget_all_datat   run(   R   R4   t   argst   stdint   stdoutR`   t   receivert   runner(    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyt
   run_module©   s    	
c         C   s   t  S(   N(   RX   (   t   py(    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyt   <lambda>»   t    c         C   s   t  S(   N(   RX   (   Rm   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyRn   ¼   Ro   c         C   si   | d k r' |  j j j d d ƒ } n  |  j | ƒ } |  j j ƒ  t j j	 j
 j |  | | | | ƒ d S(   s×  Analyze `resource` module for static object inference

        This function forces rope to analyze this module to collect
        information about function calls.  `should_analyze` is a
        function that is called with a `PyDefinedObject` argument.  If
        it returns `True` the element is analyzed.  If it is `None` or
        returns `False` the element is not analyzed.

        `search_subscopes` is like `should_analyze`; The difference is
        that if it returns `False` the sub-scopes are all ignored.
        That is it is assumed that `should_analyze` returns `False`
        for all of its subscopes.

        `followed_calls` override the value of ``soa_followed_calls``
        project config.
        t   soa_followed_callsi    N(   R   R	   R   R   RT   R   Re   R   R   R   t   soat   analyze_module(   R   R4   t   should_analyzet   search_subscopest   followed_callst   pymodule(    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyRr   »   s    c         C   s   t  j d t d d ƒg  S(   Ns$   `PyCore.get_classes()` is deprecatedt
   stackleveli   (   t   warningst   warnt   DeprecationWarning(   R   t   task_handle(    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyt   get_classesÔ   s    	c         C   s   t  |  j ƒ t  |  j ƒ S(   N(   t   strR   R   (   R   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyt   __str__Ù   s    s   Use `libutils.modname` insteadc         C   s   t  j j j | ƒ S(   N(   R   R   RN   RD   (   R   R4   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyRD   Ü   s    c         C   sP   t  |  j j j d g  ƒ ƒ } |  j j j d t ƒ rL | j t j ƒ  ƒ n  | S(   NR@   t   import_dynload_stdmods(   t   setR	   R   R   R8   t   updateR   t   dynload_modules(   R   RE   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR@   à   s    N(&   t   __name__t
   __module__R   R   R
   R   t   propertyR-   R   R.   R<   R   t
   deprecatedR=   RG   RC   RI   R8   RM   RO   R&   RP   RQ   RR   RS   RT   RU   RY   R^   Rl   Rr   R   t   NullTaskHandleR|   R~   RD   t   cacheitR@   (    (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR      sD   	
							
				R   c           B   s8   e  Z d  „  Z d „  Z e d „ Z d „  Z d „  Z RS(   c         C   s;   | |  _  i  |  _ |  j  j j |  j ƒ |  j  j |  _ d  S(   N(   t   pycoret
   module_mapR   R\   t   _invalidate_resourceR*   (   R   R‰   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR   ë   s    		c         C   s:   | |  j  k r6 |  j ƒ  |  j j | ƒ |  j  | =n  d  S(   N(   RŠ   Re   R*   t   remove_resource(   R   R4   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR‹   ñ   s    
c         C   sŠ   | |  j  k r |  j  | S| j ƒ  rA t |  j | d | ƒ} n( t |  j d | d | ƒ} | j ri | S| |  j  | <|  j j | ƒ | S(   NRK   R4   (   RŠ   R7   R   R‰   R   t
   has_errorsR*   t   add_resource(   R   R4   RK   RE   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyRH   ÷   s    		c         C   s(   x! |  j  j ƒ  D] } | j ƒ  q Wd  S(   N(   RŠ   t   valuest   _forget_concluded_data(   R   Rv   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyRe     s    c         C   s   d t  |  j ƒ S(   Ns   PyCore caches %d PyModules
(   RB   RŠ   (   R   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR~   
  s    (   Rƒ   R„   R   R‹   R8   RH   Re   R~   (    (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR   é   s
   			R   c           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   | |  _  i  |  _ d  S(   N(   R‰   t
   extensions(   R   R‰   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR     s    	c         C   si   | d k r t  j  S|  j j } | |  j k rY | | k rY t  j | |  j ƒ |  j | <n  |  j j | ƒ S(   Nt   __builtin__(   R    R‰   R@   R‘   t   BuiltinModuleR   (   R   R9   t   allowed(    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyRH     s    (   Rƒ   R„   R   RH   (    (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR     s   	c            s’   |  j  } | j ƒ  rŽ | j | ƒ rŽ yP | j ƒ  } t | | ƒ ‰  ‡  f d †  } ‡  f d †  } | j | | | ƒ WqŽ t j k
 rŠ qŽ Xn  d  S(   Nc            s(   |  j  ƒ  } ˆ  j | j ƒ  | j ƒ  ƒ S(   N(   t	   get_scopet
   is_changedt	   get_startt   get_end(   t	   pydefinedt   scope(   t   detector(    s/   lib/python2.7/site-packages/rope/base/pycore.pyRt   %  s    c            s4   |  j  ƒ  } | j ƒ  } | j ƒ  } ˆ  j | | ƒ S(   N(   R•   R—   R˜   t   consume_changes(   R™   Rš   t   startt   end(   R›   (    s/   lib/python2.7/site-packages/rope/base/pycore.pyRs   )  s    (   R‰   t   existsR<   t   readt   _TextChangeDetectorRr   R   t   ModuleSyntaxError(   R	   R4   R6   R‰   t   new_contentsRt   Rs   (    (   R›   s/   lib/python2.7/site-packages/rope/base/pycore.pyR3     s    	R¡   c           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s    | |  _  | |  _ |  j ƒ  d  S(   N(   t   oldt   newt
   _set_diffs(   R   R¤   R¥   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR   5  s    		c         C   sœ   t  j ƒ  } g  |  _ d } xz | j |  j j t ƒ |  j j t ƒ ƒ D]N } | j d ƒ rh | d 7} qF | j d ƒ rF | d 7} |  j j	 | ƒ qF qF Wd  S(   Ni    t    i   t   -(
   t   difflibt   Differt   linest   compareR¤   t
   splitlinesRX   R¥   RA   R\   (   R   t   differt   linenot   line(    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR¦   :  s    	
c         C   s,   |  j  | | ƒ \ } } | | k  r( t St S(   s~   Tell whether any of start till end lines have changed

        The end points are inclusive and indices start from 1.
        (   t   _get_changedRX   R8   (   R   R   Rž   t   leftt   right(    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR–   F  s    c         C   s>   |  j  | | ƒ \ } } | | k  r4 |  j | | 5n  | | k  S(   s5   Clear the changed status of lines from start till end(   R±   R«   (   R   R   Rž   R²   R³   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyRœ   P  s    c         C   s4   t  j |  j | ƒ } t  j |  j | ƒ } | | f S(   N(   t   bisectt   bisect_leftR«   t   bisect_right(   R   R   Rž   R²   R³   (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR±   W  s    (   Rƒ   R„   R   R¦   R–   Rœ   R±   (    (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyR¡   3  s
   			
	(   R´   R©   t   sysRx   t   rope.base.libutilsR   t   rope.base.resourceobservert   rope.base.resourcest   rope.base.oi.doat   rope.base.oi.objectinfot   rope.base.oi.soat	   rope.baseR    R   R   R   R   t   rope.base.exceptionsR   t   rope.base.pyobjectsdefR   R   t   objectR   R   R   R3   R¡   (    (    (    s/   lib/python2.7/site-packages/rope/base/pycore.pyt   <module>   s*   Ô%	