
MV]c           @   s7  d  d l  Z  d  d l Z d  d l Z d  d l m Z d  d l m Z m Z m Z m	 Z	 d  d l
 m 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" e f d#     YZ d$ e f d%     YZ d& e	 f d'     YZ e j d( d)  d* e f d+     Y Z  d, e f d-     YZ! d. e	 f d/     YZ" e j d( d)  d0 e" f d1     Y Z# e j d2 d3  d4 e" f d5     Y Z$ e j d2 d6  d7 e" f d8     Y Z% e j d2 d9  d: e" f d;     Y Z& e j d2 d<  d= e" f d>     Y Z' e j d( d?  d@ e" f dA     Y Z( e j d( dB  dC e" f dD     Y Z) e j d2 dE  dF e" f dG     Y Z* e j d2 dH  dI e" f dJ     Y Z+ e j d2 dK  e j d2 dL  dM e" f dN     Y  Z, e j d( dO  dP e" f dQ     Y Z- e j d( dR  dS e" f dT     Y Z. e j d( dU  dV e" f dW     Y Z/ e j d( dU  dX e" f dY     Y Z0 e j d( dZ  d[ e" f d\     Y Z1 e j d] e  d^ e" f d_     Y Z2 e j d( d`  da e" f db     Y Z3 e j d( dc  dd e" f de     Y Z4 e j d( df  dg e" f dh     Y Z5 e j d( di  dj e" f dk     Y Z6 e j d( dl  e j d( dm  dn e" f do     Y  Z7 e j d( d  dp e" f dq     Y Z8 e j d( dr  ds e" f dt     Y Z9 du e" f dv     YZ: e j d( d  dw e: f dx     Y Z; e j d( dy  dz e: f d{     Y Z< e j d( d|  d} e: f d~     Y Z= e j d( d  d e: f d     Y Z> e j d( d  d e: f d     Y Z? e j d( d  d e: f d     Y Z@ d S(   iN(   t   contextmanager(   t
   Normalizert   NormalizerConfigt   Issuet   Rule(   t   search_ancestort   if_stmtt
   while_stmtt   for_stmtt   try_stmtt	   with_stmtt   testlist_star_exprt   testlist_compt   exprlisti   id   t   all_feature_namest   nested_scopest
   generatorst   divisiont   absolute_importt   with_statementt   print_functiont   unicode_literalst   comp_fort   sync_comp_forc         c   si   xb |  j  D]W } | j d k r\ x? | j  D], } | j d k s) | d k rP q) n  | Vq) Wq
 | Vq
 Wd S(   sB   
    Iterates over all statements and splits up  simple_stmt.
    t   simple_stmtt   newlinet   ;N(   t   childrent   type(   t   scopet   childt   child2(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   _iter_stmts   s    c         C   s   |  j  d  \ } } | j d k rO | j  d j t k rO | d k rH d Sd SnC | j d k r | j  d j t k r | j  d d	 k r d
 Sd Sn  d  S(   Ni   R   i   t   [s   list comprehensions   generator expressiont   dictorsetmakerit   :s   dict comprehensions   set comprehension(   R   R   t   _COMP_FOR_TYPESt   None(   t   atomt   firstt   second(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   _get_comprehension_type$   s    %%c         C   s/   |  j    } g  | D] } | j ^ q d g k S(   Nt
   __future__(   t   get_from_namest   value(   t   import_fromt
   from_namest   n(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   _is_future_import3   s    c         C   sX   y |  j  } Wn t k
 r  n4 Xt |  d k rT | d d k rT t |  j  d  S|  S(   s_   
    Returns the inner part of an expression like `(foo)`. Also removes nested
    parens.
    i   i    t   (i   (   R   t   AttributeErrort   lent   _remove_parens(   R&   R   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR4   <   s    "c         C   s   d   |  j  D S(   Nc         s   s$   |  ] } | j  d  k r | Vq d S(   t   paramN(   R   (   t   .0R/   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pys	   <genexpr>L   s    (   R   (   t   parent_node(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   _iter_paramsK   s    c         C   s{   t  } xn t |  j    D]Z } | j d k r; | r; q n  t } | |  k rQ t S| j d k rr t |  rr q n  t  SWd S(   s@   
    Checks if the import is the first statement of a file.
    t   stringR-   N(   t   FalseR    t   get_root_nodeR   t   TrueR0   (   R-   t   found_docstringt   stmt(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   _is_future_import_firstO   s    c         c   s   x |  j  d  d  d  D] } | j d k r | j  d d k r | j  d } | j d k r} x t |  D] } | Vqh Wq q | j  d d k r | Vq q n  | Vq Wd  S(   Ni   R&   i    R1   R!   R   (   R1   R!   (   R   R   t!   _iter_definition_exprs_from_lists(   R   R   R   t   expr(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR@   `   s    "		c         C   sZ   g  } xM |  j  d  d d  D]5 } | j d k rE | t |  7} q | j |  q W| S(   Nii   R   t   testlist(   R   RB   (   R   R   R@   t   append(   t	   expr_stmtt   exprst   list_(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   _get_expr_stmt_definition_exprso   s    c         C   s3   |  j  d } | j d k r# | g St t |   S(   Ni   R   (   R   R   t   listR@   (   R   R   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   _get_for_stmt_definition_exprsy   s    t   _Contextc           B   sb   e  Z d	 d   Z d   Z d   Z d   Z d   Z d   Z e	 d    Z
 d   Z d   Z RS(
   c         C   sL   | |  _  g  |  _ | |  _ i  |  _ g  |  _ g  |  _ g  |  _ | |  _ d  S(   N(   t   nodet   blockst   parent_contextt   _used_name_dictt   _global_namest   _nonlocal_namest   _nonlocal_names_in_subscopest   _add_syntax_error(   t   selfRK   t   add_syntax_errorRM   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   __init__   s    							c         C   s   |  j    o |  j j j d k S(   Nt   async_funcdeft
   async_stmt(   RV   RW   (   t   is_functionRK   t   parentR   (   RS   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   is_async_funcdef   s    c         C   s   |  j  j d k S(   Nt   funcdef(   RK   R   (   RS   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyRX      s    c         C   s}   | j  j } | d k r d  S| d k r; |  j j |  n> | d k rZ |  j j |  n |  j j | j g   j |  d  S(   Nt   trailert   global_stmtt   nonlocal_stmt(   RY   R   RO   RC   RP   RN   t
   setdefaultR,   (   RS   t   namet   parent_type(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   add_name   s    c         C   sQ  |  j  |  j d  |  j  |  j d  t d   |  j D  } xw |  j D]l } y | | j } Wn t k
 rv qI n Xd | j } | j | j k  r | } n | } |  j | |  qI Wg  } x |  j D]y } | j } | | k s |  j	 d k rd | j } |  j | |  q |  j   s2| j |  j k r | j |  q q W|  j | S(   sV   
        Returns a list of nonlocal names that need to be part of that scope.
        t   globalt   nonlocalc         s   s   |  ] } | j  | f Vq d  S(   N(   R,   (   R6   R/   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pys	   <genexpr>   s    s    name '%s' is nonlocal and globals"   no binding for nonlocal '%s' foundN(   t   _analyze_namesRO   RP   t   dictR,   t   KeyErrort	   start_posRR   RQ   RM   R%   RX   RN   RC   (   RS   t   global_name_strst   nonlocal_namet   global_namet   messaget
   error_namet   nonlocals_not_handledt   search(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   finalize   s.    		c   
         sr      f d   } g  }  j  j d k r?  j  j   } n  x,| D]$  t } x t  j j   j g    D] } | j   j k r t	 } n  | j
 } | j d k r | j | k r qq n  | j   r| j d k r| j d j d k r| r |   n  | d  Pqd } n d	 } | sq | |  Pqq qq Wx3 | D]+ }	 |	 j j   j k r;| d
  f q;q;WqF Wd  S(   Nc            s!    j    |    j  f  d  S(   N(   RR   R,   (   Rl   (   t	   base_nameRS   t   type_(    s2   lib/python2.7/site-packages/parso/python/errors.pyt   raise_   s    R[   R5   RD   i   t	   annassigns   annotated name '%s' can't be %ss.   name '%s' is assigned to before %s declarations)   name '%s' is used prior to %s declarations   name '%s' is parameter and %s(   RK   R   t
   get_paramsR:   t   reversedRN   t   getR,   Rh   R<   RY   R`   t   is_definitionR   (
   RS   t   globals_or_nonlocalsRr   Rs   t   paramst   found_global_or_nonlocalR`   RY   Rl   R5   (    (   Rq   RS   Rr   s2   lib/python2.7/site-packages/parso/python/errors.pyRe      s6    %			
	
c         c   s&   |  j  j |  d  V|  j  j   d  S(   N(   RL   RC   t   pop(   RS   RK   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt	   add_block   s    c         C   s   t  | |  j d |  S(   NRM   (   RJ   RR   (   RS   RK   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   add_context   s    c         C   s   |  j  | j   7_  d  S(   N(   RQ   Rp   (   RS   t   child_context(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   close_child_context   s    N(   t   __name__t
   __module__R%   RU   RZ   RX   Rb   Rp   Re   R    R}   R~   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyRJ      s   
				!	-	t   ErrorFinderc           B   se   e  Z d  Z d   Z d   Z d   Z e d    Z d   Z d   Z	 d   Z
 d   Z d	   Z RS(
   s1   
    Searches for errors in the syntax tree.
    c         O   s5   t  t |   j | |   i  |  _ |  j j |  _ d  S(   N(   t   superR   RU   t   _error_dictt   grammart   version_infot   version(   RS   t   argst   kwargs(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyRU      s    	c            s@      f d       |  p- t  |  j   _ d  _ d  S(   Nc            sE   |  d  k r d  S  |  j  } |  j d k rA t |   j |  S| S(   Nt   classdefR[   t
   file_input(   R   R[   R   (   R%   RY   R   RJ   RR   (   RK   RM   (   t   create_contextRS   (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    i    (   RJ   RR   t   contextt   _indentation_count(   RS   RK   (    (   R   RS   s2   lib/python2.7/site-packages/parso/python/errors.pyt
   initialize  s    	!c         C   sB   | j  d k r, |  j |  	 d SWd  QXn  t t |   j |  S(   Nt
   error_nodet    (   R   t
   visit_nodeR   R   t   visit(   RS   RK   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    c         c   s  |  j  |  | j t k ri |  j j |  5 t |  j j  t k rZ |  j | d  n  d  VWd  QXd  S| j d k r |  j	 d 7_	 |  j	 t
 k r |  j | j d d  q n  d  V| j d k r |  j	 d 8_	 n7 | j d k r|  j } | j |  _ |  j j |  n  d  S(   Ns!   too many statically nested blockst   suitei   s   too many levels of indentationR   R[   (   R   R[   (   t   _check_type_rulesR   t   _BLOCK_STMTSR   R}   R3   RL   t   _MAX_BLOCK_SIZERR   R   t   _MAX_INDENT_COUNTt   _add_indentation_errorR   RM   R   (   RS   RK   R   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s$    	c         C   sF  | j  d k r | j d k rk t | j   j    d } | j d k rR d } n d } |  j | |  n | j j d  r d } nT t j	 d	 | j  } | d  k r d
 } n* t | j d   d k r d } n d } |  j | |  d S| j d k r0| j } | j  d k r0|  j j |  |  _ q0n  t t |   j |  S(   Nt
   error_leaft   INDENTt   ERROR_DEDENTis   unexpected indents3   unindent does not match any outer indentation levels   \s6   unexpected character after line continuation characters   \w{,2}("{1,3}|'{1,3})s   invalid syntaxi   s!   EOL while scanning string literals/   EOF while scanning triple-quoted string literalR   R#   R   R[   (   R   R   (   R   R[   (   R   t
   token_typeRH   t   get_next_leaft   _split_prefixR   R,   t
   startswitht   ret   matchR%   R3   t   groupRR   RY   R   R~   R   R   t
   visit_leaf(   RS   t   leaft   spacingRl   R   RY   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   3  s,    					c         C   s   |  j  | d d |  d  S(   Ni  s   IndentationError: (   t	   add_issue(   RS   R   Rl   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   U  s    c         C   s   |  j  | d d |  d  S(   Ni  s   SyntaxError: (   R   (   RS   RK   Rl   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyRR   X  s    c         C   s3   | j  d } | | | f } |  j j | |  d  S(   Ni    (   Rh   R   R_   (   RS   RK   t   codeRl   t   lineR   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   [  s    c         C   sP   |  j  j   x< |  j j   D]+ \ } } } |  j j t | | |   q Wd  S(   N(   R   Rp   R   t   valuest   issuesRC   R   (   RS   R   Rl   RK   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyRp   b  s    (   R   R   t   __doc__RU   R   R   R    R   R   R   RR   R   Rp   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR      s   					"			t   IndentationRulec           B   s   e  Z d  Z d   Z RS(   i  c         C   s    t  t |   j |  } d | S(   Ns   IndentationError: (   R   R   t   _get_message(   RS   Rl   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   l  s    (   R   R   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   i  s   R   R   t   _ExpectIndentedBlockc           B   s    e  Z d  Z d   Z d   Z RS(   s   expected an indented blockc         C   s    | j    } t | j    d S(   Ni(   R   RH   R   (   RS   RK   R   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   get_nodeu  s    c         C   s   | j  d j d k S(   NiR   (   R   R   (   RS   RK   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   is_issuey  s    (   R   R   Rl   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   q  s   	t   ErrorFinderConfigc           B   s   e  Z e Z RS(    (   R   R   R   t   normalizer_class(    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   ~  s   t
   SyntaxRulec           B   s   e  Z d  Z d   Z RS(   i  c         C   s    t  t |   j |  } d | S(   Ns   SyntaxError: (   R   R   R   (   RS   Rl   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    (   R   R   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s   t   _InvalidSyntaxRulec           B   s    e  Z d  Z d   Z d   Z RS(   s   invalid syntaxc         C   s
   | j    S(   N(   R   (   RS   RK   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    c         C   s   | j    j d k S(   NR   (   R   R   (   RS   RK   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    (   R   R   Rl   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s   	R,   t   awaitt   _AwaitOutsideAsyncc           B   s    e  Z d  Z d   Z d   Z RS(   s   'await' outside async functionc         C   s   |  j  j j   S(   N(   t   _normalizerR   RZ   (   RS   R   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    c         C   s   | j  S(   N(   RY   (   RS   RK   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   get_error_node  s    (   R   R   Rl   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s   	t   breakt   _BreakOutsideLoopc           B   s   e  Z d  Z d   Z RS(   s   'break' outside loopc         C   s=   t  } x/ |  j j j D] } | j d k r t } q q W| S(   NR   R   (   R   R   (   R:   R   R   RL   R   R<   (   RS   R   t   in_loopt   block(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s
    (   R   R   Rl   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s   t   continuet   _ContinueChecksc           B   s   e  Z d  Z d Z d   Z RS(   s   'continue' not properly in loops0   'continue' not supported inside 'finally' clausec         C   s   t  } x |  j j j D]u } | j d k r4 t } n  | j d k r | j d } | d k r | j | j k r |  j | d |  j	 t  Sq q W| s t Sd  S(   NR   R   R	   it   finallyRl   (   R   R   (
   R:   R   R   RL   R   R<   R   Rh   R   t   message_in_finally(   RS   R   R   R   t
   last_block(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    	(   R   R   Rl   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s   t   fromt   _YieldFromCheckc           B   s    e  Z d  Z d   Z d   Z RS(   s"   'yield from' inside async functionc         C   s
   | j  j  S(   N(   RY   (   RS   R   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    c         C   s"   | j  j d k o! |  j j j   S(   Nt	   yield_arg(   RY   R   R   R   RZ   (   RS   R   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    (   R   R   Rl   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s   	R`   t   _NameChecksc           B   s   e  Z d  Z d Z d   Z RS(   s   cannot assign to __debug__s   cannot assign to Nonec         C   s|   |  j  j j |  | j d k r2 | j   r2 t S| j d k rx |  j  j d k  rx | j   rx |  j | d |  j n  d  S(   Nt	   __debug__R%   i   i    Rl   (   i   i    (	   R   R   Rb   R,   Rx   R<   R   R   t   message_none(   RS   R   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    !(   R   R   Rl   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s   R9   t   _StringChecksc           B   s   e  Z d  Z d   Z RS(   s0   bytes can only contain ASCII literal characters.c         C   s_  | j  j   } d | k rJ |  j j d k rJ t d   | j D  rJ t Sd | k r[|  j j d k  } d | k r} t } n  d | k r t } n  | j   } | r | j	 d  } t
 j } n	 t
 j } y. t j    t j d  | |  Wd  QXWq[t k
 r(} |  j | d	 d
 t |  q[t k
 rW} |  j | d	 d t |  q[Xn  d  S(   Nt   bi   i    c         s   s'   |  ] } t  |  d  k r | Vq d S(   i   N(   t   ord(   R6   t   c(    (    s2   lib/python2.7/site-packages/parso/python/errors.pys	   <genexpr>  s    t   rt   us   utf-8t   ignoreRl   s   (unicode error) s   (value error) (   i   i    (   i   i    (   t   string_prefixt   lowerR   R   t   anyR,   R<   R:   t   _get_payloadt   encodet   codecst   escape_decodet   unicode_escape_decodet   warningst   catch_warningst   filterwarningst   UnicodeDecodeErrorR   t   strt
   ValueError(   RS   R   R   t   is_bytest   payloadt   funct   e(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s0    			 (   R   R   Rl   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s   t   *t
   _StarCheckc           B   s   e  Z d  Z d   Z RS(   s"   named arguments must follow bare *c         C   s~   | j  } | j d k rz | rz | j | j j |  d } g  | D]" } | d k rB | j rB | ^ qB } t |  d k Sd  S(   Nt
   parametersi   t   ,t   )i    (   R   R   (   RY   R   R   t   indext
   star_countR3   (   RS   R   Rz   t   afterR   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    	"(   R   R   Rl   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s   s   **t   _StarStarCheckc           B   s   e  Z d  Z d   Z RS(   s3   dict unpacking cannot be used in dict comprehensionc         C   sA   | j  j d k r= | j   j   } | d  k	 o< | j t k Sd  S(   NR"   (   RY   R   t   get_next_siblingR%   R$   (   RS   R   R   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    (   R   R   Rl   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s   t   yieldt   returnt   _ReturnAndYieldChecksc           B   s&   e  Z d  Z d Z d   Z d   Z RS(   s&   'return' with value in async generators   'yield' inside async functionc         C   s   | j  S(   N(   RY   (   RS   R   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   #  s    c         C   s   |  j  j j j d k r> |  j |  j |  d d | j n |  j  j j   r t |  j  j j j	    r | j d k r | j
 j d k r t S| j d k r | j   d k r |  j  j d
 k r |  j |  j |  d |  j q n  d  S(   NR[   Rl   s   '%s' outside functionR   t   return_stmtR   R   i   i   (   i   i   (   R   R   RK   R   R   R   R,   RZ   R   t   iter_yield_exprsRY   R<   R   R   t   message_async_yield(   RS   R   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   &  s    &!(   R   R   Rl   R   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s   	t   stringst   _BytesAndStringMixc           B   s    e  Z d  Z d   Z d   Z RS(   s&   cannot mix bytes and nonbytes literalsc         C   s&   | j  d k r t Sd | j j   k S(   Nt   fstringR   (   R   R:   R   R   (   RS   R9   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   _is_bytes_literal8  s    c         C   sf   | j  d } |  j j d k rb |  j |  } x1 | j  d D] } | |  j |  k r< t Sq< Wn  d  S(   Ni    i   i   (   i   i    (   R   R   R   R   R<   (   RS   RK   R'   t   first_is_bytesR9   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   =  s    (   R   R   Rl   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   3  s   	t   import_as_namest   _TrailingImportCommac           B   s   e  Z d  Z d   Z RS(   s:   trailing comma not allowed without surrounding parenthesesc         C   s   | j  d d k r t Sd  S(   NiR   (   R   R<   (   RS   RK   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   L  s    (   R   R   Rl   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   G  s   R-   t   _ImportStarInFunctionc           B   s   e  Z d  Z d   Z RS(   s%   import * only allowed at module levelc         C   s   | j    o |  j j j d  k	 S(   N(   t   is_star_importR   R   RM   R%   (   RS   RK   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   U  s    (   R   R   Rl   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   Q  s   t   _FutureImportRulec           B   s   e  Z d  Z d   Z RS(   s?   from __future__ imports must occur at the beginning of the filec         C   s   t  |  r t |  s t Sx | j   D] \ } } | j } t t  } |  j j d
 k rl | j	 d  n  | d k r |  j
 | d d q) | d k r d } |  j
 | d | q) | t k r) d	 | } |  j
 | d | q) q) Wn  d  S(   Ni   i   t   generator_stopt   bracesRl   s   not a chancet   barry_as_FLUFLs-   Seriously I'm not implementing this :) ~ Daves    future feature %s is not defined(   i   i   (   R0   R?   R<   t	   get_pathsR,   RH   t   ALLOWED_FUTURESR   R   RC   R   (   RS   RK   t	   from_namet   future_nameR`   t   allowed_futurest   mRl   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   ]  s     	
(   R   R   Rl   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   Y  s   t	   star_exprt   _StarExprRulec           B   s#   e  Z d  Z d Z d Z d   Z RS(   s4   starred assignment target must be in a list or tuples2   iterable unpacking cannot be used in comprehensions4   can use starred expression only as assignment targetc         C   s   | j  j t k r t S| j  j d k r] | j  j d j t k r] |  j | d |  j q] n  |  j j	 d k r t
 | d d  } t } | d  k	 r | j d k r t |  } n t |  } | | k r t } q n  | s |  j | d |  j q n  d  S(	   NR   i   Rl   i   i   R   RD   (   i   i   (   RY   R   t   _STAR_EXPR_PARENTSR<   R   R$   R   t   message_iterable_unpackingR   R   R   R:   R%   RG   RI   t   message_assignment(   RS   RK   R/   t   found_definitionRE   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   x  s     (   R   R   Rl   R	  R
  R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR  r  s   t   typest   _StarExprParentRulec           B   s   e  Z d    Z RS(   c            s  | j  j d k r+ |  j | j  d d n   f d       | | j   rg  | j D] } | d k rV | ^ qV } g  | D] } | j d k r{ | ^ q{ } t |  d k r d } |  j | d d | q| r| j | d	  } | d
 k rd } |  j | d	 d | qqn  d  S(   Nt   del_stmtRl   s!   can't use starred expression herec            s\   | d  k r t S| j } | d k r) t S| d k rL |  j | j d j k  S  |  | j  S(   NR\   RD   i(   R%   R:   R   Rh   R   RY   (   RK   t   ancestorRr   (   Rx   (    s2   lib/python2.7/site-packages/parso/python/errors.pyRx     s    	R   R  i   s%   two starred expressions in assignmenti    i   s1   too many expressions in star-unpacking assignment(   RY   R   R   R   R3   R   (   RS   RK   R   R   t   starredRl   t   count(    (   Rx   s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    (((   R   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR    s   Rt   t   _AnnotatorRulec           B   s    e  Z d  Z d   Z d   Z RS(   s   illegal target for annotationc         C   s   | j  S(   N(   RY   (   RS   RK   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    c         C   s   d  } | j j d } t |  } y | j } Wn t k
 rB ng Xd | k sn | j d k rw | d d k rw d } n( | j d k r | d d k r d } n  | d } | d  k r | j d	 k p | j d k o | j d k o | j d d k st Sn  d } |  j | j d | | d  S(   Ni    R   R&   R1   t   tupleR!   RH   iR`   t	   atom_exprt   powerR\   s,   only single target (not %s) can be annotatedRl   (   R  R  (   R%   RY   R   R4   R2   R   R<   R   (   RS   RK   Rr   t   lhsR   R\   Rl   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s(    +		
(   R   R   Rl   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR    s   	t   argumentt   _ArgumentRulec           B   s   e  Z d    Z RS(   c         C   s   | j  d } | j  d d k r | j d k r | j d k rb |  j j d k  rY d } q d	 } n! |  j j d k  r} d
 } n d	 } |  j | d | n  d  S(   Ni    i   t   =R`   t   lambdefi   i   s    lambda cannot contain assignments=   expression cannot contain assignment, perhaps you meant "=="?s   keyword can't be an expressionRl   (   i   i   (   i   i   (   R   R   R   R   R   (   RS   RK   R'   Rl   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    "			(   R   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR    s   R^   t   _NonlocalModuleLevelRulec           B   s   e  Z d  Z d   Z RS(   s0   nonlocal declaration not allowed at module levelc         C   s   |  j  j j d  k S(   N(   R   R   RM   R%   (   RS   RK   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    (   R   R   Rl   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR    s   t   arglistt   _ArglistRulec           B   s    e  Z e d     Z d   Z RS(   c         C   s   |  j  j d k  r d Sd Sd  S(   Ni   i   s?   Generator expression must be parenthesized if not sole arguments*   Generator expression must be parenthesized(   i   i   (   R   R   (   RS   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyRl     s    c   
      C   s  | j  d } | j d k rE | j  d j t k rE t | j   d k St   } t } t } t } xC| j  D]8} | d k r qj n  | d k r t } qj n  | r t } qj n  | j d k r^| j  d } | d k r| d k r| rd }	 |  j | d	 |	 qq[t } qt } | j d
 k r| j | k rH|  j | d	 d q[| j	 | j  qqj | rd }	 |  j | d	 |	 qj | rj d }	 |  j | d	 |	 qj qj Wd  S(   Ni    R  i   i   R   R   s   **s>   iterable argument unpacking follows keyword argument unpackingRl   R`   s   keyword argument repeateds6   positional argument follows keyword argument unpackings,   positional argument follows keyword argument(   R   s   **(   R   s   **(
   R   R   R$   R3   t   setR:   R<   R   R,   t   add(
   RS   RK   t	   first_argt   arg_sett   kw_onlyt   kw_unpacking_onlyt   is_old_starredR  R'   Rl   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     sH    		(   R   R   t   propertyRl   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR    s   R   R  t   _ParameterRulec           B   s   e  Z d  Z d   Z RS(   s-   non-default argument follows default argumentc         C   s   t    } t } x t |  D] } | j j | k r] d } |  j | j d | | j j n  | j | j j  | j d  k r | j	 r | r t
 Sq t
 } q Wd  S(   Ns.   duplicate argument '%s' in function definitionRl   (   R  R:   R8   R`   R,   R   R  t   defaultR%   R   R<   (   RS   RK   t   param_namest   default_onlyt   pRl   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   6  s    	#(   R   R   Rl   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR&  0  s   t   _TryStmtRulec           B   s   e  Z d  Z d   Z RS(   s   default 'except:' must be lastc         C   su   d  } xh | j d d  d  D]P } | d k r3 Pn  | d k rH | } q | d  k	 r |  j | d |  j q q Wd  S(   Ni   t   elseR   t   exceptRl   (   R,  R   (   R%   R   R   Rl   (   RS   R	   t   default_exceptt   except_clause(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   J  s    	(   R   R   Rl   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR+  F  s   R   t   _FStringRulec           B   sA   e  Z d Z d  Z d Z d   Z d   Z d   Z d d  Z	 RS(   s'   f-string: expressions nested too deeplysA   f-string: invalid conversion character: expected 's', 'r', or 'a'c         C   s   |  j  | j d |  d  S(   Ni   (   t   _check_fstring_contentsR   (   RS   t   format_spect   depth(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   _check_format_spec[  s    c         C   s   | d k r% |  j  | d |  j n  | j d } | j d k ry | j d } | j d
 k ry |  j  | d |  j qy n  | j d } | j d	 k r |  j | | d  n  d  S(   Ni   Rl   t   fstring_conversioni   t   sR   t   ait   fstring_format_spec(   R6  R   R7  (   R   t   message_nestedR   R   R,   t   message_conversionR4  (   RS   t   fstring_exprR3  t
   conversionR`   R2  (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   _check_fstring_expr^  s    c         C   s   |  j  | j d d ! d  S(   Ni   i(   R1  R   (   RS   R   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR   l  s    i    c         C   s7   x0 | D]( } | j  d k r |  j | |  q q Wd  S(   NR;  (   R   R=  (   RS   R   R3  t   fstring_content(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR1  o  s    N(
   R   R   R%   t   _fstring_grammarR9  R:  R4  R=  R   R1  (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR0  U  s   			t   _CheckAssignmentRulec           B   s   e  Z e d   Z RS(   c         C   sW  d  } | j } | d k r$ d } n| d k r*| j d  \ } } t |  } | d  k r| j d k r |  j j d5 k  r d } q$| j d	 d
 k r d } q$d } q'| d6 k r'| j d k r d } q$| j d k rxA | j d  d  d  D] } |  j | |  q Wq$|  j | |  q'qn| d k rc|  j j d7 k  rQd } qt | j  } n| d k r| j d k rd } qne| d k rd } nP| d8 k rd } n;| d k rd } |  j	 | d | n| d k rd } n | d9 k rv| j d  d! k rd" } q| j d# d$ k r5d } q| j d% }	 |	 j d& k sWt
  |	 j d  d k rd' } qny | d: k rxj | j d  d  d  D] } |  j | |  qWn9 d+ | k r| d, k sd- | k s| d; k rd } n  | d  k	 rS|  j j d< k  rd0 n d1 }
 d2 j |
 | r.d3 n d4 | g  } |  j	 | d | n  d  S(=   NR  t   lambdaR&   i   R"   i   i   t   literali   R#   s   dict displays   set displayR1   R!   t
   yield_exprs   yield expressionR   t   keywordt   operators   ...t   Ellipsist
   comparisonR9   t   numberR   s+   assignment to yield expression not possibleRl   t   tests   conditional expressionR  R  i    R   s   await expressionis   **iR\   s   function callR   R   RB   RA   R  t   _testt   termt   factors   can'tt   cannott    t   deletes	   assign to(   i   i   (   R1   R!   (   i   i   (   R9   RH  R   (   R  R  (   R   R   RB   (   RK  RL  (   i   i   (   R%   R   R   R)   R   R   t   _check_assignmentR   R,   R   t   AssertionErrort   join(   RS   RK   t   is_deletiont   errorRr   R'   R(   R   Rl   R\   RM  (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyRP  v  sr    													$(   R   R   R:   RP  (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR@  u  s   t   _CompForRulec           B   s   e  Z d  Z d   Z RS(   s>   asynchronous comprehension outside of an asynchronous functionc         C   sX   | j  d } | GH| j d k r1 |  j |  n  | j j  d d k oW |  j j j   S(   Ni   t	   expr_listi    t   async(   R   R   RP  RY   R   R   RZ   (   RS   RK   RV  (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    (   R   R   Rl   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyRU    s   RD   t   _ExprStmtRulec           B   s   e  Z d  Z d   Z RS(   s+   illegal expression for augmented assignmentc         C   sn   x+ | j  d  d d  D] } |  j |  q W| j  d } | d k rj | j d k rj | j  d j d
 k Sd  S(   Nii   i   R  Rt   i    R   R&   RB   (   R   R&   RB   (   R   RP  R   (   RS   RK   t   before_equalt	   augassign(    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s
    (   R   R   Rl   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyRX    s   t	   with_itemt   _WithItemRulec           B   s   e  Z d    Z RS(   c         C   s   |  j  | j d  d  S(   Ni   (   RP  R   (   RS   R[  (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    (   R   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR\    s   R  t   _DelStmtRulec           B   s   e  Z d    Z RS(   c         C   s6   | j  d } | j d k r2 |  j | d t n  d  S(   Ni   RV  RS  (   R   R   RP  R<   (   RS   R  R   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    (   R   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR]    s   RV  t   _ExprListRulec           B   s   e  Z d    Z RS(   c         C   s2   x+ | j  d  d  d  D] } |  j |  q Wd  S(   Ni   (   R   RP  (   RS   RV  RA   (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    (   R   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR^    s   t   _ForStmtRulec           B   s   e  Z d    Z RS(   c         C   s0   | j  d } | j d k r, |  j |  n  d  S(   Ni   RV  (   R   R   RP  (   RS   R   RV  (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR     s    (   R   R   R   (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyR_    s   (   R   R   R   R	   R
   (   R   R   R   (   R   R   R   R   R   R   R   R   (   R   R   (A   R   R   R   t
   contextlibR    t   parso.normalizerR   R   R   R   t   parso.python.treeR   R   R  R   R   R  R$   R    R)   R0   R4   R8   R?   R@   RG   RI   t   objectRJ   R   R   t   register_ruleR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R  R  R  R  R  R  R&  R+  R0  R@  RU  RX  R\  R]  R^  R_  (    (    (    s2   lib/python2.7/site-packages/parso/python/errors.pyt   <module>   s   " 									
	|m&	$@G