ó
è¾bc           @   s{   d  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
 m Z d e j f d „  ƒ  YZ d S(	   sÖ   Fixer for generator.throw(E, V, T).

g.throw(E)       -> g.throw(E)
g.throw(E, V)    -> g.throw(E(V))
g.throw(E, V, T) -> g.throw(E(V).with_traceback(T))

g.throw("foo"[, V[, T]]) will warn about string exceptions.i   (   t   pytree(   t   token(   t
   fixer_base(   t   Namet   Callt   ArgListt   Attrt   is_tuplet   FixThrowc           B   s   e  Z e Z d  Z d „  Z RS(   sÉ   
    power< any trailer< '.' 'throw' >
           trailer< '(' args=arglist< exc=any ',' val=any [',' tb=any] > ')' >
    >
    |
    power< any trailer< '.' 'throw' > trailer< '(' exc=any ')' > >
    c         C   sP  |  j  } | d j ƒ  } | j t j k r? |  j | d ƒ d  S| j d ƒ } | d  k r^ d  S| j ƒ  } t | ƒ r¢ g  | j	 d d !D] } | j ƒ  ^ q‡ } n d | _
 | g } | d } d | k r6| d j ƒ  }	 d |	 _
 t | | ƒ }
 t |
 t d	 ƒ ƒ t |	 g ƒ g } | j t j | j | ƒ ƒ n | j t | | ƒ ƒ d  S(
   Nt   excs+   Python 3 does not support string exceptionsu   vali   iÿÿÿÿu    t   argst   tbu   with_traceback(   t   symst   clonet   typeR   t   STRINGt   cannot_convertt   gett   NoneR   t   childrent   prefixR   R   R   R   t   replaceR    t   Nodet   power(   t   selft   nodet   resultsR   R	   t   valt   cR
   t
   throw_argsR   t   et   with_tb(    (    s-   /usr/lib/python2.7/lib2to3/fixes/fix_throw.pyt	   transform   s*    	,		
	%(   t   __name__t
   __module__t   Truet   BM_compatiblet   PATTERNR    (    (    (    s-   /usr/lib/python2.7/lib2to3/fixes/fix_throw.pyR      s   N(   t   __doc__t    R    t   pgen2R   R   t
   fixer_utilR   R   R   R   R   t   BaseFixR   (    (    (    s-   /usr/lib/python2.7/lib2to3/fixes/fix_throw.pyt   <module>   s
   (