ó
î%![c           @   sÆ   d  d l  m Z d  d l Z d  d l m Z d  d l m Z m Z m Z m	 Z	 m
 Z
 d  d l m Z m Z d  d l m Z m Z d  d l m Z d e j f d	 „  ƒ  YZ e d
 k rÂ e j ƒ  n  d S(   iÿÿÿÿ(   t   dedentN(   t   nodes(   t   Assignt   Exprt	   YieldFromt   Namet   Const(   t   AstroidBuildert   extract_node(   t   ClassDeft   FunctionDef(   t   require_versiont	   Python3TCc           B   s  e  Z e d  „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z	 e d ƒ d „  ƒ Z
 e d ƒ d „  ƒ Z e d ƒ d	 „  ƒ Z e d ƒ d
 „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z RS(   c         C   s   t  ƒ  |  _ d  S(   N(   R   t   builder(   t   cls(    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt
   setUpClass   s    s   3.4c         C   sb   |  j  j d d d ƒ } t t t | j ƒ  ƒ j ƒ  ƒ j ƒ  ƒ } |  j t | j ƒ  t ƒ ƒ d  S(   Ns   *a, b = [1, 2, 3]t   test(   R   t   string_buildt   nextt   get_childrent
   assertTruet
   isinstancet   assign_typeR   (   t   selft   astroidt   node(    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_starred_notation   s    *c         C   s…   t  d ƒ } |  j j | ƒ } | j d } |  j | t ƒ | j d } |  j | t ƒ |  j | j t ƒ |  j	 | j
 ƒ  d ƒ d  S(   NsA   
        def func():
            yield from iter([1, 2])
        i    s   yield from iter([1, 2])(   R    R   R   t   bodyt   assertIsInstanceR
   R   t   valueR   t   assertEqualt	   as_string(   R   R   R   t   funct   yieldfrom_stmt(    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_yield_from    s    	c         C   sR   t  d ƒ } |  j j | ƒ } | j d } |  j | t ƒ |  j | j ƒ  ƒ d  S(   NsA   
        def func():
            yield from iter([1, 2])
        i    (   R    R   R   R   R   R
   R   t   is_generator(   R   R   R   R    (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_yield_from_is_generator0   s    	c         C   sQ   t  d ƒ } |  j j | ƒ } | j d } |  j | j ƒ  j ƒ  | j ƒ  ƒ d  S(   Nsh   
        def func():
            yield from iter([1, 2])
            value = yield from other()
        i    (   R    R   R   R   R   R   t   strip(   R   R   R   R    (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_yield_from_as_string;   s
    	c         C   sR   |  j  j d ƒ } | j d } | j ƒ  } |  j | t ƒ |  j | j d ƒ d  S(   Ns    class Test(metaclass=type): passi    t   type(   R   R   R   t	   metaclassR   R	   R   t   name(   R   R   t   klassR(   (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_simple_metaclassH   s
    c         C   s6   |  j  j d ƒ } | j d } |  j | j ƒ  ƒ d  S(   Ns   class Test(metaclass=typ): passi    (   R   R   R   t   assertFalseR(   (   R   R   R*   (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_metaclass_errorQ   s    c         C   sX   |  j  j t d ƒ ƒ } | j d } | j ƒ  } |  j | t ƒ |  j | j d ƒ d  S(   NsL   
        from abc import ABCMeta
        class Test(metaclass=ABCMeta): passi   t   ABCMeta(	   R   R   R    R   R(   R   R	   R   R)   (   R   R   R*   R(   (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_metaclass_importedW   s    c         C   sR   |  j  j d ƒ } | j d } | j ƒ  } |  j | t ƒ |  j | j d ƒ d  S(   Ns,   class Test(magic=None, metaclass=type): passi    R'   (   R   R   R   R(   R   R	   R   R)   (   R   R   R*   R(   (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt    test_metaclass_multiple_keywordsb   s
    c         C   sE   t  d ƒ } |  j j | ƒ } | j d } |  j | j ƒ  d ƒ d  S(   NsL   
        from abc import ABCMeta
        class Test(metaclass=ABCMeta): passi   s*   

class Test(metaclass=ABCMeta):
    pass
(   R    R   R   R   R   R   (   R   R   R   R*   (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_as_stringk   s    	c         C   s?   |  j  j t d ƒ ƒ } | d } | j ƒ  } |  j | ƒ d  S(   Ns`   
        class Test:
            __metaclass__ = type
        class SubTest(Test): pass
        t   SubTest(   R   R   R    R(   t   assertIsNone(   R   R   R*   R(   (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_old_syntax_worksv   s
    
c         C   s9   |  j  j t d ƒ ƒ } | d } |  j | j ƒ  ƒ d  S(   Ns|   
        # notice `ab` instead of `abc`
        from ab import ABCMeta

        class Meta(metaclass=ABCMeta): pass
        t   Meta(   R   R   R    R3   R(   (   R   R   R*   (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_metaclass_yes_leak   s    
c         C   se   |  j  j t d ƒ ƒ } | d } |  j | j ƒ | j ƒ  } |  j | t ƒ |  j | j	 d ƒ d  S(   Nsw   
        from abc import ABCMeta
        class Test(metaclass=ABCMeta): pass
        class SubTest(Test): pass
        R2   R.   (
   R   R   R    R   t   newstyleR(   R   R	   R   R)   (   R   R   R*   R(   (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_parent_metaclassŒ   s    
c         C   s—   |  j  j t d ƒ ƒ } i d d 6d d 6} xd | j ƒ  D]V \ } } xG | D]? } | | } | j ƒ  } |  j | t ƒ |  j | j | ƒ qL Wq9 Wd  S(	   NsP  
        from abc import ABCMeta

        class FirstMeta(metaclass=ABCMeta): pass
        class SecondMeta(metaclass=type):
            pass

        class Simple:
            pass

        class FirstImpl(FirstMeta): pass
        class SecondImpl(FirstImpl): pass
        class ThirdImpl(Simple, SecondMeta):
            pass
        t	   FirstImplt
   SecondImplR.   t	   ThirdImplR'   (   R9   R:   (   R;   (	   R   R   R    t   itemsR(   R   R	   R   R)   (   R   R   t   classesR(   t   namesR)   t   implt   meta(    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_metaclass_ancestors™   s    

c         C   s  |  j  j t d ƒ ƒ } | d } |  j | j j t ƒ |  j | j j j d ƒ |  j | j j	 t ƒ |  j | j j	 j d ƒ |  j | j
 t ƒ |  j | j
 j d ƒ | j } |  j | j d t ƒ |  j | j d j d ƒ |  j | j d t ƒ |  j | j d j d ƒ |  j | j d t ƒ |  j | j d j ƒ |  j | j d	 ƒ |  j | j d
 ƒ |  j  j t d ƒ ƒ } | d } |  j | j j d t ƒ |  j | j j d j d ƒ |  j | j j d t ƒ |  j | j j d j d ƒ |  j | j
 ƒ d  S(   Ns~   
        def test(a: int, b: str, c: None, d, e,
                 *args: float, **kwargs: int)->int:
            pass
        R   t   floatt   inti    i   t   stri   i   i   s@   
        def test(a: int=1, b: str=2):
            pass
        (   R   R   R    R   t   argst   varargannotationR   R   R)   t   kwargannotationt   returnst   annotationsR   R3   R   (   R   R   R    t	   arguments(    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_annotation_supportµ   s4    
	
c         C   sç   |  j  j t d ƒ ƒ } | d } | j } |  j | j d t ƒ |  j | j d j d ƒ |  j | j d t ƒ |  j | j d j d ƒ |  j | j d t	 ƒ |  j
 | j d j ƒ |  j
 | j d ƒ |  j
 | j d	 ƒ d  S(
   NsN   
        def test(*, a: int, b: str, c: None, d, e):
            pass
        R   i    RC   i   RD   i   i   i   (   R   R   R    RE   R   t   kwonlyargs_annotationsR   R   R)   R   R3   R   (   R   R   R    RJ   (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt"   test_kwonlyargs_annotations_supperØ   s    
	c         C   sU   t  d ƒ } t  d ƒ } x6 | | f D]( } t | ƒ } |  j | j ƒ  | ƒ q% Wd  S(   NsC   
        def test(a, b:int=4, c=2, f:'lala'=4)->2:
            passsZ   
        def test(a:typing.Generic[T], c:typing.Any=24)->typing.Iterable:
            pass(   R    R   R   R   (   R   t   code1t   code2t   codeR    (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_annotation_as_stringé   s    		s   3.5c         C   s|   d } t  | ƒ } |  j | j ƒ  | ƒ g  | j D] \ } } | ^ q2 } |  j | d t j ƒ |  j | d t j ƒ d  S(   Ns   {'x': 1, **{'y': 2}}i    i   (   R   R   R   R<   R   R   R   t
   DictUnpack(   R   RP   R   t   keyt   _t   keys(    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_unpacking_in_dictsõ   s    "c         C   s,   d } t  | ƒ } |  j | j ƒ  | ƒ d  S(   Ns    {'x': 1, **{'y': 2, **{'z': 3}}}(   R   R   R   (   R   RP   R   (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_nested_unpacking_in_dictsþ   s    c         C   sq   t  d ƒ } x^ d d	 d
 d f D]J \ } } | j t j | ƒ ƒ } |  j | t j ƒ |  j | j | ƒ q Wd  S(   Ns   {1:2, **{2:3, 3:4}, **{5: 6}}i   i   i   i   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   t   getitemR   R   R   R   R   (   R   R   RS   t   expectedR   (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_unpacking_in_dict_getitem  s
    s   3.6c         C   s,   d } t  | ƒ } |  j | j ƒ  | ƒ d  S(   Ns   f'{greetings} {person}'(   R   R   R   (   R   RP   R   (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_format_string  s    c         C   sn   d d d	 g } xX | D]P \ } } t  | ƒ } t | j ƒ  ƒ } |  j | t j ƒ |  j | j | ƒ q Wd  S(
   Nt   10_1000iˆŠ t
   10_000_000i€–˜ t   0x_FF_FFiÿÿ  (   R\   iˆŠ (   R]   i€–˜ (   R^   iÿÿ  (   R   R   t   inferR   R   R   R   R   (   R   t   pairsR   RY   R   t   inferred(    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt#   test_underscores_in_numeral_literal  s    	c         C   s   t  d ƒ t  d ƒ t  d ƒ t  d ƒ g } t  d ƒ g } x% | D] } |  j | j d j ƒ q@ Wx% | D] } |  j | j d j ƒ qh Wd  S(   Ns=   async def f(): return __([i async for i in aiter() if i % 2])s=   async def f(): return __({i async for i in aiter() if i % 2})s=   async def f(): return __((i async for i in aiter() if i % 2))s@   async def f(): return __({i: i async for i in aiter() if i % 2})s9   async def f(): return __({i: i for i in iter() if i % 2})i    (   R   R   t
   generatorst   is_asyncR,   (   R   t   async_comprehensionst   non_async_comprehensionst   comp(    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   test_async_comprehensions  s    			s   3.7c         C   se   d d d d d d d d d	 d
 d d d g } x1 | D]) } t  | ƒ } |  j | j d j ƒ q4 Wd  S(   Ns*   [i async for i in aiter() if condition(i)]s   [await fun() for fun in funcs]s   {await fun() for fun in funcs}s#   {fun: await fun() for fun in funcs}s,   [await fun() for fun in funcs if await smth]s,   {await fun() for fun in funcs if await smth}s1   {fun: await fun() for fun in funcs if await smth}s$   [await fun() async for fun in funcs]s$   {await fun() async for fun in funcs}s)   {fun: await fun() async for fun in funcs}s2   [await fun() async for fun in funcs if await smth]s2   {await fun() async for fun in funcs if await smth}s7   {fun: await fun() async for fun in funcs if await smth}i    (   R   R   Rc   Rd   (   R   t   comprehensionsRg   R   (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt+   test_async_comprehensions_outside_coroutine0  s     	c         C   s…   d d d d d d d d d	 d
 d d d g } xQ | D]I } t  d j | ƒ ƒ } t | ƒ } |  j | j ƒ  j ƒ  | j ƒ  ƒ q4 Wd  S(   Ns1   return [i async for i in aiter() if condition(i)]s%   return [await fun() for fun in funcs]s%   return {await fun() for fun in funcs}s*   return {fun: await fun() for fun in funcs}s3   return [await fun() for fun in funcs if await smth]s3   return {await fun() for fun in funcs if await smth}s8   return {fun: await fun() for fun in funcs if await smth}s+   return [await fun() async for fun in funcs]s+   return {await fun() async for fun in funcs}s0   return {fun: await fun() async for fun in funcs}s9   return [await fun() async for fun in funcs if await smth]s9   return {await fun() async for fun in funcs if await smth}s>   return {fun: await fun() async for fun in funcs if await smth}s.   
            async def f():
                {}(   R    t   formatR   R   R   R%   (   R   t   func_bodiest	   func_bodyRP   R    (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt#   test_async_comprehensions_as_stringH  s$    	(   t   __name__t
   __module__t   classmethodR   R   R   R"   R$   R&   R+   R-   R/   R0   R1   R4   R6   R8   RA   RK   RM   RQ   RV   RW   RZ   R[   Rb   Rh   Rj   Rn   (    (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyR      s2   			#	t   __main__(   t   textwrapR    t   unittestR   R   t   astroid.node_classesR   R   R   R   R   t   astroid.builderR   R   t   astroid.scoped_nodesR	   R
   t   astroid.test_utilsR   t   TestCaseR   Ro   t   main(    (    (    s=   lib/python2.7/site-packages/astroid/tests/unittest_python3.pyt   <module>   s   (ÿ P