
'![c           @@ s  d  Z  d d l m Z m Z d d l m Z d d l Z d d l Z d d l Z d d l	 Z	 d d l	 m
 Z
 d d l Z d d l m Z m Z d d l m Z m Z d d l m Z d d	 l m Z e j d
  Z d   Z d   Z d   Z d   Z d d d d d d d d d d d d h Z d d d h Z d   Z d   Z e d  d! d" g  Z  d# e j! f d$     YZ" d% e j# f d&     YZ$ d'   Z% d S((   s<   Check Python 2 code for Python 2/3 source-compatible issues.i    (   t   absolute_importt   print_function(   t
   namedtupleN(   t   bases(   t   checkerst
   interfaces(   t   INFERENCE_FAILUREt	   INFERENCE(   t   WarningScope(   t   utilss   ^0+$c         C@ sS   t  j |   r t St j d |   rO y t |  d  Wn t k
 rJ t SXt Sd  S(   Ns   0\d+i   (   t   _ZEROt   matcht   Falset   ret   intt
   ValueErrort   Truet   None(   t   literal(    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   _is_old_octal+   s    c         C@ s5   t  |  t j  r t St  |  t j  o4 d |  j k S(   Nt   dict(   t
   isinstancet   astroidt   DictR   t   Instancet	   basenames(   t   value(    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   _inferred_value_is_dict7   s    c         C@ s~   t    } y@ |  j   } | t j k	 rH x | D] } | j |  q. Wn  Wn t j k
 r_ n X| sj t St d   | D  S(   Nc         s@ s   |  ] } t  |  Vq d  S(   N(   R   (   t   .0R   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pys	   <genexpr>I   s    (   t   sett   inferR   t   Uninferablet   addt   InferenceErrorR   t   any(   t   nodet   inferred_typest   inferredt   inferred_node(    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   _check_dict_node=   s    	c         C@ s   t  |  d d   d k S(   Nt   namet   __builtin__t   builtins(   R)   R*   (   t   getattrR   (   R#   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   _is_builtinL   s    t   itert   listt   tuplet   sortedR   t   sumR"   t   allt	   enumerateR   t   filtert   reversedt   itemst   keyst   valuesc         C@ s;  |  j  } t | t j  r t St | t j  rG | j |  k r7t Sn t | t j  r t | j t j	  r | j j
 | j j  d } t |  r | j j t k r t Sq7t | j t j  r7| j j d k r t Sq7nW t | t j  r7t | j d t j t j f  r7t | j d j  d k r7t Sn  t S(   s{   Check if the node is being used as an iterator.

    Definition is taken from lib2to3.fixer_util.in_special_context().
    i    t   joini   (   t   parentR   R   t   ForR   t   ComprehensionR-   t   Callt   funct   Namet   lookupR(   R,   t   _ACCEPTS_ITERATORt	   Attributet   attrnamet   Assignt   targetst   Listt   Tuplet   lent   eltsR   (   R#   R:   t   parent_scope(    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   _in_iterating_contextU   s&    	
"c         C@ s.   |  j  } t | t j t j t j t j f  S(   sA   Checks if an import node is in the context of a conditional.
    (   R:   R   R   t	   TryExceptt   ExceptHandlert   Ift   IfExp(   R#   R:   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   _is_conditional_importx   s    	t   BranchR#   t   is_py2_onlyt   Python3Checkerc        a   B@ s  e  Z e j Z e Z d  Z iC d?d 6d@d 6d	 d
 d i dAg d 6f d 6d d d i dBg d 6f d 6d d d i e j	 d 6dCg d 6f d 6d d d i dDd 6f d  6dEd$ 6dFd( 6dGd, 6dHd0 6dId4 6dJd8 6dKd< 6dLd@ 6dMdD 6dNdH 6dOdL 6dPdP 6dQdT 6dRdX 6dSd\ 6dTd` 6dUdd 6dVdh 6dWdl 6dXdp 6dYdt 6dZdx 6d[d| 6d} d~ d i d\g d 6f d 6d d d i d]g d 6f d 6d^d 6d_d 6d`d 6dad 6dbd 6dcd 6ddd 6ded 6dfd 6d d d i dgg d 6f d 6dhd 6did 6djd 6dkd 6dld 6dmd 6dnd 6dod 6dpd 6dqd 6drd 6dsd 6dtd 6dud 6dvd 6dwd 6dxd 6dyd 6dzd 6d{d 6d|d6d}d6d~d6dd6dd6dd6Z
 e dddddddd d!d"d#d$d%d&d'd(d)d*g  Z e d+d,d-d.d/d0d1d2d3d4d5g  Z e d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGg  Z i i e dHg  dI6d 6i e dJdKdLdMdNg  dO6d 6i e dPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhg  di6d 6e djdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddg_  d 6i e ddddddddddddddddddddddddddddddddddddg$  d6d 6i e dh  d6d6i e dddddddddddddddddd ddddddddd	d
dddddddddddh'  d6d6i e dh  dI6d6Z de j k obdk  n rse   Z n= e g  dddddg D] Z e j e  j   ^ q Z d  Z e d Z d   Z d!  Z d"  Z d#  Z d$  Z d%  Z d&  Z e  j! d  d'   Z" e  j! d d(   Z# d)  Z$ e  j! d  d*   Z% e& d+ Z' d,  Z( d-  Z) e  j! dz  d.   Z* e  j! dj  d/   Z+ d0  Z, e- d1   Z. e- d2   Z/ e- d3   Z0 e- d4   Z1 d5  Z2 d6  Z3 e  j! d~  d7   Z4 d8  Z5 d9  Z6 e  j! d d
 d:   Z7 e  j! d
 d d;   Z8 e  j! d  d<   Z9 e  j! d d  d=   Z: d>  Z; RS(  t   python3s   print statement useds   print-statementsG   Used when a print statement is used (`print` is a function in Python 3)t   E1601s   Parameter unpacking specifieds   parameter-unpackingsT   Used when parameter unpacking is specified for a function(Python 3 doesn't allow it)t   E1602s=   Implicit unpacking of exceptions is not supported in Python 3s   unpacking-in-exceptsw   Python3 will not allow implicit unpacking of exceptions in except clauses. See http://www.python.org/dev/peps/pep-3110/t   W0712t	   old_namest   E1603s=   Use raise ErrorClass(args) instead of raise ErrorClass, args.s   old-raise-syntaxsZ   Used when the alternate raise syntax 'raise foo, bar' is used instead of 'raise foo(bar)'.t   W0121t   E1604s   Use of the `` operatort   backticksY   Used when the deprecated "``" (backtick) operator is used instead  of the str() function.t   scopet   W0333t   E1605s%   Import * only allowed at module levels   import-star-module-levelsN   Used when the import star syntax is used somewhere else than the module level.i   i    t
   maxversiont   E1609s   apply built-in referenceds   apply-builtinsK   Used when the apply built-in function is referenced (missing from Python 3)t   W1601s   basestring built-in referenceds   basestring-builtinsP   Used when the basestring built-in function is referenced (missing from Python 3)t   W1602s   buffer built-in referenceds   buffer-builtinsL   Used when the buffer built-in function is referenced (missing from Python 3)t   W1603s   cmp built-in referenceds   cmp-builtinsI   Used when the cmp built-in function is referenced (missing from Python 3)t   W1604s   coerce built-in referenceds   coerce-builtinsL   Used when the coerce built-in function is referenced (missing from Python 3)t   W1605s   execfile built-in referenceds   execfile-builtinsN   Used when the execfile built-in function is referenced (missing from Python 3)t   W1606s   file built-in referenceds   file-builtinsJ   Used when the file built-in function is referenced (missing from Python 3)t   W1607s   long built-in referenceds   long-builtinsJ   Used when the long built-in function is referenced (missing from Python 3)t   W1608s   raw_input built-in referenceds   raw_input-builtinsO   Used when the raw_input built-in function is referenced (missing from Python 3)t   W1609s   reduce built-in referenceds   reduce-builtinsL   Used when the reduce built-in function is referenced (missing from Python 3)t   W1610s!   StandardError built-in referenceds   standarderror-builtinsS   Used when the StandardError built-in function is referenced (missing from Python 3)t   W1611s   unicode built-in referenceds   unicode-builtinsM   Used when the unicode built-in function is referenced (missing from Python 3)t   W1612s   xrange built-in referenceds   xrange-builtinsL   Used when the xrange built-in function is referenced (missing from Python 3)t   W1613s   __coerce__ method defineds   coerce-methodsI   Used when a __coerce__ method is defined (method is not used by Python 3)t   W1614s   __delslice__ method defineds   delslice-methodsK   Used when a __delslice__ method is defined (method is not used by Python 3)t   W1615s   __getslice__ method defineds   getslice-methodsK   Used when a __getslice__ method is defined (method is not used by Python 3)t   W1616s   __setslice__ method defineds   setslice-methodsK   Used when a __setslice__ method is defined (method is not used by Python 3)t   W1617s7   import missing `from __future__ import absolute_import`s   no-absolute-importst   Used when an import is not accompanied by ``from __future__ import absolute_import`` (default behaviour in Python 3)t   W1618s!   division w/o __future__ statements   old-divisions   Used for non-floor division w/o a float literal or ``from __future__ import division`` (Python 3 returns a float for int division unconditionally)t   W1619s   Calling a dict.iter*() methods   dict-iter-methods]   Used for calls to dict.iterkeys(), itervalues() or iteritems() (Python 3 lacks these methods)t   W1620s   Calling a dict.view*() methods   dict-view-methods]   Used for calls to dict.viewkeys(), viewvalues() or viewitems() (Python 3 lacks these methods)t   W1621s#   Called a next() method on an objects   next-method-calledsZ   Used when an object's next() method is called (Python 3 uses the next() built-in function)t   W1622s.   Assigning to a class's __metaclass__ attributes   metaclass-assignments   Used when a metaclass is specified by assigning to __metaclass__ (Python 3 specifies the metaclass as a class statement argument)t   W1623s-   Indexing exceptions will not work on Python 3s   indexing-exceptionsS   Indexing exceptions will not work on Python 3. Use `exception.args[index]` instead.t   W0713t   W1624s   Raising a string exceptions   raising-stringsG   Used when a string exception is raised. This will not work on Python 3.t   W0701t   W1625s   reload built-in referenceds   reload-builtins   Used when the reload built-in function is referenced (missing from Python 3). You can use instead imp.reload or importlib.reload.t   W1626s   __oct__ method defineds
   oct-methodsG   Used when an __oct__ method is defined (method is not used by Python 3)t   W1627s   __hex__ method defineds
   hex-methodsF   Used when a __hex__ method is defined (method is not used by Python 3)t   W1628s   __nonzero__ method defineds   nonzero-methodsJ   Used when a __nonzero__ method is defined (method is not used by Python 3)t   W1629s   __cmp__ method defineds
   cmp-methodsF   Used when a __cmp__ method is defined (method is not used by Python 3)t   W1630s   input built-in referenceds   input-builtinsY   Used when the input built-in is referenced (backwards-incompatible semantics in Python 3)t   W1632s   round built-in referenceds   round-builtinsY   Used when the round built-in is referenced (backwards-incompatible semantics in Python 3)t   W1633s   intern built-in referenceds   intern-builtinsM   Used when the intern built-in is referenced (Moved to sys.intern in Python 3)t   W1634s   unichr built-in referenceds   unichr-builtinsA   Used when the unichr built-in is referenced (Use chr in Python 3)t   W1635s*   map built-in referenced when not iteratings   map-builtin-not-iteratingse   Used when the map built-in is referenced in a non-iterating context (returns an iterator in Python 3)t   W1631s   implicit-map-evaluationt   W1636s*   zip built-in referenced when not iteratings   zip-builtin-not-iteratingse   Used when the zip built-in is referenced in a non-iterating context (returns an iterator in Python 3)t   W1637s,   range built-in referenced when not iteratings   range-builtin-not-iteratingsg   Used when the range built-in is referenced in a non-iterating context (returns an iterator in Python 3)t   W1638s-   filter built-in referenced when not iteratings   filter-builtin-not-iteratingsh   Used when the filter built-in is referenced in a non-iterating context (returns an iterator in Python 3)t   W1639s-   Using the cmp argument for list.sort / sorteds   using-cmp-arguments   Using the cmp argument for list.sort or the sorted builtin should be avoided, since it was removed in Python 3. Using either `key` or `functools.cmp_to_key` should be preferred.t   W1640s6   Implementing __eq__ without also implementing __hash__s   eq-without-hashs   Used when a class implements __eq__ but not __hash__.  In Python 2, objects get object.__hash__ as the default implementation, in Python 3 objects get None as their default __hash__ implementation if they also implement __eq__.t   W1641s   __div__ method defineds
   div-methods   Used when a __div__ method is defined.  Using `__truediv__` and setting__div__ = __truediv__ should be preferred.(method is not used by Python 3)t   W1642s   __idiv__ method defineds   idiv-methods   Used when an __idiv__ method is defined.  Using `__itruediv__` and setting__idiv__ = __itruediv__ should be preferred.(method is not used by Python 3)t   W1643s   __rdiv__ method defineds   rdiv-methods   Used when a __rdiv__ method is defined.  Using `__rtruediv__` and setting__rdiv__ = __rtruediv__ should be preferred.(method is not used by Python 3)t   W1644s%   Exception.message removed in Python 3s   exception-message-attributesY   Used when the message attribute is accessed on an Exception.  Use str(exception) instead.t   W1645s$   non-text encoding used in str.decodes   invalid-str-codecsq   Used when using str.encode or str.decode with a non-text encoding.  Use codecs module to handle arbitrary codecs.t   W1646s   sys.maxint removed in Python 3s   sys-max-ints9   Used when accessing sys.maxint.  Use sys.maxsize instead.t   W1647s   Module moved in Python 3s   bad-python3-imports?   Used when importing a module that no longer exists in Python 3.t   W1648s4   Accessing a deprecated function on the string modules   deprecated-string-functionsK   Used when accessing a string function that has been deprecated in Python 3.t   W1649s:   Using str.translate with deprecated deletechars parameterss   deprecated-str-translate-callsw   Used when using the deprecated deletechars parameters from str.translate.  Use re.sub to remove the desired characters t   W1650s7   Accessing a deprecated function on the itertools modules   deprecated-itertools-functionsN   Used when accessing a function on itertools that has been removed in Python 3.t   W1651s1   Accessing a deprecated fields on the types modules   deprecated-types-fieldsG   Used when accessing a field on types that has been removed in Python 3.t   W1652s   next method defineds   next-method-definedsy   Used when a next method is defined that would be an iterator in Python 2 but is treated as a normal function in Python 3.t   W1653s(   dict.items referenced when not iteratings   dict-items-not-iteratings_   Used when dict.items is referenced in a non-iterating context (returns an iterator in Python 3)t   W1654s'   dict.keys referenced when not iteratings   dict-keys-not-iteratings^   Used when dict.keys is referenced in a non-iterating context (returns an iterator in Python 3)t   W1655s)   dict.values referenced when not iteratings   dict-values-not-iteratings`   Used when dict.values is referenced in a non-iterating context (returns an iterator in Python 3)t   W1656s4   Accessing a removed attribute on the operator modules   deprecated-operator-functionsQ   Used when accessing a field on operator module that has been removed in Python 3.t   W1657s2   Accessing a removed attribute on the urllib modules   deprecated-urllib-functionsX   Used when accessing a field on urllib module that has been removed or moved in Python 3.t   W1658s(   Accessing a removed xreadlines attributes   xreadlines-attributesT   Used when accessing the xreadlines() function on a file stream, removed in Python 3.t   W1659s/   Accessing a removed attribute on the sys modules   deprecated-sys-functionsL   Used when accessing a field on sys module that has been removed in Python 3.t   W1660s=   Using an exception object that was bound by an except handlers   exception-escapes   Emitted when using an exception, that was bound in an except handler, outside of the except handler. On Python 3 these exceptions will be deleted once they get out of the except handler.t   W1661s6   Using a variable that was bound inside a comprehensions   comprehension-escapes   Emitted when using a variable, that was bound in a comprehension handler, outside of the comprehension itself. On Python 3 these variables will be deleted outside of the comprehension.t   W1662t   applyt
   basestringt   buffert   cmpt   coercet   execfilet   filet   inputt   internt   longt	   raw_inputt   reducet   roundt   StandardErrort   unichrt   unicodet   xranget   reloadt
   __coerce__t   __delslice__t   __getslice__t   __setslice__t   __oct__t   __hex__t   __nonzero__t   __cmp__t   __div__t   __idiv__t   __rdiv__t   base64_codect   base64t   base_64t	   bz2_codect   bz2t	   hex_codect   hext   quopri_codect   quoprit   quotedprintablet   quoted_printablet   uu_codect   uut
   zlib_codect   zlibt   zipt   rot13t   rot_13t   maxintt   syst   izipt   ifiltert   imapt   izip_longestt   ifilterfalset	   itertoolst   EllipsisTypet
   XRangeTypet   ComplexTypet
   StringTypet   TypeTypet   LongTypet   UnicodeTypet	   ClassTypet
   BufferTypet   StringTypest   NotImplementedTypet   NoneTypet   InstanceTypet	   FloatTypet	   SliceTypet   UnboundMethodTypet
   ObjectTypet   IntTypet	   TupleTypet   ListTypet   DictTypet   FileTypet   DictionaryTypet   BooleanTypet   DictProxyTypet   typest   anydbmt   BaseHTTPServerR)   t   CGIHTTPServert   ConfigParsert   copy_regt   cPicklet	   cStringIOt   Cookiet	   cookielibt   dbhasht   dbmt   dumbdbmt   dumbdbt   Dialogt   DocXMLRPCServert
   FileDialogt   FixTkt   gdbmt   htmlentitydefst
   HTMLParsert   httplibt
   markupbaset   Queuet   reprt   robotparsert   ScrolledTextt   SimpleDialogt   SimpleHTTPServert   SimpleXMLRPCServert   StringIOt   dummy_threadt   SocketServers   test.test_supportt   Tkintert   Tixt   Tkconstantst   tkColorChoosert   tkCommonDialogt   Tkdndt   tkFileDialogt   tkFontt   tkMessageBoxt   tkSimpleDialogt   turtlet   UserListt
   UserStringt   whichdbt   _winregt	   xmlrpclibt   audiodevt   Bastiont   bsddb185t   bsddb3t   Canvast   cfmfilet   clt   commandst   compilert   dircachet   dlt	   exceptiont   fpformatt   htmllibt   ihookst   imageopt   imputilt   linuxaudiodevt   md5t   mhlibt	   mimetoolst
   MimeWritert   mimifyt	   multifilet   mutext   newt   popen2t	   posixfilet   puret   rexect   rfc822t   setst   shat   sgmllibt   sret	   stringoldt   sunaudiot   svs   test.testallt   threadt   timingt   toaifft   usert   urllib2t   urlparset	   maketranst   atoft   atoit   atolt
   capitalizet
   expandtabst   findt   rfindt   indext   rindext   countt   lowert   letterst   splitt   rsplitt   splitfieldsR9   t
   joinfieldst   lstript   rstript   stript   swapcaset	   translatet   uppert   ljustt   rjustt   centert   zfillt   replacet	   lowercaset	   uppercaset
   atol_errort
   atof_errort
   atoi_errort   index_errort   stringt   divt   operatort   addbaset   addclosehookt   addinfot
   addinfourlt   always_safet   basejoint   ftpcachet	   ftperrorst
   ftpwrappert
   getproxiest   getproxies_environmentt   getproxies_macosx_sysconft   maint	   noheaderst   pathname2urlt   proxy_bypasst   proxy_bypass_environmentt   proxy_bypass_macosx_sysconft   quotet
   quote_plust
   reporthookt	   splitattrt	   splithostt
   splitnportt   splitpasswdt	   splitportt
   splitqueryt   splittagt	   splittypet	   splitusert
   splitvaluet   unquotet   unquote_plust   unwrapt   url2pathnamet
   urlcleanupt	   urlencodet   urlopent   urlretrievet   urllibt	   exc_cleari   s   sys.version_info[0] == 2s   sys.version_info[0] < 3s   sys.version_info == (2, 7)s   sys.version_info <= (2, 7)s   sys.version_info < (3, 0)c         O@ sD   t  |  _ t  |  _ t   |  _ g  |  _ t t |   j | |   d  S(   N(	   R   t   _future_divisiont   _future_absolute_importR   t   _modules_warned_aboutt   _branch_stackt   superRS   t   __init__(   t   selft   argst   kwargs(    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyR  5  s
    			c         O@ sC   | s  |  j  o |  j  d j r? t t |   j | | |  n  d  S(   Ni(   R  RR   R  RS   t   add_message(   R  t   msg_idt   always_warnR  R  (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyR  =  s     c         C@ s   t  | j t j  r[ t  | j j t j  r[ | j j j d k r | j j d k r t Sn1 t  | j t j	  r | j j
   |  j k r t St S(   Nt   sixt   PY2(   R   t   testR   RB   t   exprR?   R(   RC   R   t   Comparet	   repr_treet   _python_2_testsR   (   R  R#   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   _is_py2_testB  s    -'c         C@ s&   |  j  j t | |  j |    d  S(   N(   R  t   appendRQ   R  (   R  R#   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   visit_ifK  s    c         C@ s"   |  j  j   j | k s t  d  S(   N(   R  t   popR#   t   AssertionError(   R  R#   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   leave_ifN  s    c         C@ s&   |  j  j t | |  j |    d  S(   N(   R  R  RQ   R  (   R  R#   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   visit_ifexpQ  s    c         C@ s"   |  j  j   j | k s t  d  S(   N(   R  R  R#   R  (   R  R#   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   leave_ifexpT  s    c         C@ s   t  |  _ t  |  _ d S(   s*   Clear checker state after previous module.N(   R   R  R  (   R  R#   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   visit_moduleW  s    	c         C@ s   | j    r | j |  j k rf | j } | j j d  rL | j d d !} n  |  j | d d | q | j d k r d } t j | t j d g  r d	 } n  t	 | j
 j
  | k r |  j d
 d | q q n  d  S(   Nt   __i   is   -methodR#   t   nexti   s   .staticmethodi    s   next-method-defined(   t	   is_methodR(   t   _unused_magic_methodst
   startswithR  R	   t   decorated_withR   t   BUILTINSRH   R  (   R  R#   t   method_namet   failing_arg_count(    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   visit_functiondef\  s    			c         C@ s@   x9 | j  D]. } t | t j  r
 |  j d d | q
 q
 Wd  S(   Ns   parameter-unpackingR#   (   R  R   R   RG   R  (   R  R#   t   arg(    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   visit_argumentsp  s    c         @ s  d    j  D    j j   } | j t j d t j } t    f d   | j t j d t j D  } | r{ d  St	   } t
 |  } x| | D]t } | j   k s | j  j k s | j | k s | j   j   r q n  | j | j  |  j d d | q Wd  S(   Nc         S@ s1   h  |  ]' } t  | j t j  r | j j  q S(    (   R   t   targetR   t
   AssignNameR(   (   R   t	   generator(    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pys	   <setcomp>y  s   	 t
   skip_klassc         3@ s6   |  ], } | j    k r | j  j k r | Vq d  S(   N(   R(   t   lineno(   R   t   assign_name(   t   namesR#   (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pys	   <genexpr>  s   s   comprehension-escapeR#   (   t
   generatorsR:   R]   t   nodes_of_classR   R?   t   FunctionDefR"   R  R   R.   R(   R  t	   statementt	   parent_ofR    R  (   R  R#   R]   t   scope_namest   has_redefined_assign_namet   emitted_for_namest
   scope_name(    (   R  R#   s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   visit_listcompv  s,    			c         C@ sf   | j  | j  \ } } t |  rb | j |  j k rb | j j   d } |  j | d | qb n  d S(   s+   Detect when a "bad" built-in is referenced.s   -builtinR#   N(   R@   R(   R,   t   _bad_builtinsRZ  R  (   R  R#   t
   found_nodet   _t   message(    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt
   visit_name  s
    c         C@ s   |  j  d d | d t d  S(   Ns   print-statementR#   R  (   R  R   (   R  R#   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   visit_print  s    c         C@ s   x |  j  j   D] \ } } | | k r | |  j k r t | t  ru | r |  j j |  |  j | d | q q | r | | j |  r |  j | d | q q q Wd  S(   NR#   (   t   _bad_python3_module_mapR6   R  R   t	   frozensetR    R  t   intersection(   R  R#   t   modulet
   attributest   report_on_modulesR  t
   module_map(    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   _warn_if_deprecated  s    c         C@ s7  | j  d k r\ x | j D]< \ } } | d k r= t |  _ q | d k r t |  _ q q Wnz |  j s |  j j d  r |  j d d | t |  _ q n  t |  r | j	 r |  j
 | | j  d   | j D  n  | j d d d k r3|  j j d	  r3t | j   t j  s0|  j d	 d | q0q3n  d  S(
   Nt
   __future__t   divisionR    s   no-absolute-importR#   c         S@ s   h  |  ] } | d   q S(   i    (    (   R   t   x(    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pys	   <setcomp>  s   	 i    t   *s   import-star-module-level(   t   modnameR  R   R  R  t   lintert   is_message_enabledR  RP   t   levelR  R   R]   R   t   Module(   R  R#   R(   R  (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   visit_importfrom  s     	&c         C@ s}   |  j  s= |  j j d  r= |  j d d | t |  _  q= n  t |  sy x- | j D] \ } } |  j | | d   qS Wn  d  S(   Ns   no-absolute-importR#   (	   R  R  R  R  R   RP   R  R  R   (   R  R#   R(   R  (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   visit_import  s    	c         C@ s   d | j  k r% |  j d d | n  t | j   j d   | j   D  } d | k r{ d | k r{ |  j d d | n  d  S(   Nt   __metaclass__s   metaclass-assignmentR#   c         s@ s   |  ] } | j  Vq d  S(   N(   R(   (   R   R  (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pys	   <genexpr>  s    t   __eq__t   __hash__s   eq-without-hash(   t   localsR  R   t   uniont	   mymethods(   R  R#   t   locals_and_methods(    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   visit_classdef  s
    (c         C@ sx   |  j  rt | j d k rt xX | j | j f D]. } t | t j  r, t | j t  r, Pq, q, W|  j	 d d | n  d  S(   Nt   /s   old-divisionR#   (
   R  t   opt   leftt   rightR   R   t   ConstR   t   floatR  (   R  R#   R  (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   visit_binop  s
    $c         C@ sH  g  } t  | j t j  r | j j d k r t j | j j  } | sL d  Sd j t	 j
  } t  | t j  s | j   | k r| j } qnv t  | j t j  r| j j d k rt j | j  } | s d  Sd j t	 j
  } | j   | k r| j } qn  x: | pg  D], } | j d k r|  j d d | d  SqWd  S(   Nt   sorts   {}.listR0   s	   {}.sortedR   s   using-cmp-argumentR#   (   R   R>   R   RB   RC   R	   t
   safe_inferR  t   formatR   R  RF   t   qnamet   keywordsR?   R(   R  R  (   R  R#   R  R%   t   builtins_listt   builtins_sortedt   kwarg(    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   _check_cmp_argument  s,    c         C@ s5   t  |  t j  r% t  |  j t j  St  |  t j  S(   N(   R   R   R  R   R  t   string_typesR?   (   R#   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   _is_constant_string_or_name  s    c         C@ s   t  |  t j  o |  j d  k S(   N(   R   R   R  R   R   (   R#   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   _is_none   s    c         C@ s,   t  |  j  | k o+ t |  j  o+ |  j S(   N(   RH   R  R2   R  (   R#   t   number_of_args(    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   _has_only_n_positional_args  s    c         C@ sj   |  r t  n t } xQ |  D]I } | t j k r7 t } q t | t j  o[ t | j t j  s d  Sq W| S(   N(
   R   R   R   R   R   R  R   R  R  R   (   R$   t
   confidencet   inferred_type(    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   _could_be_string  s    	c   
      C@ s  |  j  |  t | j t j  rt   } y x | j j j   D] } | t j k r\ qA n  | j	 |  t | t j
  r |  j | | j | j j h d t n  t |  rA | j j t k rA t |  s d j | j j  } |  j | d | q qA qA WWn t j k
 rn X| j r|  j |  } | r| j j d k rt | j  d k r| j d r| j d } |  j | |  n  | j j d k r|  j | d	  r|  j | j d  r|  j | j d  r|  j d
 d | d | qn  d  S| j r	d  S| j j d k r1|  j d d | qt | j j  r| j j d k rk|  j d d | q| j j d k r|  j d d | qqn t | j t j  r| j j | j j  d } t  |  r| j j d  k r"t |  s"d j | j j  } |  j | d | q"n  | j j d k r| j r| j } x= | pRg  D], }	 |	 j! d k rS|  j |	 j" |  PqSqSWqqn  d  S(!   NR  s   dict-{}-not-iteratingR#   t   encodet   decodei   i    Rd  i   s   deprecated-str-translate-callR  R  s   next-method-calledt   iterkeyst
   itervaluest	   iteritemss   dict-iter-methodt   viewkeyst
   viewvaluest	   viewitemss   dict-view-methodR4   t   mapt   rangeR   s   {}-builtin-not-iteratingt   opent   encoding(   R  R  (   R  R  R  (   R  R  R  (   R4   R  R  R   (#   R  R   R>   R   RB   R   R  R   R   R    R  R  R(   RC   R   R   t   DICT_METHODSRK   R   R  R!   R  R  RH   t   _validate_encodingR  R	  R  R  R'   R?   R@   R,   R  R   (
   R  R#   R$   t   inferred_receivert   checkert   is_str_confidencet	   first_argR  R  R  (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt
   visit_call  sp    	
!	"		c         C@ sG   t  | t j  rC | j } | |  j k rC |  j d d | qC n  d  S(   Ns   invalid-str-codecR#   (   R   R   R  R   t   _invalid_encodingsR  (   R  R  R#   R   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyR  [  s
    	c         C@ sw   y[ xT | j  j   D]C } t | t j  s1 q n  t j |  r |  j d d | q q WWn t j k
 rr d SXd S(   s    Look for indexing exceptions. s   indexing-exceptionR#   N(	   R   R   R   R   R   R	   t   inherit_from_std_exR  R!   (   R  R#   R%   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   visit_subscriptb  s    c         C@ s,   t  | j   t j  r( |  j |  n  d  S(   N(   R   t   assign_typeR   t	   AugAssignt   visit_attribute(   R  R#   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   visit_assignattrn  s    c         C@ s   |  j  |  d  S(   N(   R'  (   R  R#   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   visit_delattrr  s    c         C@ s   | j  d k r& |  j d d | d Sd } y x | j j   D] } t | t j  r t j |  r | j  | k r | | j	 k r q? n  |  j d d | q n  t | t j
  r? |  j | | j | j  h d t q? q? WWn t j k
 r d SXd S(   s   Look for removed attributest
   xreadliness   xreadlines-attributeR#   NR  s   exception-message-attributeR  (   RC   R  R  R   R   R   R   R	   R#  t   instance_attrsR  R  R(   R   R!   (   R  R#   t   exception_messageR%   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyR'  u  s"    c         @ sF  d   } t   j t j t j f  r> |  j d d  d S j sK d S j j   } | j t j	 d t j
 } t |  } g  | D]@ } | j  j j k r | j  j k r | |  r | ^ q }  f d   | j t j d t j
 D } xF | D]>   t    f d   | D  r+q n  |  j d d   q Wd S(	   s@   Visit an except handler block and check for exception unpacking.c         S@ sf   |  j    } |  } x2 | rF | | k rF t | t j  rF | j } q Wt | t j  oe | j |  k S(   N(   R]   R   R   RM   R:   t   type(   R#   R]   t   current(    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   _is_used_in_except_block  s
    (s   unpacking-in-exceptR#   NR  c         @ s.   h  |  ]$ } | j    j  j  k r | j  q S(    (   R(   R  (   R   R  (   R#   (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pys	   <setcomp>  s   	c         3@ s1   |  ]' }  j  | k  o&   j  k  n Vq d  S(   N(   R  (   R   t   elem(   t   leaked_nameR#   (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pys	   <genexpr>  s    s   exception-escape(   R   R(   R   RG   RF   R  R:   R]   R  R?   R  R.   R  R  R"   (   R  R#   R/  R]   R  R  t   potential_leaked_namest   reassignments_for_same_name(    (   R1  R#   s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   visit_excepthandler  s.    			
'	c         C@ s   |  j  d d | d  S(   NR\   R#   (   R  (   R  R#   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt
   visit_repr  s    c         C@ s   t  j r@ | j d k	 r@ | j d k	 r@ |  j d d | q@ n  | j d k rS d S| j } |  j | |  rr d Sy t t j	 |   } Wn t j
 k
 r d SX|  j | |  d S(   s[   Visit a raise statement and check for raising
        strings or old-raise-syntax.
        s   old-raise-syntaxR#   N(   R  R  t   excR   t   instR  t   _check_raise_valueR  R   t   unpack_inferR!   (   R  R#   R  R   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   visit_raise  s    		c         C@ sH   t  | t j  rD | j } t  | t  rD |  j d d | t Sn  d  S(   Ns   raising-stringR#   (   R   R   R  R   t   strR  R   R   (   R  R#   R  R   (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyR8    s    	(   s   print statement useds   print-statementsG   Used when a print statement is used (`print` is a function in Python 3)(   s   Parameter unpacking specifieds   parameter-unpackingsT   Used when parameter unpacking is specified for a function(Python 3 doesn't allow it)(   RW   s   unpacking-in-except(   RZ   s   old-raise-syntax(   R^   R\   (   i   i    (   s   apply built-in referenceds   apply-builtinsK   Used when the apply built-in function is referenced (missing from Python 3)(   s   basestring built-in referenceds   basestring-builtinsP   Used when the basestring built-in function is referenced (missing from Python 3)(   s   buffer built-in referenceds   buffer-builtinsL   Used when the buffer built-in function is referenced (missing from Python 3)(   s   cmp built-in referenceds   cmp-builtinsI   Used when the cmp built-in function is referenced (missing from Python 3)(   s   coerce built-in referenceds   coerce-builtinsL   Used when the coerce built-in function is referenced (missing from Python 3)(   s   execfile built-in referenceds   execfile-builtinsN   Used when the execfile built-in function is referenced (missing from Python 3)(   s   file built-in referenceds   file-builtinsJ   Used when the file built-in function is referenced (missing from Python 3)(   s   long built-in referenceds   long-builtinsJ   Used when the long built-in function is referenced (missing from Python 3)(   s   raw_input built-in referenceds   raw_input-builtinsO   Used when the raw_input built-in function is referenced (missing from Python 3)(   s   reduce built-in referenceds   reduce-builtinsL   Used when the reduce built-in function is referenced (missing from Python 3)(   s!   StandardError built-in referenceds   standarderror-builtinsS   Used when the StandardError built-in function is referenced (missing from Python 3)(   s   unicode built-in referenceds   unicode-builtinsM   Used when the unicode built-in function is referenced (missing from Python 3)(   s   xrange built-in referenceds   xrange-builtinsL   Used when the xrange built-in function is referenced (missing from Python 3)(   s   __coerce__ method defineds   coerce-methodsI   Used when a __coerce__ method is defined (method is not used by Python 3)(   s   __delslice__ method defineds   delslice-methodsK   Used when a __delslice__ method is defined (method is not used by Python 3)(   s   __getslice__ method defineds   getslice-methodsK   Used when a __getslice__ method is defined (method is not used by Python 3)(   s   __setslice__ method defineds   setslice-methodsK   Used when a __setslice__ method is defined (method is not used by Python 3)(   s7   import missing `from __future__ import absolute_import`s   no-absolute-importst   Used when an import is not accompanied by ``from __future__ import absolute_import`` (default behaviour in Python 3)(   s!   division w/o __future__ statements   old-divisions   Used for non-floor division w/o a float literal or ``from __future__ import division`` (Python 3 returns a float for int division unconditionally)(   s   Calling a dict.iter*() methods   dict-iter-methods]   Used for calls to dict.iterkeys(), itervalues() or iteritems() (Python 3 lacks these methods)(   s   Calling a dict.view*() methods   dict-view-methods]   Used for calls to dict.viewkeys(), viewvalues() or viewitems() (Python 3 lacks these methods)(   s#   Called a next() method on an objects   next-method-calledsZ   Used when an object's next() method is called (Python 3 uses the next() built-in function)(   s.   Assigning to a class's __metaclass__ attributes   metaclass-assignments   Used when a metaclass is specified by assigning to __metaclass__ (Python 3 specifies the metaclass as a class statement argument)(   Ry   s   indexing-exception(   R{   s   raising-string(   s   reload built-in referenceds   reload-builtins   Used when the reload built-in function is referenced (missing from Python 3). You can use instead imp.reload or importlib.reload.(   s   __oct__ method defineds
   oct-methodsG   Used when an __oct__ method is defined (method is not used by Python 3)(   s   __hex__ method defineds
   hex-methodsF   Used when a __hex__ method is defined (method is not used by Python 3)(   s   __nonzero__ method defineds   nonzero-methodsJ   Used when a __nonzero__ method is defined (method is not used by Python 3)(   s   __cmp__ method defineds
   cmp-methodsF   Used when a __cmp__ method is defined (method is not used by Python 3)(   s   input built-in referenceds   input-builtinsY   Used when the input built-in is referenced (backwards-incompatible semantics in Python 3)(   s   round built-in referenceds   round-builtinsY   Used when the round built-in is referenced (backwards-incompatible semantics in Python 3)(   s   intern built-in referenceds   intern-builtinsM   Used when the intern built-in is referenced (Moved to sys.intern in Python 3)(   s   unichr built-in referenceds   unichr-builtinsA   Used when the unichr built-in is referenced (Use chr in Python 3)(   R   s   implicit-map-evaluation(   s*   zip built-in referenced when not iteratings   zip-builtin-not-iteratingse   Used when the zip built-in is referenced in a non-iterating context (returns an iterator in Python 3)(   s,   range built-in referenced when not iteratings   range-builtin-not-iteratingsg   Used when the range built-in is referenced in a non-iterating context (returns an iterator in Python 3)(   s-   filter built-in referenced when not iteratings   filter-builtin-not-iteratingsh   Used when the filter built-in is referenced in a non-iterating context (returns an iterator in Python 3)(   s-   Using the cmp argument for list.sort / sorteds   using-cmp-arguments   Using the cmp argument for list.sort or the sorted builtin should be avoided, since it was removed in Python 3. Using either `key` or `functools.cmp_to_key` should be preferred.(   s6   Implementing __eq__ without also implementing __hash__s   eq-without-hashs   Used when a class implements __eq__ but not __hash__.  In Python 2, objects get object.__hash__ as the default implementation, in Python 3 objects get None as their default __hash__ implementation if they also implement __eq__.(   s   __div__ method defineds
   div-methods   Used when a __div__ method is defined.  Using `__truediv__` and setting__div__ = __truediv__ should be preferred.(method is not used by Python 3)(   s   __idiv__ method defineds   idiv-methods   Used when an __idiv__ method is defined.  Using `__itruediv__` and setting__idiv__ = __itruediv__ should be preferred.(method is not used by Python 3)(   s   __rdiv__ method defineds   rdiv-methods   Used when a __rdiv__ method is defined.  Using `__rtruediv__` and setting__rdiv__ = __rtruediv__ should be preferred.(method is not used by Python 3)(   s%   Exception.message removed in Python 3s   exception-message-attributesY   Used when the message attribute is accessed on an Exception.  Use str(exception) instead.(   s$   non-text encoding used in str.decodes   invalid-str-codecsq   Used when using str.encode or str.decode with a non-text encoding.  Use codecs module to handle arbitrary codecs.(   s   sys.maxint removed in Python 3s   sys-max-ints9   Used when accessing sys.maxint.  Use sys.maxsize instead.(   s   Module moved in Python 3s   bad-python3-imports?   Used when importing a module that no longer exists in Python 3.(   s4   Accessing a deprecated function on the string modules   deprecated-string-functionsK   Used when accessing a string function that has been deprecated in Python 3.(   s:   Using str.translate with deprecated deletechars parameterss   deprecated-str-translate-callsw   Used when using the deprecated deletechars parameters from str.translate.  Use re.sub to remove the desired characters (   s7   Accessing a deprecated function on the itertools modules   deprecated-itertools-functionsN   Used when accessing a function on itertools that has been removed in Python 3.(   s1   Accessing a deprecated fields on the types modules   deprecated-types-fieldsG   Used when accessing a field on types that has been removed in Python 3.(   s   next method defineds   next-method-definedsy   Used when a next method is defined that would be an iterator in Python 2 but is treated as a normal function in Python 3.(   s(   dict.items referenced when not iteratings   dict-items-not-iteratings_   Used when dict.items is referenced in a non-iterating context (returns an iterator in Python 3)(   s'   dict.keys referenced when not iteratings   dict-keys-not-iteratings^   Used when dict.keys is referenced in a non-iterating context (returns an iterator in Python 3)(   s)   dict.values referenced when not iteratings   dict-values-not-iteratings`   Used when dict.values is referenced in a non-iterating context (returns an iterator in Python 3)(   s4   Accessing a removed attribute on the operator modules   deprecated-operator-functionsQ   Used when accessing a field on operator module that has been removed in Python 3.(   s2   Accessing a removed attribute on the urllib modules   deprecated-urllib-functionsX   Used when accessing a field on urllib module that has been removed or moved in Python 3.(   s(   Accessing a removed xreadlines attributes   xreadlines-attributesT   Used when accessing the xreadlines() function on a file stream, removed in Python 3.(   s/   Accessing a removed attribute on the sys modules   deprecated-sys-functionsL   Used when accessing a field on sys module that has been removed in Python 3.(   s=   Using an exception object that was bound by an except handlers   exception-escapes   Emitted when using an exception, that was bound in an except handler, outside of the except handler. On Python 3 these exceptions will be deleted once they get out of the except handler.(   s6   Using a variable that was bound inside a comprehensions   comprehension-escapes   Emitted when using a variable, that was bound in a comprehension handler, outside of the comprehension itself. On Python 3 these variables will be deleted outside of the comprehension.(   i   i   (   i   i   i   (<   t   __name__t
   __module__R   t   IAstroidCheckert   __implements__R   t   enabledR(   R   t   NODEt   msgsR  R  R  R"  R  R   t   version_infoR  R  R   t   extract_nodeR  R  R  R  R  R  R  R  R  R  R	   t   check_messagesR  R  R  R  R   R  R  R  R  R  R  t   staticmethodR  R	  R  R  R!  R  R$  R(  R)  R'  R4  R5  R:  R8  (    (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyRS      s  	                                                                                                                        
 	+									#	
						H			,t   Python3TokenCheckerc           B@ s   e  Z e j Z d  Z e Z i d d d i d d 6f d 6d d	 d
 i d d 6d g d 6f d 6d d d i d d 6f d 6d d d i d d 6f d 6d d d i d  d 6f d 6Z d   Z	 RS(!   RT   s   Use of long suffixs   long-suffixs~   Used when "l" or "L" is used to mark a long integer. This will not work in Python 3, since `int` and `long` types have merged.i   i    R`   t   E1606s   Use of the <> operators   old-ne-operators\   Used when the deprecated "<>" operator is used instead of "!=". This is removed in Python 3.t   W0331RX   t   E1607s   Use of old octal literals   old-octal-literalsr   Used when encountering the old octal syntax, removed in Python 3. To use the new syntax, prepend 0o on the number.t   E1608s-   Non-ascii bytes literals not supported in 3.xs   non-ascii-bytes-literalsd   Used when non-ascii bytes literals are found in a program. They are no longer supported in Python 3.t   E1610s0   unicode raw string literals not supported in 3.xs   invalid-unicode-literals`   Used when raw unicode literals are found in a program. They are no longer supported in Python 3.t   E1611c         C@ sV  xOt  |  D]A\ } \ } } } } } | t j k r | j   j d  rf |  j d d | d q t |  r |  j d d | d q n  | | d d k r |  j d d | | d	 d n  | t j k r| j d
  rt	 d   | D  r|  j d d | d qn  | t j k r | j d  r |  j d d | d q q Wd  S(   Nt   ls   long-suffixt   linei    s   old-octal-literali   s   <>s   old-ne-operatori   t   bc         s@ s'   |  ] } t  |  d  k r | Vq d S(   i   N(   t   ord(   R   R0  (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pys	   <genexpr>  s    s   non-ascii-bytes-literalt   urs   invalid-unicode-literal(
   R3   t   tokenizet   NUMBERRZ  t   endswithR  R   t   STRINGR  R"   (   R  t   tokenst   idxt   tok_typet   tokent   startR  (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   process_tokens   s    ("(   i   i    (   i   i    (   RI  s   old-ne-operator(   i   i    (   i   i    (   i   i    (
   R<  R=  R   t   ITokenCheckerR?  R(   R   R@  RB  R\  (    (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyRG    s4   	
c         C@ s*   |  j  t |    |  j  t |    d  S(   N(   t   register_checkerRS   RG  (   R  (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   register  s    (&   t   __doc__R  R    R   t   collectionsR   R   R   RS  R   R   R  t   pylintR   R   t   pylint.interfacesR   R   t   pylint.utilsR   t   pylint.checkersR	   t   compileR
   R   R   R'   R,   RA   R  RK   RP   RQ   t   BaseCheckerRS   t   BaseTokenCheckerRG  R_  (    (    (    s6   lib/python2.7/site-packages/pylint/checkers/python3.pyt   <module>   s:   					#	   \5