ó
î%![c           @   sÆ   d  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	 e j e j f d
 „  ƒ  YZ e d k rÂ e j ƒ  n  d S(   s3   tests for the astroid variable lookup capabilities
iÿÿÿÿN(   t   builder(   t
   exceptions(   t   nodes(   t   scoped_nodes(   t   util(   t	   resourcest
   LookupTestc           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 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sV   t  t |  ƒ j ƒ  t j d d ƒ |  _ t j d d ƒ |  _ t j d d ƒ |  _ d  S(   Ns   data/module.pys   data.modules   data/module2.pys   data.module2s   data/nonregr.pys   data.nonregr(   t   superR   t   setUpR   t
   build_filet   modulet   module2t   nonregr(   t   self(    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyR      s    c   	      C   s¾  d } t  j | t ƒ } t | j t j ƒ ƒ } |  j | j d ƒ t	 j
 d k  r¬ |  j t | j d ƒ d ƒ d ƒ |  j t | j d ƒ d ƒ d ƒ | j d d } nW |  j t | j d ƒ d ƒ d ƒ |  j t | j d ƒ d ƒ d ƒ | j d d } | j d ƒ d } |  j t | ƒ d ƒ |  j | j d ƒ | j ƒ  } t | ƒ } |  j | j d ƒ |  j t t j t | ƒ ƒ | j d	 d } |  j t | j d
 ƒ d ƒ d ƒ d  S(   Ns§   
            l = [a
                 for a,b in list]

            a = 1
            b = a
            a = None

            def func():
                c = 1
        i   i   i    t   bi   t   ai   t   funct   c(   i   i    (   R    t   parset   __name__t   nextt   nodes_of_classR   t   Namet   assertEqualt   linenot   syst   version_infot   lent   lookupt   localst   infert   valuet   assertRaisest   StopIterationt	   functoolst   partial(	   R   t   codet   astroidR   R   t   stmtst   b_infert   b_valueR   (    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt
   test_limit   s(    ####c         C   sÆ   t  j d t ƒ } t | j d ƒ ƒ } |  j | j ƒ t | j d ƒ ƒ } |  j | t j	 ƒ |  j
 | j d ƒ |  j t j t j t | j d ƒ ƒ ƒ |  j
 t t |  j j d ƒ ƒ ƒ d ƒ d  S(   Nt   passt   Nonet   objectt   YOAAt	   enumeratei   (   R    R   R   R   t   ilookupt   assertIsNoneR   t   assertIsInstanceR   t   ClassDefR   t   nameR    R   t   InferenceErrorR"   R#   R   t   listR   (   R   R%   t   nonet   obj(    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_moduleB   s    c         C   sr   d } t  j | t ƒ } | j d d } | j d d } t | j t j ƒ ƒ } |  j t | j	 ƒ  ƒ | ƒ d  S(   Nsa   
            class A:
                pass

            class A(A):
                pass
        t   Ai    i   (
   R    R   R   R   R   R   R   R   R   R   (   R   R$   R%   t   cls1t   cls2R3   (    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_class_ancestor_nameP   s    c         C   s“   |  j  d d } t | j d ƒ ƒ } |  j t | t j ƒ | ƒ t | j d ƒ ƒ } |  j | j ƒ |  j	 t
 j t j t | j d ƒ ƒ ƒ d  S(   Nt   YOUPIt   methodt   MY_DICTR+   R-   (   R
   R   R/   t
   assertTruet
   isinstanceR   t   DictR0   R   R    R   R4   R"   R#   (   R   R>   t   my_dictR6   (    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_method_   s    c         C   sq   |  j  d } t | j d ƒ ƒ } |  j t | t j ƒ | j ƒ |  j | j	 d ƒ |  j | j
 ƒ  j	 d ƒ d  S(   Nt
   make_classt   baset   YOs   data.module(   R   R   R/   R@   RA   R   R2   t	   __class__R   R3   t   root(   R   RE   RF   (    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt#   test_function_argument_with_defaulth   s
    c         C   sÁ   |  j  d } t | j d ƒ ƒ } |  j | t j ƒ t | j d ƒ ƒ } |  j | j ƒ t | j d ƒ ƒ } |  j | t j ƒ |  j	 | j
 d ƒ |  j t j t j t | j d ƒ ƒ ƒ d  S(   NR=   R?   R+   R,   R-   (   R
   R   R/   R1   R   RB   R0   R   R2   R   R3   R    R   R4   R"   R#   (   R   t   klassRC   R6   R7   (    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt
   test_classo   s    c         C   s7   t  |  j d j d ƒ ƒ } |  j | d j d ƒ d  S(   Nt   Ccct   Dddi    (   R5   R   R/   R   R3   (   R   t   ddd(    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_inner_classes{   s    c         C   s¿   t  j d t ƒ } g  | j t j ƒ D] } | j d k r% | ^ q% } |  j t | d j	 d ƒ d ƒ d ƒ |  j t | d j	 d ƒ d ƒ d ƒ |  j t | d j	 d ƒ d ƒ d ƒ d  S(   NsŒ   
            x = 10
            for x in range(5):
                print (x)

            if x > 0:
                print ('#' * x)
        t   xi    i   i   (
   R    R   R   R   R   R   R3   R   R   R   (   R   R%   t   nt   xnames(    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_loopvar_hiding   s    4''c         C   s7  t  j d t ƒ } g  | j t j ƒ D] } | j d k r% | ^ q% } |  j t | d j	 d ƒ d ƒ d ƒ |  j | d j	 d ƒ d d j
 d ƒ |  j t | d j	 d ƒ d ƒ d ƒ |  j | d j	 d ƒ d d j
 d ƒ |  j t | d j	 d ƒ d ƒ d ƒ |  j | d j	 d ƒ d d j
 d ƒ d  S(   Ns–   
            print ([ i for i in range(10) ])
            print ([ i for i in range(10) ])
            print ( list( i for i in range(10) ) )
        t   ii    i   i   i   i   (   R    R   R   R   R   R   R3   R   R   R   R   (   R   R%   RR   RS   (    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_list_comps   s    4'('('c         C   sg   t  j d ƒ } | j d j } t j d k  rM |  j | j ƒ  t j	 g ƒ n |  j
 t j | j ƒ d S(   s"   test the list comprehension targetsH   
            ten = [ var for var in range(10) ]
            var
        i   i   i    N(   i   i    (   R    R   t   bodyR   R   R   R   t   inferredR   t   UninferableR    R   t   NameInferenceError(   R   R%   t   var(    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_list_comp_target   s    	c         C   sº  t  j d t ƒ } g  | j t j ƒ D] } | j d k r% | ^ q% } |  j t | d j	 d ƒ d ƒ d ƒ |  j | d j	 d ƒ d d j
 d ƒ |  j t | d j	 d ƒ d ƒ d ƒ |  j | d j	 d ƒ d d j
 d ƒ g  | j t j ƒ D] } | j d k r÷ | ^ q÷ } |  j t | d j	 d ƒ d ƒ d ƒ |  j | d j	 d ƒ d d j
 d ƒ |  j t | d j	 d ƒ d ƒ d ƒ |  j | d j	 d ƒ d d j
 d ƒ d  S(   Ns   
            print ({ i: j for i in range(10) for j in range(10) })
            print ({ i: j for i in range(10) for j in range(10) })
        RU   i    i   i   i   t   j(   R    R   R   R   R   R   R3   R   R   R   R   (   R   R%   RR   RS   (    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_dict_comps©   s    4'('(4'('c         C   sè   t  j d t ƒ } g  | j t j ƒ D] } | j d k r% | ^ q% } |  j t | d j	 d ƒ d ƒ d ƒ |  j | d j	 d ƒ d d j
 d ƒ |  j t | d j	 d ƒ d ƒ d ƒ |  j | d j	 d ƒ d d j
 d ƒ d  S(   Nsc   
            print ({ i for i in range(10) })
            print ({ i for i in range(10) })
        RU   i    i   i   i   (   R    R   R   R   R   R   R3   R   R   R   R   (   R   R%   RR   RS   (    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_set_compsº   s    4'('c         C   s9   t  j d ƒ } | j d j } |  j t j | j ƒ d  S(   NsH   
            ten = { var for var in range(10) }
            var
        i   (   R    R   RW   R   R    R   RZ   RX   (   R   R%   R[   (    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_set_comp_closureÅ   s    	c         C   së   t  j d ƒ } | j d j j } | j j ƒ  d } t j d
 k  rg |  j	 | j
 d ƒ d t j ƒ n  |  j	 | j
 d ƒ d t j ƒ |  j	 | j
 d ƒ d t j ƒ |  j	 | j
 d ƒ d t j ƒ |  j	 | j
 d	 ƒ d t j ƒ d  S(   Ns   
            def count():
                "test"
                yield 0

            iterer = count()
            num = iterer.next()
        i   i    i   R   t   __next__t   sendt   throwt   close(   i   i    (   R    R   RW   R   R   t   exprRX   R   R   R1   t   getattrR   t   FunctionDef(   R   t   treet	   next_nodet   gener(    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_generator_attributesÍ   s    	#   c         C   s½   d } t  j | t ƒ } t | d j ƒ  ƒ } |  j | j d ƒ ƒ t | d j ƒ  ƒ } |  j | j d ƒ ƒ |  j | d j d ƒ ƒ t | d j ƒ  ƒ } |  j t j	 | j d ƒ d  S(   NsÜ   
            class Pouet:
                __name__ = "pouet"
            p1 = Pouet()

            class PouetPouet(Pouet): pass
            p2 = Pouet()

            class NoName: pass
            p3 = NoName()
        t   p1R   t   p2t   NoNamet   p3(
   R    R   R   R   R   R@   Rf   R    R   t   AttributeInferenceError(   R   R$   R%   Rl   Rm   Ro   (    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_explicit___name__à   s    c         C   sq   t  j d d ƒ } g  | j t j ƒ D] } | j d k r% | ^ q% d } |  j t | j d ƒ d ƒ d ƒ d  S(   Nsš   
        def initialize(linter):
            """initialize linter with checkers in this package """
            package_load(linter, __path__[0])
        s   data.__init__t   __path__i    i   (	   R    R   R   R   R   R3   R   R   R   (   R   R%   RR   t   path(    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_function_module_specialõ   s    8c         C   s˜   |  j  t j d ƒ d d ƒ t j d ƒ d } |  j  t | ƒ d ƒ |  j | d t j ƒ |  j  | d j d ƒ |  j | d t j	 d ƒ j
 ƒ d  S(   Nt   __dict__i   t   inti    (    (   R   R   t   builtin_lookupR   R1   R   R2   R3   t   assertIst   const_factoryt   _proxied(   R   t   intstmts(    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_builtin_lookupþ   s    c         C   s}   d } t  j | t ƒ j d } | j ƒ  } t | ƒ } |  j | t j ƒ |  j	 | j
 d ƒ |  j t t j t | ƒ ƒ d  S(   NsN  
            def decorator(value):
                def wrapper(function):
                    return function
                return wrapper

            class foo:
                member = 10  #@

                @decorator(member) #This will cause pylint to complain
                def test(self):
                    pass
        i    i
   (   R    t   extract_nodeR   t   targetsR   R   R1   R   t   ConstR   R   R    R!   R"   R#   (   R   R$   t   membert   itR7   (    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_decorator_arguments_lookup  s    c         C   sc   d } t  j | t ƒ } | j ƒ  } t | ƒ } |  j | t j ƒ |  j t	 t
 j t | ƒ ƒ d  S(   Ns¿   
            class FileA:
                def decorator(bla):
                    return bla

                @__(decorator)
                def funcA():
                    return 4
        (   R    R}   R   R   R   R1   R   Rg   R    R!   R"   R#   (   R   R$   t   decnameR   R7   (    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt"   test_inner_decorator_member_lookup  s    	c         C   sn   d } t  j | t ƒ } | d d j d ƒ } t | ƒ } |  j | t j ƒ |  j t	 t
 j t | ƒ ƒ d  S(   Ns  
            class FileA:
                @staticmethod
                def funcA():
                    return 4


            class Test:
                FileA = [1,2,3]

                def __init__(self):
                    print (FileA.funcA())
        t   Testt   __init__t   FileA(   R    R   R   R/   R   R1   R   R2   R    R!   R"   R#   (   R   R$   R%   R   R7   (    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_static_method_lookup,  s    c         C   sv   d } t  j | t ƒ } | d j d ƒ d } |  j t | ƒ d ƒ | d j d ƒ d } |  j t | ƒ d ƒ d  S(   Nsâ   
            def run2():
                f = Frobble()

            class Frobble:
                pass
            Frobble.mumble = True

            del Frobble

            def run1():
                f = Frobble()
        t   run2t   Frobbeli   i    t   run1(   R    R   R   R   R   R   (   R   R$   R%   R&   (    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   test_global_delete@  s    (   R   t
   __module__R   R)   R8   R<   RD   RJ   RL   RP   RT   RV   R\   R^   R_   R`   Rk   Rq   Rt   R|   R‚   R„   Rˆ   RŒ   (    (    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyR      s,   		#																						t   __main__(   t   __doc__R"   R   t   unittestR%   R    R   R   R   R   t   astroid.testsR   t   SysPathSetupt   TestCaseR   R   t   main(    (    (    s<   lib/python2.7/site-packages/astroid/tests/unittest_lookup.pyt   <module>
   s   ÿ ?