
^Yc           @   s  d  Z  d d l Z d d l Z d d l Z d d l Z e j dC k  Z e j dD k  Z e j dE k  Z e j dF k  Z	 y e j
 e Z Wn e k
 r e Z n Xe e e r d n d   Z y d d l Z WnS e k
 r d d l Z d	 e j j k r!dG e j _ e d
    e j _ q!n Xd d l m Z e rCd   Z n	 d   Z e r^d   Z n	 d   Z e	 re j e j f Z  n e j e j e j! f Z  d e" f d     YZ# d   Z$ d e#   d  Z& d   Z' d e( f d     YZ) d e) f d     YZ* d e( f d     YZ+ d e( f d     YZ, d e* f d     YZ- d e- f d      YZ. d! e- f d"     YZ/ d# e- f d$     YZ0 d% e/ f d&     YZ1 d' e) f d(     YZ2 d) e) f d*     YZ3 d+ e* f d,     YZ4 d- e* f d.     YZ5 d/ e) f d0     YZ6 d1 e" f d2     YZ7 d3 e7 f d4     YZ8 d5 e7 f d6     YZ9 d7 e7 f d8     YZ: d9 e7 f d:     YZ; d; e; f d<     YZ< d= d> d? g Z= d@   Z> dA e( f dB     YZ? d S(H   s]   
Main module.

Implement the central Checker class.
Also, it models the Bindings and Scopes.
iNi   i    i   i   t   __builtin__t   builtinst   decorator_listc         C   s   |  j  S(   N(   t
   decorators(   t   s(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   <lambda>    s    (   t   messagesc         C   s   t  t |  j  j    S(   N(   t   strt   unicodet   __name__t   upper(   t
   node_class(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   getNodeType&   s    c         C   s   |  j  j   S(   N(   R	   R
   (   R   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR   *   s    c         C   si   t  |  t j t j f  r% |  j g St  |  t j  re |  j |  j g g  |  j D] } | g ^ qQ Sd  S(   N(   t
   isinstancet   astt   Ift
   TryFinallyt   bodyt	   TryExceptt   orelset   handlers(   t   nt   hdl(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   getAlternatives/   s    
c         C   s`   t  |  t j  r |  j g St  |  t j  r\ |  j |  j g g  |  j D] } | g ^ qH Sd  S(   N(   R   R   R   R   t   TryR   R   (   R   R   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR   5   s    
t   _FieldsOrderc           B   s    e  Z d  Z d   Z d   Z RS(   s   Fix order of AST node fields.c         C   s^   | j  } d | k r! d j } n! d | k r9 d j } n	 d j } t t | d | d t  S(   Nt   itert
   generatorst   valuet   keyt   reverse(   t   _fieldst   findt   tuplet   sortedt   True(   t   selfR   t   fieldst	   key_first(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   _get_fieldsD   s    		c         C   s   |  j  |  |  | <} | S(   N(   R'   (   R$   R   R%   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   __missing__O   s    (   R	   t
   __module__t   __doc__R'   R(   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR   A   s   	c         C   s5   i  } x( |  D]  } | j  | d  d | | <q W| S(   s|   
    Simplest required implementation of collections.Counter. Required as 2.6
    does not have Counter in collections.
    i    i   (   t   get(   t   itemst   resultst   item(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   counterT   s    c         c   s   x{ | |  j  D]l } | | k r& q n  t |  | d  } t | t j  rR | Vq t | t  r x | D] } | Vqh Wq q Wd S(   s   
    Yield all direct child nodes of *node*, that is, all fields that
    are nodes and all items of fields that are lists of nodes.
    N(   t	   __class__t   getattrt   NoneR   R   t   ASTt   list(   t   nodet   omitt   _fields_ordert   namet   fieldR.   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   iter_child_nodes_   s    c         C   s   t  |  t j  r |  j St t d  rA t  |  t j  rA |  j St  |  t j  rj t d   |  j D  St  |  t j	  r |  j
 St  |  t j  r t d |   } i t d 6t d 6d  d 6} | j | j |  St r t  |  t j  r |  j St   Sd  S(   Nt   Bytesc         s   s   |  ] } t  |  Vq d  S(   N(   t   convert_to_value(   t   .0t   i(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pys	   <genexpr>u   s    R.   R#   t   FalseR2   (   R   R   t   StrR   t   hasattrR;   t   TupleR!   t   eltst   NumR   t   Namet   VariableKeyR#   R?   R2   R+   R8   t   PY33t   NameConstantR   t   UnhandledKeyType(   R.   t   resultt   constants_lookup(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR<   o   s(    !
t   Bindingc           B   s2   e  Z d  Z d   Z d   Z d   Z d   Z RS(   sr  
    Represents the binding of a value to a name.

    The checker uses this to keep track of which names have been bound and
    which names have not. See L{Assignment} for a special type of binding that
    is checked with stricter rules.

    @ivar used: pair of (L{Scope}, node) indicating the scope and
                the node that this binding was last used.
    c         C   s   | |  _  | |  _ t |  _ d  S(   N(   R8   t   sourceR?   t   used(   R$   R8   RM   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   __init__   s    		c         C   s   |  j  S(   N(   R8   (   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   __str__   s    c         C   s)   d |  j  j |  j |  j j t |   f S(   Ns#   <%s object %r from line %r at 0x%x>(   R0   R	   R8   RM   t   linenot   id(   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   __repr__   s    	c         C   s   t  | t  o |  j | j k S(   N(   R   t
   DefinitionR8   (   R$   t   other(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt	   redefines   s    (   R	   R)   R*   RO   RP   RS   RV   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRL      s
   
			RT   c           B   s   e  Z d  Z RS(   s7   
    A binding that defines a function or a class.
    (   R	   R)   R*   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRT      s   RI   c           B   s   e  Z d  Z RS(   sS   
    A dictionary key of a type that we cannot or do not check for duplicates.
    (   R	   R)   R*   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRI      s   RF   c           B   s)   e  Z d  Z d   Z d   Z d   Z RS(   sY   
    A dictionary key which is a variable.

    @ivar item: The variable AST object.
    c         C   s   | j  |  _ d  S(   N(   RR   R8   (   R$   R.   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRO      s    c         C   s"   | j  |  j  k o! | j |  j k S(   N(   R0   R8   (   R$   t   compare(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   __eq__   s    c         C   s   t  |  j  S(   N(   t   hashR8   (   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   __hash__   s    (   R	   R)   R*   RO   RX   RZ   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRF      s   		t   Importationc           B   sD   e  Z d  Z d d  Z d   Z d   Z e d    Z d   Z	 RS(   s   
    A binding created by an import statement.

    @ivar fullName: The complete name given to the import statement,
        possibly including multiple dotted components.
    @type fullName: C{str}
    c         C   s5   | p	 | |  _  g  |  _ t t |   j | |  d  S(   N(   t   fullNamet	   redefinedt   superR[   RO   (   R$   R8   RM   t	   full_name(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRO      s    	c         C   s>   t  | t  r |  j | j k St  | t  o= |  j | j k S(   N(   R   t   SubmoduleImportationR\   RT   R8   (   R$   RU   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRV      s    c         C   s   |  j  j d  d |  j k S(   s.   Return whether importation needs an as clause.t   .i(   R\   t   splitR8   (   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt
   _has_alias   s    c         C   s/   |  j    r  d |  j |  j f Sd |  j Sd S(   s5   Generate a source statement equivalent to the import.s   import %s as %ss	   import %sN(   Rc   R\   R8   (   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   source_statement   s    c         C   s)   |  j    r |  j d |  j S|  j Sd S(   s#   Return import full name with alias.s    as N(   Rc   R\   R8   (   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRP      s    N(
   R	   R)   R*   R2   RO   RV   Rc   t   propertyRd   RP   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR[      s   		R`   c           B   s8   e  Z d  Z d   Z d   Z d   Z e d    Z RS(   s  
    A binding created by a submodule import statement.

    A submodule import is a special case where the root module is implicitly
    imported, without an 'as' clause, and the submodule is also imported.
    Python does not restrict which attributes of the root module may be used.

    This class is only used when the submodule import is without an 'as' clause.

    pyflakes handles this case by registering the root module name in the scope,
    allowing any attribute of the root module to be accessed.

    RedefinedWhileUnused is suppressed in `redefines` unless the submodule
    name is also the same, to avoid false positives.
    c         C   sd   d | k r% | s+ t  | t j  s+ t  | j d  d } t t |   j | |  | |  _ d  S(   NRa   i    (	   R   R   t   Importt   AssertionErrorRb   R^   R`   RO   R\   (   R$   R8   RM   t   package_name(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRO      s    +c         C   s5   t  | t  r |  j | j k St t |   j |  S(   N(   R   R[   R\   R^   R`   RV   (   R$   RU   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRV     s    c         C   s   |  j  S(   N(   R\   (   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRP     s    c         C   s   d |  j  S(   Ns   import (   R\   (   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRd     s    (   R	   R)   R*   RO   RV   RP   Re   Rd   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR`      s
   			t   ImportationFromc           B   s,   e  Z d d   Z d   Z e d    Z RS(   c         C   sh   | |  _  | p | |  _ | j d  r7 | |  j } n | d |  j } t t |   j | | |  d  S(   NRa   (   t   modulet	   real_namet   endswithR^   Ri   RO   (   R$   R8   RM   Rj   Rk   R_   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRO     s    	c         C   s/   |  j  |  j k r$ |  j d |  j S|  j Sd S(   s#   Return import full name with alias.s    as N(   Rk   R8   R\   (   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRP   !  s    c         C   sD   |  j  |  j k r, d |  j |  j  |  j f Sd |  j |  j f Sd  S(   Ns   from %s import %s as %ss   from %s import %s(   Rk   R8   Rj   (   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRd   (  s
    	N(   R	   R)   R2   RO   RP   Re   Rd   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRi     s   	t   StarImportationc           B   s/   e  Z d  Z d   Z e d    Z d   Z RS(   s3   A binding created by a 'from x import *' statement.c         C   s3   t  t |   j d |  | d |  _ | |  _ d  S(   Nt   *s   .*(   R^   Rm   RO   R8   R\   (   R$   R8   RM   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRO   5  s    c         C   s   d |  j  d S(   Ns   from s	    import *(   R\   (   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRd   <  s    c         C   s$   |  j  j d  r |  j S|  j Sd  S(   NRa   (   R\   Rl   Rd   R8   (   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRP   @  s    (   R	   R)   R*   RO   Re   Rd   RP   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRm   2  s   	t   FutureImportationc           B   s   e  Z d  Z d   Z RS(   ss   
    A binding created by a from `__future__` import statement.

    `__future__` imports are implicitly used.
    c         C   s/   t  t |   j | | d  | | f |  _ d  S(   Nt
   __future__(   R^   Ro   RO   RN   (   R$   R8   RM   t   scope(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRO   O  s    (   R	   R)   R*   RO   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRo   H  s   t   Argumentc           B   s   e  Z d  Z RS(   s3   
    Represents binding a name as an argument.
    (   R	   R)   R*   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRr   T  s   t
   Assignmentc           B   s   e  Z d  Z RS(   s  
    Represents binding a name with an explicit assignment.

    The checker will raise warnings for any Assignment that isn't used. Also,
    the checker does not consider assignments in tuple/list unpacking to be
    Assignments, rather it treats them as simple Bindings.
    (   R	   R)   R*   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRs   Z  s   t   FunctionDefinitionc           B   s   e  Z RS(    (   R	   R)   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRt   d  s   t   ClassDefinitionc           B   s   e  Z RS(    (   R	   R)   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRu   h  s   t   ExportBindingc           B   s   e  Z d  Z d   Z RS(   s  
    A binding created by an C{__all__} assignment.  If the names in the list
    can be determined statically, they will be treated as names for export and
    additional checking applied to them.

    The only C{__all__} assignment that can be recognized is one which takes
    the value of a literal list containing literal strings.  For example::

        __all__ = ["foo", "bar"]

    Names which are imported and not otherwise used but appear in the value of
    C{__all__} will not have an unused import warning reported for them.
    c         C   s   d | k r7 t  | t j  r7 t | d j  |  _ n	 g  |  _ t  | j t j t j f  r x? | j j D]. } t  | t j	  rk |  j j
 | j  qk qk Wn  t t |   j | |  d  S(   Nt   __all__(   R   R   t	   AugAssignR4   t   namesR   t   ListRB   RC   R@   t   appendR   R^   Rv   RO   (   R$   R8   RM   Rq   R5   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRO   {  s    	(   R	   R)   R*   RO   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRv   l  s   t   Scopec           B   s   e  Z e Z d    Z RS(   c         C   s,   |  j  j } d | t |   t j |   f S(   Ns   <%s at 0x%x %s>(   R0   R	   RR   t   dictRS   (   R$   t	   scope_cls(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRS     s    (   R	   R)   R?   t   importStarredRS   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR|     s   t
   ClassScopec           B   s   e  Z RS(    (   R	   R)   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR     s   t   FunctionScopec           B   s;   e  Z d  Z e Z e d d d g  Z d   Z d   Z RS(   sp   
    I represent a name scope for a function.

    @ivar globals: Names declared 'global' in this function.
    t   __tracebackhide__t   __traceback_info__t   __traceback_supplement__c         C   s;   t  t |   j   |  j j   |  _ d  |  _ t |  _	 d  S(   N(
   R^   R   RO   t
   alwaysUsedt   copyt   globalsR2   t   returnValueR?   t   isGenerator(   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRO     s    	c         c   sa   xZ |  j    D]L \ } } | j r | |  j k r |  j r t | t  r | | f Vq q Wd S(   sR   
        Return a generator for the assignments which have not been used.
        N(   R,   RN   R   t
   usesLocalsR   Rs   (   R$   R8   t   binding(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   unusedAssignments  s
    
(	   R	   R)   R*   R?   R   t   setR   RO   R   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR     s   	t   GeneratorScopec           B   s   e  Z RS(    (   R	   R)   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR     s   t   ModuleScopec           B   s   e  Z d  Z e Z RS(   s   Scope for a module.(   R	   R)   R*   R#   t   _futures_allowed(    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR     s   t   DoctestScopec           B   s   e  Z d  Z RS(   s   Scope for a doctest.(   R	   R)   R*   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR     s   t   __file__t   __builtins__t   WindowsErrorc         C   s0   t  |  d  r |  j St  |  d  r, |  j Sd  S(   NRR   R8   (   RA   RR   R8   (   R5   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   getNodeName  s    t   Checkerc           B   s  e  Z d  Z d Z d4 Z e Z e e	  j
 e  Z e j j d  Z e rd e j e j d   n  [ d d4 d e j k d  Z d   Z d   Z d	   Z d
   Z e d    Z e j d    Z e d    Z d   Z d   Z e d  Z d   Z  d   Z! d   Z" d   Z# d   Z$ d   Z% d   Z& d   Z' d   Z( d   Z) d4 d  Z* d   Z+ d   Z, d   Z- d   Z. e/ j0   j1 Z2 d    Z3 d!   Z4 e* Z5 Z6 Z7 Z8 Z9 Z: Z; Z< Z= Z> Z? Z@ ZA ZB ZC e4 ZD e* ZE ZF ZG ZH ZI ZJ ZK ZL ZM ZN ZO ZP e4 ZQ ZR ZS ZT e* ZU ZV ZW e4 ZX ZY ZZ Z[ Z\ Z] e4 Z^ Z_ Z` Za Zb Zc Zd Ze Zf Zg Zh Zi Zj Zk Zl Zm Zn Zo Zp Zq Zr Zs Zt Zu Zv Zw Zx Zy Zz e* Z{ Z| Z} Z~ d"   Z d#   Z d$   Z e Z d%   Z e re* n e Z e Z Z d&   Z d'   Z e Z d(   Z d)   Z e Z Z d*   Z e Z d+   Z d,   Z d-   Z d.   Z e Z d/   Z d0   Z d1   Z e Z d2   Z d3   Z RS(5   s  
    I check the cleanliness and sanity of Python code.

    @ivar _deferredFunctions: Tracking list used by L{deferFunction}.  Elements
        of the list are two-tuples.  The first element is the callable passed
        to L{deferFunction}.  The second element is a copy of the scope stack
        at the time L{deferFunction} was called.

    @ivar _deferredAssignments: Similar to C{_deferredFunctions}, but for
        callables which are deferred assignment checks.
    i    t   PYFLAKES_BUILTINSt   ,s   (none)t   PYFLAKES_DOCTESTc         C   s   i  |  _  g  |  _ g  |  _ g  |  _ g  |  _ | |  _ | rT |  j j |  |  _ n  | |  _ t	   g |  _
 d g |  _ | |  _ |  j |  |  j |  j  d  |  _ |  j |  j  d  |  _ |  j
 d 3|  j   |  j   d  S(   Ni   (    (   t   _nodeHandlerst   _deferredFunctionst   _deferredAssignmentst
   deadScopesR   t   filenamet   builtInst   uniont   withDoctestR   t
   scopeStackt   exceptHandlerst   roott   handleChildrent   runDeferredR2   t   popScopet   checkDeadScopes(   R$   t   treeR   R   R   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRO     s(    										

c         C   s$   |  j  j | |  j |  j f  d S(   s{  
        Schedule a function handler to be called just before completion.

        This is used for handling function bodies, which must be deferred
        because code later in the file might modify the global scope. When
        `callable` is called, the scope at the time this is called will be
        restored, however it will contain any new bindings added to it.
        N(   R   R{   R   t   offset(   R$   t   callable(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   deferFunction  s    	c         C   s$   |  j  j | |  j |  j f  d S(   sl   
        Schedule an assignment handler to be called just after deferred
        function handlers.
        N(   R   R{   R   R   (   R$   R   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   deferAssignment  s    c         C   s7   x0 | D]( \ } } } | |  _  | |  _ |   q Wd S(   sV   
        Run the callables in C{deferred} using their associated scope stack.
        N(   R   R   (   R$   t   deferredt   handlerRq   R   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR     s    		c         C   s)   t  |  j  d k o( t |  j d t  S(   Ni   i   (   t   lenR   R   R   (   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   _in_doctest  s    c         C   s'   t  d   |  j D  s t S|  j j S(   Nc         s   s   |  ] } t  | t  Vq d  S(   N(   R   R   (   R=   Rq   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pys	   <genexpr>  s   (   t   allR   R?   Rq   R   (   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   futuresAllowed  s    	c         C   s7   | t  k s t  t |  j t  r3 t  |  j _ n  d  S(   N(   R?   Rg   R   Rq   R   R   (   R$   R   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR   "  s    c         C   s   |  j  d S(   Ni(   R   (   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRq   (  s    c         C   s   |  j  j |  j j    d  S(   N(   R   R{   R   t   pop(   R$   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR   ,  s    c         C   s  x|  j  D]} t | t  r% q
 n  | j d  } | rS t | t  rS d } n  | rz t | j  } | j |  } n
 g  } } | r!| j	 r t
 j j |  j  d k r x. | D]# } |  j t j | d j |  q Wn  | j	 r!x2 | j   D]! } t | t  r | | _ q q Wq!n  x | j   D] } t | t  r.| j pX| j | k } | st j }	 |  j |	 | j t |   n  xl | j D]^ }
 t |  j |
  t j  rt j }	 n | rqn	 t j }	 |  j |	 |
 | j | j  qWq.q.Wq
 Wd S(   s   
        Look at scopes which have been fully examined and report names in them
        which were imported but unused.
        Rw   s   __init__.pyN(   R   R   R   R+   Rv   R2   R   Ry   t
   differenceR   t   ost   patht   basenameR   t   reportR   t   UndefinedExportRM   t   valuesRm   RN   R[   R8   t   UnusedImportR   R]   t	   getParentR   t   Fort   ImportShadowedByLoopVart   RedefinedWhileUnused(   R$   Rq   t   all_bindingt	   all_namest	   undefinedR8   R   R   RN   t   messgR5   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR   /  sB    	

			c         C   s   |  j  j |    d  S(   N(   R   R{   (   R$   t
   scopeClass(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt	   pushScopea  s    c         O   s#   |  j  j | |  j | |   d  S(   N(   R   R{   R   (   R$   t   messageClasst   argst   kwargs(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR   d  s    c         C   s>   x7 t  r9 | j } t | d  r t | d  r | Sq Wd  S(   NRC   t   ctx(   R#   t   parentRA   (   R$   R5   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR   g  s    		 c         C   s   | | | f k s1 t  | d  o- t  | d  r5 d  S| | k rE | S| j | j k rm |  j | j | |  S| j | j k  r |  j | | j |  S|  j | j | j |  S(   NR   (   RA   R2   t   deptht   getCommonAncestorR   (   R$   t   lnodet   rnodet   stop(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR   n  s    !c         C   s.   x' | D] } |  j  | | |  r t Sq Wt S(   N(   R   R#   R?   (   R$   R5   t	   ancestorsR   t   a(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   descendantOf{  s    c         C   sn   |  j  | | |  j  } t |  } | rj x= | D]2 } |  j | | |  |  j | | |  Ar1 t Sq1 Wn  t S(   sA   True, if lnode and rnode are located on different forks of IF/TRY(   R   R   R   R   R#   R?   (   R$   R   R   t   ancestort   partsR,   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   differentForks  s    c         C   s  x1 |  j  d d d  D] } | j | k r Pq q W| j | j  } | r|  j | | j  r|  j | j  } t | t  r t | t j	  r |  j
 t j | | j | j  q| |  j k r`t | t j  r"t |  j | j  t j	 t j f  r"|  j
 t j | | j | j  q| j r| j |  r|  j
 t j | | j | j  qqt | t  r| j |  r| j j |  qn  | j |  j k r|  j | j j | _ n  | |  j | j <d S(   s   
        Called when a binding is altered.

        - `node` is the statement responsible for the change
        - `value` is the new value, a Binding instance
        Ni(   R   R8   R+   R   RM   R   R   R[   R   R   R   R   R   Rq   t   comprehensiont   RedefinedInListCompRN   RV   R   R]   R{   (   R$   R5   R   Rq   t   existingt   parent_stmt(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt
   addBinding  s.    !c         C   sM   y |  j  | SWn t k
 r. t |  } n Xt |  |  |  j  | <} | S(   N(   R   t   KeyErrorR   R1   (   R$   R   t   nodeTypeR   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   getNodeHandler  s    c         C   s  t  |  } | s d  Sd  } d  } x |  j d d  d  D] } | t k r` t | t  r` q9 n  y |  j | f | | _ Wn t k
 r n Xd  S| p | j	 } | t k	 r9 t | t
  } q9 q9 W| |  j k r d  S| rg  } xi |  j d d  d  D]Q } xH | j   D]: } t | t  r|  j | f | _ | j | j  qqWq Wd j t |   } |  j t j | | |  d  S| d k rt j j |  j  d k rd  Sd |  j d k r|  j t j | |  n  d  S(   Nis   , t   __path__s   __init__.pyt	   NameError(   R   R2   R   R?   R   R   Rq   RN   R   R   R   R   R   Rm   R{   R\   t   joinR"   R   R   t   ImportStarUsageR   R   R   R   R   t   UndefinedName(   R$   R5   R8   t   in_generatorsR   Rq   t	   from_listR   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   handleNodeLoad  s@    'c         C   s  t  |  } | s d  St |  j t  r | |  j k r x |  j d  D] } t | t t f  sf qE n  | | k o| | | j } | rE | d |  j k rE | |  j j k rE |  j t	 j
 | | j d | | | j  PqE qE Wn  |  j |  } t | t j t j f  s)| | j k r;|  j |  r;t | |  } nH | d k rtt |  j t  rtt | | j |  j  } n t | |  } |  j | |  d  S(   Nii    i   Rw   (   R   R   Rq   R   R   R   RN   R   R   R   t   UndefinedLocalRM   R   R   R   R   R   t   isLiteralTupleUnpackingRL   Rv   Rs   R   (   R$   R5   R8   Rq   RN   R   R   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   handleNodeStore  s*    !+c            s     f d   } t     } | s% d  S|   r2 d  St |  j t  rl | |  j j k rl |  j j j |  n8 y |  j | =Wn' t k
 r |  j t j	   |  n Xd  S(   Nc             sZ   t    d d  }  xA |  rU t |  t j t j t j f  r@ t St  |  d d  }  q Wt S(   sN   
            Return `True` if node is part of a conditional body.
            R   N(	   R1   R2   R   R   R   t   Whilet   IfExpR#   R?   (   t   current(   R5   (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   on_conditional_branch  s    	!(
   R   R   Rq   R   R   t   removeR   R   R   R   (   R$   R5   R   R8   (    (   R5   s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   handleNodeDelete  s    	$c         C   s1   x* t  | d | D] } |  j | |  q Wd  S(   NR6   (   R:   t
   handleNode(   R$   R   R6   R5   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR   .  s    c         C   sK   t  | t j  rG x. | j | j g D] } t | d  s& t Sq& Wt Sd  S(   NRC   (   R   R   t   Assignt   targetsR   RA   R?   R#   (   R$   R5   t   child(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR   2  s
    c         C   s7   t  | t j  p6 t  | t j  o6 t  | j t j  S(   s}   
        Determine if the given node is a docstring, as long as it is at the
        correct place in the node tree.
        (   R   R   R@   t   ExprR   (   R$   R5   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   isDocstring9  s    $c         C   st   t  | t j  r | j } n  t  | t j  s4 d St rJ | j d } n | j | j j	 d  d } | j | f S(   Ni   s   
(   NN(
   R   R   R   R   R@   R2   t   PYPYRQ   R   t   count(   R$   R5   t   doctest_lineno(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   getDocstringA  s    c         C   s:  | d  k r d  S|  j r` t | d d   d  k	 r` | j |  j d 7_ | j |  j d 7_ n  |  j r d |  j | j j GHn  |  j	 r t
 | t j  p |  j |  r t |  _	 n  |  j d 7_ |  j | _ | | _ z  |  j | j  } | |  Wd  |  j d 8_ X|  j r6d |  j d | j j GHn  d  S(   NRQ   i    i   s     s   end (   R2   R   R1   RQ   t
   col_offsett	   traceTreet	   nodeDepthR0   R	   R   R   R   t
   ImportFromR   R?   R   R   R   (   R$   R5   R   R   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR   O  s&    !			c         C   s  y5 |  j  | j d  \ } } | o1 |  j |  } Wn t t f k
 rO d  SX| sZ d  S|  j } |  j d g |  _ |  j p d } |  j t  d |  j	 k } | s |  j	 j
 d  n  x | D] } y t | j d d t j  }	 Wn} t k
 ret j   d }
 t r|
 j d 7_ n  | | j |
 j | j d |
 j pEd f } |  j t j | |  q X| d | | j | d | j d f |  _ |  j |	  | |  _ q W| s|  j	 j d  n  |  j   | |  _ d  S(   Ni    t   _s	   <doctest>t   execi   i   (   i    i    (   R   R   t   _getDoctestExamplest
   ValueErrort
   IndexErrorR   R   R   R   R   t   addt   compileRM   R   t   PyCF_ONLY_ASTt   SyntaxErrort   syst   exc_infoR   RQ   t   indentR   R   t   DoctestSyntaxErrorR   R   R   (   R$   R5   t	   docstringt   node_linenot   examplest   saved_stackt   node_offsett   underscore_in_builtinst   exampleR   t   et   position(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   handleDoctestsg  s@    	
c         C   s   d  S(   N(    (   R$   R5   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   ignore  s    c            sL  g    j  D] } t |  ^ q
 } t |  } g  | j   D] \ } } | d k r; | ^ q; } x | D] } g  t |  D] \ } } | | k ry | ^ qy }	 t   f d   |	 D  }
 t d   |
 j   D  rf x_ |	 D]T }   j  | } t | t  r|  j t	 j
 | | j  q |  j t	 j | |  q Wqf qf W|  j    d  S(   Ni   c         3   s"   |  ] } t    j |  Vq d  S(   N(   R<   R   (   R=   t   index(   R5   (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pys	   <genexpr>  s   c         s   s!   |  ] \ } } | d  k Vq d S(   i   N(    (   R=   R   R   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pys	   <genexpr>  s    (   t   keysR<   R/   R,   t	   enumeratet   anyR   RF   R   R   t   MultiValueRepeatedKeyVariableR8   t   MultiValueRepeatedKeyLiteralR   (   R$   R5   R   R  t
   key_countsR   t   duplicate_keysR>   t   i_keyt   key_indicesR   t	   key_indext   key_node(    (   R5   s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   DICT  s*    "1c         C   sN   t  | j t j  r= | j j g  k r= |  j t j |  n  |  j |  d  S(   N(	   R   t   testR   RB   RC   R   R   t   AssertTupleR   (   R$   R5   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   ASSERT  s    'c         C   s   |  j    r d n d } |  j | } |  j | k	 r x | j D] } t | |  } g  |  j D]2 } t | t j  s | j d | k r] | ^ q] |  _ | j	 | |  | | f | _
 x# |  j | d D] } | | | <q Wq> Wn  d S(   s5   
        Keep track of globals declarations.
        i   i    N(   R   R   Rq   Ry   Rs   R   R   R   t   message_argst
   setdefaultRN   (   R$   R5   t   global_scope_indext   global_scopet	   node_namet
   node_valuet   mRq   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   GLOBAL  s    "c         C   s(   |  j  t  |  j |  |  j   d  S(   N(   R   R   R   R   (   R$   R5   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   GENERATOREXP  s    c         C   s   t  | j t j t j f  rs |  j |  | j d k r t  |  j t  r t  | j	 t j
  r t |  j _ q ni t  | j t j t j f  r |  j |  n; t  | j t j  r |  j |  n t d | j f   d S(   sV   
        Handle occurrence of Name (which can be a load/store/delete access.)
        t   localss%   Got impossible expression context: %rN(   R   R   R   t   Loadt   AugLoadR   RR   Rq   R   R   t   CallR#   R   t   Storet   AugStoreR   t   DelR   t   RuntimeError(   R$   R5   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   NAME   s    !c         C   s   | } x t  | d  r | j | } } t | t  rM | | j k rM d  Sn  t | t j t j f  rl Pn  t  | d  r	 t | t j  r	 | | j	 k r |  j
 t j |  d  Sq	 q	 Wt | t j  r |  j
 t j |  n |  j
 t j |  d  S(   NR   t	   finalbody(   RA   R   R   t
   LOOP_TYPESR   R   t   FunctionDeft   ClassDeft   ContinueR8  R   R   t   ContinueInFinallyt   ContinueOutsideLoopt   BreakOutsideLoop(   R$   R5   R   t   n_child(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   CONTINUE  s    !c         C   s   t  |  j t t f  r/ |  j t j |  d  S| j ri t |  j d  ri |  j j	 ri | j |  j _	 n  |  j
 | j |  d  S(   NR   (   R   Rq   R   R   R   R   t   ReturnOutsideFunctionR   RA   R   R   (   R$   R5   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   RETURN-  s    	c         C   sR   t  |  j t t f  r/ |  j t j |  d  St |  j _ |  j	 | j
 |  d  S(   N(   R   Rq   R   R   R   R   t   YieldOutsideFunctionR#   R   R   R   (   R$   R5   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   YIELD:  s
    c            s   x!   j  D] }  j |    q
 W j     j   t   j      j r  j   r t  j	 t
  r  j    f d    n  d  S(   Nc              s    j     S(   N(   R  (    (   R5   R$   (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR   N  s    (   R   R   t   LAMBDAR   Rt   R8   R   R   R   Rq   R   R   (   R$   R5   t   deco(    (   R5   R$   s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   FUNCTIONDEFD  s    	c            s  g   g  } t  rC    f d        j j   j j } nW x>  j j  j j D]& }  j | j  | j | j  qZ W j j  j j } t  d  } x d D] } t	  j |  } | s q n   j t
 r | n | j  | r t
 r"| d } | j t	  j |   q5| j | j  q q W| rR| j  j  n  t t    t   k  rxF t   D]5 \ }	 } |  |	  k r} j t j  |  q}q}Wn  x+ | | D] }
 |
 r j |
   qqW   f d   }  j |  d  S(   Nc            sG   x@ |  D]8 } t  | t j  r/   | j  q  j | j  q Wd  S(   N(   R   R   RB   RC   R{   RR   (   t   arglistt   arg(   t   addArgsR   (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRK  W  s    t   returnst   varargt   kwargt
   annotationc             s    j    x'   D] }   j  t |     q Wt  j t  rm x7  j D] }  j |   qP Wn  j  j    f d   }  j |  t r  f d   }  j |  n   j	   d  S(   Nc             s=   x6   j  j   D]% \ }  }   j t j | j |   q Wd S(   sU   
                Check to see if any assignments have not been used.
                N(   Rq   R   R   R   t   UnusedVariableRM   (   R8   R   (   R$   (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   checkUnusedAssignments  s    c              s8     j  j r4   j  j r4   j t j   j  j  n  d S(   s   
                    Check to see if there is any return statement with
                    arguments but the function is a generator.
                    N(   Rq   R   R   R   R   t   ReturnWithArgsInsideGenerator(    (   R$   (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt&   checkReturnWithArgumentInsideGenerator  s    (
   R   R   Rr   R   R   R4   R   R   t   PY32R   (   R8   t   stmtRQ  RS  (   R   R5   R$   (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   runFunction  s    
(   RM  RN  (   t   PY2R   t   defaultst
   kwonlyargsR{   RJ  RO  t   kw_defaultsRA   R1   RG   RL  R   R   R  R   R   t   DuplicateArgumentR   R   (   R$   R5   t   annotationsRX  RJ  t   is_py3_funct   arg_namet   wildcardt   argannotationt   idxR   RV  (    (   RK  R   R5   R$   s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyRF  R  s@    
 !c            s  x!   j  D] }  j |    q
 Wx!   j D] }  j |    q. Wt su x$   j D] }  j |    qX Wn   j t   j r  j   r t	  j
 t  r  j    f d    n  x!   j D] }  j |    q W j    j   t   j     d S(   s   
        Check names used in a class definition, including its decorators, base
        classes, and the body of its definition.  Additionally, add its name to
        the current scope.
        c              s    j     S(   N(   R  (    (   R5   R$   (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR     s    N(   R   R   t   basesRW  t   keywordsR   R   R   R   R   Rq   R   R   R   R   R   Ru   R8   (   R$   R5   RG  t   baseNodet   keywordNodeRU  (    (   R5   R$   s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   CLASSDEF  s     	
c         C   s:   |  j  | j  |  j | j |  |  j | j |  d  S(   N(   R   t   targetR   R   (   R$   R5   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt	   AUGASSIGN  s    c         C   s   t  r t | j t j  r t } d } x[ t | j  D]J \ } } t | t j  r8 | rs |  j	 t
 j |  Pn  t } | } q8 q8 W| d k s t | j  | d d k r |  j	 t
 j |  q n  |  j |  d  S(   Nii   i   i   i   i   (   RW  R   R   R   R3  R?   R  RC   t   StarredR   R   t   TwoStarredExpressionsR#   R   t%   TooManyExpressionsInStarredAssignmentR   (   R$   R5   t   has_starredt   star_locR>   R   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   TUPLE  s    )c         C   s}   xv | j  D]k } d | j k r> | j r> t | j |  } n' | j pM | j } t | | | j  } |  j | |  q
 Wd  S(   NRa   (   Ry   R8   t   asnameR`   R[   R   (   R$   R5   t   aliast   importationR8   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   IMPORT  s    c         C   s  | j  d k rM |  j sV |  j t j | g  | j D] } | j ^ q1  qV n	 t |  _ d | j | j  pl d } x| j D]} | j	 p | j } | j  d k r t
 | | |  j  } | j t j k rx|  j t j | | j  qxn | j d k r`t r,t |  j t  r,|  j t j | |  qz n  t |  j _ |  j t j | |  t | |  } n t | | | | j  } |  j | |  qz Wd  S(   NRp   Ra   t    Rn   (   Rj   R   R   R   t   LateFutureImportRy   R8   R?   t   levelRo  Ro   Rq   Rp   t   all_feature_namest   FutureFeatureNotDefinedRW  R   R   t   ImportStarNotPermittedR#   R   t   ImportStarUsedRm   Ri   R   (   R$   R5   R   Rj   Rp  R8   Rq  (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt
   IMPORTFROM  s0    	)	
	c         C   s   g  } x t  | j  D] \ } } t | j t j  rd xL | j j D] } | j t |   qD Wn" | j r | j t | j   n  | j d  k r | t
 | j  d k  r |  j t j |  q q W|  j j |  x! | j D] } |  j | |  q W|  j j   |  j | d d d  S(   Ni   R6   R   (   R  R   R   t   typeR   RB   RC   R{   R   R2   R   R   R   t   DefaultExceptNotLastR   R   R   R   R   (   R$   R5   t   handler_namesR>   R   t   exc_typeR   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   TRY  s    	(c         C   s   t  s | j d  k r& |  j |  d  Sx= |  j d  d  d  D] } | j | k r= t } Pq= q= Wt } |  j |  |  j |  | s y |  j | j =Wq t	 k
 r q Xn  d  S(   Ni(
   RW  R8   R2   R   R   R#   R?   R   Rq   R   (   R$   R5   Rq   t   is_name_previously_defined(    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   EXCEPTHANDLER  s    c         C   sj   | j  r |  j | j |  n  t |  j t  sG |  j | j |  n  | j  rf |  j | j  |  n  d S(   s   
        Annotated assignments don't have annotations evaluated on function
        scope, hence the custom implementation.

        See: PEP 526.
        N(   R   R   Rg  R   Rq   R   RO  (   R$   R5   (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt	   ANNASSIGN;  s    		N(   R	   R)   R*   R   R2   R   R?   R   R   t   builtin_varsR   t   _MAGIC_GLOBALSR   R   t   environR+   t   _customBuiltInst   updateRb   RO   R   R   R   R   Re   R   t   setterRq   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   t   doctestt   DocTestParsert   get_examplesR   R  R  t   DELETEt   PRINTt   FORt   ASYNCFORt   WHILEt   IFt   WITHt   WITHITEMt	   ASYNCWITHt   ASYNCWITHITEMt   RAISEt
   TRYFINALLYt   EXECt   EXPRt   ASSIGNt   PASSt   BOOLOPt   BINOPt   UNARYOPt   IFEXPt   SETt   COMPAREt   CALLt   REPRt	   ATTRIBUTEt	   SUBSCRIPTt   STARREDt   NAMECONSTANTt   NUMt   STRt   BYTESt   ELLIPSISt   SLICEt   EXTSLICEt   INDEXt   LOADt   STOREt   DELt   AUGLOADt   AUGSTOREt   PARAMt   ANDt   ORt   ADDt   SUBt   MULTt   DIVt   MODt   POWt   LSHIFTt   RSHIFTt   BITORt   BITXORt   BITANDt   FLOORDIVt   INVERTt   NOTt   UADDt   USUBt   EQt   NOTEQt   LTt   LTEt   GTt   GTEt   ISt   ISNOTt   INt   NOTINt   MATMULTt   COMPREHENSIONt   KEYWORDt   FORMATTEDVALUEt	   JOINEDSTRR"  R%  R-  t   NONLOCALR.  RW  t   LISTCOMPt   DICTCOMPt   SETCOMPR7  RA  t   BREAKRC  RE  t   AWAITt	   YIELDFROMRH  t   ASYNCFUNCTIONDEFRF  Rf  Rh  Rn  t   LISTRr  Rz  R  t	   TRYEXCEPTR  R  (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyR     s   							2						'		6							'	>2v	$			
				
		Q						 		"(   i   i    (   i   i   (   i   i   (   i   i   (    (@   R*   Rp   R  R   R  t   version_infoRW  RT  RG   t   PY34t   pypy_version_infoR#   R   t   AttributeErrorR?   t   dirt
   __import__R  R   t   ImportErrort   _astR;  R   R   Re   R:  t   pyflakesR   R   R   R   R   R9  t   AsyncForR}   R   R/   R2   R:   R<   t   objectRL   RT   RI   RF   R[   R`   Ri   Rm   Ro   Rr   Rs   Rt   Ru   Rv   R|   R   R   R   R   R   R  R   R   (    (    (    s2   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/checker.pyt   <module>   st   

				(%
	