ó
î%![c           @  s¿   d  d l  m 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	 e j
 d d „ ƒ Z d e j f d	 „  ƒ  YZ e d
 k r» e j ƒ  n  d S(   iÿÿÿÿ(   t   print_functionN(   t   builder(   t   nodes(   t   parse(   t
   transformsc         c  s7   |  j  | | | ƒ z	 d  VWd  |  j | | | ƒ Xd  S(   N(   t   register_transformt   unregister_transform(   t   managert   nodet	   transformt	   predicate(    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt   add_transform   s    	t   TestTransformsc           B  sb   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z RS(
   c         C  s   t  j ƒ  |  _ d  S(   N(   R   t   TransformVisitort   transformer(   t   self(    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt   setUp   s    c         C  s"   t  | d t ƒ} |  j j | ƒ S(   Nt   apply_transforms(   R   t   FalseR   t   visit(   R   t   codet   module(    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt   parse_transform"   s    c         C  s†   d „  } |  j  j t j | ƒ |  j d ƒ } |  j | j d t j ƒ |  j | j d j t j	 ƒ |  j
 | j d j j d ƒ d  S(   Nc         S  s   t  |  j ƒ  ƒ } | S(   N(   t   nextt   infer(   R   t   inferred(    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt   transform_call'   s    s9   
        def test(): return 42
        test() #@
        i   i*   (   R   R   R   t   CallR   t   assertIsInstancet   bodyt   Exprt   valuet   Constt   assertEqual(   R   R   R   (    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt    test_function_inlining_transform&   s    		c         C  s¢   d „  } d „  } |  j  j t j | ƒ |  j  j t j | ƒ |  j d ƒ } |  j | j d t j ƒ |  j | j d j	 t j
 ƒ |  j | j d j	 j	 ƒ d  S(   Nc         S  s/   |  j  d \ } } t j |  j j | j k  ƒ S(   Ni    (   t   opsR   t   const_factoryt   leftR   (   R   t   _t   right(    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt   transform_compare;   s    c         S  s   t  |  j ƒ  ƒ S(   N(   R   R   (   R   (    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt   transform_nameB   s    s5   
        a = 42
        b = 24
        a < b
        i   (   R   R   R   t   Comparet   NameR   R   R   R   R   R    t   assertFalse(   R   R(   R)   R   (    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt-   test_recursive_transforms_into_astroid_fields8   s    			c         C  s   d „  } |  j  j t j | ƒ |  j d ƒ } | j d } |  j t | j ƒ d ƒ |  j | j d t j	 ƒ |  j | j d j
 ƒ  d ƒ d  S(   Nc         S  sS   t  j ƒ  } t  j ƒ  } d | _ | g | _ t  j d ƒ | _ |  j j | ƒ d  S(   NR   i*   (	   R   t   Assignt
   AssignNamet   namet   targetsR$   R   R   t   append(   R   t   assignR0   (    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt   transform_functionT   s    	s.   
        def test():
            pass
        i    i   i   s
   value = 42(   R   R   R   t   FunctionDefR   R   R!   t   lenR   R.   t	   as_string(   R   R4   R   t   func(    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt   test_transform_patches_localsS   s    		c         C  s  d „  } d „  } |  j  j t j | | ƒ |  j d ƒ } | j d } |  j | d t j ƒ |  j | d j t j	 ƒ |  j
 | d j j d ƒ |  j | d t j ƒ |  j | d j t j ƒ |  j | d t j ƒ |  j | d j t j	 ƒ |  j
 | d j j d ƒ d  S(	   Nc         S  s   t  |  j ƒ  ƒ } | S(   N(   R   R   (   R   R   (    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyR   j   s    c         S  s   |  j  j j d ƒ S(   Nt   inlineme(   R8   R0   t
   startswith(   R   (    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt   should_inlinen   s    sß   
        def inlineme_1():
            return 24
        def dont_inline_me():
            return 42
        def inlineme_2():
            return 2
        inlineme_1()
        dont_inline_me()
        inlineme_2()
        iýÿÿÿi    i   i   i   (   R   R   R   R   R   R   R   R   R   R    R!   (   R   R   R<   R   t   values(    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt   test_predicatesi   s     		
	c         C  s±   d „  } t  j } t | t j | ƒ  t  j d ƒ } Wd  QX| d } | j d } | j d } |  j | t j ƒ |  j	 | j
 d ƒ |  j | t j ƒ |  j	 | j
 d ƒ d  S(   Nc         S  s^   |  j  rZ xN |  j  j D]= } t | j ƒ  ƒ } | j ƒ  d k r t |  j |  ƒ ƒ Sq Wn  d  S(   Ns   abc.abstractmethod(   t
   decoratorsR   R   R   t   qnamet   infer_call_resultt   None(   R   t	   decoratorR   (    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyR4      s    	s-  
            import abc
            from abc import abstractmethod

            class A(object):
                @abc.abstractmethod
                def ala(self):
                    return 24

                @abstractmethod
                def bala(self):
                    return 42
            t   Ai    i   i   i*   (   R   t   MANAGERR   R   R5   R   R   R   R    R!   R   (   R   R4   R   R   t   clst   alat   bala(    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt   test_transforms_are_separatedŠ   s    		
c         C  s¹   d „  } t  j } d „  } t | t j | | ƒ   t  j ƒ  } | j t ƒ } Wd  QX| d } |  j t	 | j
 j
 ƒ d ƒ |  j | j
 j
 d t j ƒ |  j | j
 j
 d j d ƒ d  S(   Nc         S  s(   t  j ƒ  } d | _ | g |  j _ |  S(   NR   (   R   R/   R0   t   args(   R   R0   (    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyR4   ²   s    	c         S  s   |  j  ƒ  j d k S(   Nt   time(   t   rootR0   (   R   (    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt   <lambda>¹   s    t   asctimei   i    R   (   R   RE   R   R   R5   t   AstroidBuildert   module_buildRK   R!   R6   RJ   R   R/   R0   (   R   R4   R   R
   t   builder_instanceR   RN   (    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt.   test_transforms_are_called_for_builtin_modules°   s    			
c         C  sm   d „  } t  j } t | t j | ƒ & t  j d t ƒ } | j d ƒ } Wd  QX|  j | j	 d t j ƒ d  S(   Nc         S  s   t  j d ƒ S(   Ni*   (   R   R$   (   R   (    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyR4   Å   s    R   s   def test(): passi    (
   R   RE   R   R   R5   RO   R   t   string_buildR   R   (   R   R4   R   t   astroid_builderR   (    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt   test_builder_apply_transformsÄ   s    		c         C  s0   d „  } |  j  j t j | ƒ |  j d ƒ d  S(   Nc         S  s   |  j  d ƒ r |  S|  S(   Ns   django.db.models.base.Model(   t   is_subtype_of(   RF   (    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt   transform_classÔ   s    sJ  
            # Change environ to automatically call putenv() if it exists
            import os
            putenv = os.putenv
            try:
                # This will fail if there's no putenv
                putenv
            except NameError:
                pass
            else:
                import UserDict
        (   R   R   R   t   ClassDefR   (   R   RW   (    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt'   test_transform_crashes_on_is_subtype_ofÐ   s
    	(   t   __name__t
   __module__R   R   R"   R-   R9   R>   RI   RR   RU   RY   (    (    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyR      s   						!	&		t   __main__(   t
   __future__R    t
   contextlibRK   t   unittestt   astroidR   R   R   R   t   contextmanagerRB   R   t   TestCaseR   RZ   t   main(    (    (    s@   lib/python2.7/site-packages/astroid/tests/unittest_transforms.pyt   <module>   s   Í