ó
î%![c           @   sá   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
 m Z m Z m Z e  j d d „ ƒ Z d	 e j f d
 „  ƒ  YZ e d k rÝ e j ƒ  n  d S(   iÿÿÿÿN(   t   extract_node(   t   require_version(   t   InferenceError(   t   nodes(   t   util(   t
   AssignNamet   Constt   Namet   Starredc         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_protocols.pyt   _add_transform   s    	t   ProtocolTestsc           B   sÚ   e  Z d  „  Z d „  Z d „  Z e d d ƒ d „  ƒ Z d „  Z d „  Z d „  Z	 d	 „  Z
 e d d ƒ d
 „  ƒ Z e d d ƒ d „  ƒ Z e d d ƒ d „  ƒ Z d „  Z e d d ƒ d „  ƒ Z d „  Z d „  Z RS(   c         C   st   |  j  t | ƒ t | ƒ ƒ x | D] } |  j | t ƒ q# Wx0 t | | ƒ D] \ } } |  j  | | j ƒ qM Wd  S(   N(   t   assertEqualt   lent   assertIsInstanceR   t   zipt   value(   t   selft   nodes_list_expectedt   nodes_list_gotR   t   expected_value(    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt   assertConstNodesEqual   s
    c         C   st   |  j  t | ƒ t | ƒ ƒ x | D] } |  j | t ƒ q# Wx0 t | | ƒ D] \ } } |  j  | | j ƒ qM Wd  S(   N(   R   R   R   R   R   t   name(   R   R   R   R   t   expected_name(    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt   assertNameNodesEqual%   s
    c         C   s†   t  d ƒ } t | d j t ƒ ƒ } t | j ƒ  ƒ } |  j d d d g | ƒ t | d j t ƒ ƒ } |  j t t | j ƒ  ƒ d  S(   Nsf   
        for a in (1, 2, 3):  #@
          pass

        for b in range(3): #@
          pass
        i    i   i   i   (	   R    t   nextt   nodes_of_classR   t   listt   assigned_stmtsR   t   assertRaisesR   (   R   t   assign_stmtst   for1_assnodet   assignedt   for2_assnode(    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt   test_assigned_stmts_simple_for,   s    		t   minvers   3.0c         C   sJ   t  d ƒ } t | j t ƒ ƒ } t | j ƒ  ƒ } |  j | t j ƒ d  S(   NsM   
        for *a, b in ((1, 2, 3), (4, 5, 6, 7)): #@
            pass
        (   R    R   R   R   R!   R   R   t   Uninferable(   R   R#   t   for1_starredR%   (    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt   test_assigned_stmts_starred_for=   s
    	c         C   s:   t  d j | ƒ ƒ } t | j t ƒ ƒ } t | j ƒ  ƒ S(   Ns   {} #@(   R    t   formatR   R   R   R!   (   R   t   codet   assign_stmtt   starred(    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt   _get_starred_stmtsH   s    c         C   s?   |  j  | ƒ } |  j | t j ƒ | j } |  j | | ƒ d  S(   N(   R0   R   R   t   Listt   eltsR   (   R   R-   t   expectedt   stmts(    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt   _helper_starred_expected_constM   s    	c         C   s#   |  j  | ƒ } |  j | | ƒ d  S(   N(   R0   R   (   R   R-   R3   R4   (    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt   _helper_starred_expectedS   s    c         C   sG   t  d j | ƒ ƒ } t | j t ƒ ƒ } |  j t t | j ƒ  ƒ d  S(   Ns   {} #@(	   R    R,   R   R   R   R"   R   R    R!   (   R   R-   R.   R/   (    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt   _helper_starred_inference_errorW   s    c         C   sˆ   |  j  d d d d g ƒ |  j  d d d g ƒ |  j  d d d d g ƒ |  j  d d g ƒ |  j  d	 d g ƒ |  j  d
 d d g ƒ d  S(   Ns   a, *b = (1, 2, 3, 4) #@i   i   i   s   *a, b = (1, 2, 3) #@i   s   a, *b, c = (1, 2, 3, 4, 5) #@s   a, *b = (1, 2) #@s   *b, a = (1, 2) #@s   [*b] = (1, 2) #@(   R5   (   R   (    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt$   test_assigned_stmts_starred_assnames\   s    c         C   sP   |  j  d t j ƒ |  j  d t j ƒ |  j  d t j ƒ |  j  d t j ƒ d  S(   Ns   a, *b = range(3) #@s   a, *b = balou() #@s8   
        def test(arg):
            head, *tail = arg #@s$   a, (*b, c), d = (1, (2, 3, 4), 5) #@(   R6   R   R)   (   R   (    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt   test_assigned_stmts_starred_yesl   s    c         C   s+   |  j  d ƒ |  j  d ƒ |  j  d ƒ d  S(   Ns   a, *b, *c = (1, 2, 3) #@s   a, *b, c = (1, 2) #@s*   (*a, b), (c, *d) = (1, 2, 3), (4, 5, 6) #@(   R7   (   R   (    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt   test_assign_stmts_starred_failsz   s    c         C   sÃ   t  d ƒ } t | d j t ƒ ƒ } t | j ƒ  ƒ } |  j d g | ƒ | d j t ƒ } t | ƒ } t | j ƒ  ƒ } |  j d g | ƒ t | ƒ } t | j ƒ  ƒ } |  j d g | ƒ d  S(   Ns2   
        c = a #@

        d, e = b, c #@
        i    t   ai   t   bt   c(   R    R   R   R   R    R!   R   (   R   R#   t   simple_assnodeR%   t   assnamest   simple_mul_assnode_1t   simple_mul_assnode_2(    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt   test_assigned_stmts_assignments…   s    	s   3.6c         C   sÔ   t  d ƒ } t | d j t ƒ ƒ } t | j ƒ  ƒ } |  j d t | ƒ ƒ |  j | d t	 ƒ |  j | d j
 d ƒ t | d j t ƒ ƒ } t | j ƒ  ƒ } |  j d t | ƒ ƒ |  j | d t j ƒ d  S(   Ns7   
        a: str = "abc"  #@
        b: str  #@
        i    i   t   abc(   R    R   R   R   R    R!   R   R   R   R   R   t   assertIsR   R)   (   R   t   annassign_stmtst   simple_annassign_nodeR%   t   empty_annassign_node(    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt"   test_assigned_stmts_annassignments˜   s    	c         C   sK   d „  } t  j } t | t  j | ƒ  t  j d ƒ } | j ƒ  Wd  QXd  S(   Nc         S   s   |  j  g |  j ƒ  j d <d  S(   Nt   __all__(   R   t   roott   locals(   R   (    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyR   ª   s    s)   
            __all__ = ['a']
            (   t   astroidt   MANAGERR   t   Assignt   parset   wildcard_import_names(   R   R   R   t   module(    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt5   test_sequence_assigned_stmts_not_accepting_empty_node©   s    			c         C   s6   d t  f d „  ƒ  Y} t d ƒ } | j | ƒ  ƒ d  S(   Nt   Visitorc           B   s>   e  Z d  „  Z e Z e Z e Z e Z e Z e Z d „  Z	 RS(   c         S   s(   x! | j  ƒ  D] } | j |  ƒ q Wd  S(   N(   t   get_childrent   accept(   R   R   t   child(    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt   visit·   s    c         S   s   x | j  ƒ  D] } q Wd  S(   N(   t   infer(   R   R   t   _(    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt   visit_assignnameÂ   s    (
   t   __name__t
   __module__RW   t   visit_modulet   visit_assignt   visit_binopt
   visit_listt   visit_constt
   visit_nameRZ   (    (    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyRS   µ   s   	s1   
        a = []
        x = [a*2, a]*2*2
        (   t   objectR    RU   (   R   RS   t   parsed(    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt-   test_not_passing_uninferable_in_seq_inference´   s    	(   R[   R\   R   R   R'   R   R+   R0   R5   R6   R7   R8   R9   R:   RB   RH   RR   Re   (    (    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyR      s   									t   __main__(   t
   contextlibt   unittestRL   R    t   astroid.test_utilsR   R   R   R   t   astroid.node_classesR   R   R   R   t   contextmanagert   NoneR   t   TestCaseR   R[   t   main(    (    (    s?   lib/python2.7/site-packages/astroid/tests/unittest_protocols.pyt   <module>   s   "±