Ë
    7^(hK  ã                   óþ  — d dl mZmZmZ d dlmZmZmZmZm	Z	 d dl
m
Z
 d dlZd dlZd dlZd dlmZ d dlmZ deiZ e e ee«      d    ee«      «      Z ee«      sJ ‚ e eee«      «      Z eed«      Z eed	«      Zd
ZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ% ejL                  d«      Z' ejL                  d«      Z( ejL                  d«      Z) ejL                  d«      Z* ejL                  d«      Z+ ejL                  d«      Z, ejL                  d«      Z- ejL                  d«      Z.d „ Z/d!„ Z0 e1«       d"fd#„Z2 e1«       dfd$„Z3 G d%„ d&ejh                  «      Z5 e5«       Z6d'„ Z7d(„ Z8d)„ Z9d*„ Z:d+„ Z;d,„ Z<d-„ Z=d.„ Z>d/„ Z?y)0é    )ÚwalkÚsepÚpardir)ÚsplitÚjoinÚabspathÚexistsÚisfile)ÚglobN)Úraises©Ú_test_this_file_encodingr   ÚbinÚexamplesz/File contains trailing whitespace: %s, line %s.z.File contains an implicit import: %s, line %s.z2File contains tabs instead of spaces: %s, line %s.z:File contains carriage returns at end of line: %s, line %sz+File contains string exception: %s, line %sz,File contains generic exception: %s, line %sz:File contains old-style raise statement: %s, line %s, "%s"z-File does not end with a newline: %s, line %sz/File ends with more than 1 newline: %s, line %sz6Function should start with 'test_' or '_': %s, line %sz.This is a duplicate test function: %s, line %sz3File contains assignments to self/cls: %s, line %s.z&File contains '.func is': %s, line %s.z+File contains bare expression: %s, line %s.z(^\s*(>>> )?(\.\.\. )?from .* import .*\*z9^\s*(>>> )?(\.\.\. )?raise(\s+(\'|\")|\s*(\(\s*)+(\'|\"))z=^\s*(>>> )?(\.\.\. )?raise(\s+Exception|\s*(\(\s*)+Exception)z1^\s*(>>> )?(\.\.\. )?raise((\s*\(\s*)|\s+)\w+\s*,z$^def\s+(?!(_|test))[^(]*\(\s*\)\s*:$z^def\s+test_.*:$z.*[/\\]test_.*\.py$z\.\s*func\s+isc                 ó   — t        | «      t        | j                  «       «      z
  }| ||dz    dvr| d| }n6| |dz   d }| d| |dt        |«      t        |j                  «       «      z
   z   }|j                  «       |k(   S )z{Returns True if there are tabs in the leading whitespace of a line,
    including the whitespace of docstring code samples.é   )z...z>>>N)ÚlenÚlstripÚ
expandtabs)ÚsÚnÚcheckÚsmores       úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/testing/tests/test_code_quality.pyÚtab_in_leadingr   7   s‹   € ô 	ˆA‹”�Q—X‘X“Z“Ñ €AØˆQˆq�1‰uˆ:˜Ñ'Ø�"�1�‰à�!�a‘%�&�	ˆØ�"�1�˜Ð?œs 5›z¬C°·±³Ó,?Ñ?Ð@Ñ@ˆØ× Ñ Ó" eÑ+Ð,Ð,ó    c                 óx  ‡— t        j                  | «      j                  D �cg c]  }t        |t         j                  «      sŒ|‘Œ! }}g }|D �]d  }|j                  D �]Q  }t        |t         j
                  «      sŒt        d„ |j                  D «       «      rŒ<|j                  dk(  rŒL|j                  j                  sŒc|j                  j                  d   j                  Št        j                  |«      D ]´  }t        |t         j                  «      sŒ|j                  D ]ˆ  }t        |t         j                  «      r!|j                  ‰k(  r|j!                  |«       Œ>t        |t         j"                  «      sŒYt        ˆfd„|j$                  D «       «      sŒx|j!                  |«       ŒŠ Œ¶ �ŒT �Œg |S c c}w )zœReturns a list of "bad" assignments: if there are instances
    of assigning to the first argument of the class method (except
    for staticmethod's).
    c              3   ón   K  — | ]-  }t        |t        j                  «      r|j                  d k(  –— Œ/ y­w)ÚstaticmethodN©Ú
isinstanceÚastÚNameÚid)Ú.0Úds     r   ú	<genexpr>z(find_self_assignments.<locals>.<genexpr>O   s0   è ø€ ò IØ´
¸1¼c¿h¹hÔ0Gð —4‘4˜>Õ)ñ Iùs   ‚35Ú__new__r   c              3   óp   •K  — | ]-  }t        |t        j                  «      r|j                  ‰k(  –— Œ/ y ­w©Nr    )r%   ÚqÚ	first_args     €r   r'   z(find_self_assignments.<locals>.<genexpr>^   s/   øè ø€ ò ">¸Ü%/°´3·8±8Ô%<ð #$§$¡$¨)Õ"3ñ ">ùs   ƒ36)r"   ÚparseÚbodyr!   ÚClassDefÚFunctionDefÚanyÚdecorator_listÚnameÚargsÚargr   ÚAssignÚtargetsr#   r$   ÚappendÚTupleÚelts)r   r   ÚtÚbadÚcÚmÚar,   s          @r   Úfind_self_assignmentsr@   C   sZ  ø€ ô
 —I‘I˜a“L×%Ñ%ÖEˆq¬°A´s·|±|Õ)DŠÐE€AÐEà
€CØó *ˆØ—‘ó 	*ˆAÜ˜a¤§¡Ô1ØÜñ IØ×,Ñ,ôIô IàØ�v‰v˜Ò"ØØ—6‘6—;’;ØØŸ™Ÿ™ A™×*Ñ*ˆIä—X‘X˜a“[ò *�Ü˜a¤§¡Õ,ØŸY™Yò *˜Ü% a¬¯©Ô2°q·t±t¸yÒ7HØŸJ™J q�MÜ(¨¬C¯I©IÕ6Ü!ó ">¸Q¿V¹Vô ">õ >àŸJ™J q�Mñ*ò*ò	*ð*ð. €Jùò5 	Fs   £F7ÁF7z*.pyc           	      ór   — | syt        | «      D ]&  \  }}}t        t        t        ||«      «      ||«       Œ( y)zÔ
    Checks all files in the directory tree (with base_path as starting point)
    with the file_check function provided, skipping files that contain
    any of the strings in the set provided by exclusions.
    N)r   Úcheck_filesr   r   )Ú	base_pathÚ
file_checkÚ
exclusionsÚpatternÚrootÚdirsÚfiless          r   Úcheck_directory_treerJ   e   s>   € ñ ØÜ! )›_ò GÑˆˆd�EÜ”Dœ˜d GÓ,Ó-¨z¸:ÕFñGr   c                 ó´   ‡— | sy| D ]O  Št        ‰«      rt        ‰«      sŒt        ˆfd„|D «       «      rŒ/|�t        j                  |‰«      sŒH |‰«       ŒQ y)z—
    Checks all files with the file_check function provided, skipping files
    that contain any of the strings in the set provided by exclusions.
    Nc              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr*   © )r%   ÚexÚfnames     €r   r'   zcheck_files.<locals>.<genexpr>{   s   øè ø€ Ò0˜rˆr�UŒ{Ñ0ùs   ƒ)r	   r
   r1   ÚreÚmatch)rI   rD   rE   rF   rO   s       @r   rB   rB   q   sU   ø€ ñ
 ØØò ˆÜ�eŒ}¤F¨5¤MØÜÓ0 ZÔ0Ô0ØØˆ?œbŸh™h w°Õ6Ù�uÕñr   c                   ó   — e Zd ZdZd„ Zd„ Zy)Ú_VisitaÅ  return the line number corresponding to the
    line on which a bare expression appears if it is a binary op
    or a comparison that is not in a with block.

    EXAMPLES
    ========

    >>> import ast
    >>> class _Visit(ast.NodeVisitor):
    ...     def visit_Expr(self, node):
    ...         if isinstance(node.value, (ast.BinOp, ast.Compare)):
    ...             print(node.lineno)
    ...     def visit_With(self, node):
    ...         pass  # no checking there
    ...
    >>> code='''x = 1    # line 1
    ... for i in range(3):
    ...     x == 2       # <-- 3
    ... if x == 2:
    ...     x == 3       # <-- 5
    ...     x + 1        # <-- 6
    ...     x = 1
    ...     if x == 1:
    ...         print(1)
    ... while x != 1:
    ...     x == 1       # <-- 11
    ... with raises(TypeError):
    ...     c == 1
    ...     raise TypeError
    ... assert x == 1
    ... '''
    >>> _Visit().visit(ast.parse(code))
    3
    5
    6
    11
    c                 ó    — t        |j                  t        j                  t        j                  f«      rJ t
        d|j                  fz  «       ‚y )NÚ )r!   Úvaluer"   ÚBinOpÚCompareÚmessage_bare_exprÚlineno©ÚselfÚnodes     r   Ú
visit_Exprz_Visit.visit_Expr§   s;   € Ü�d—j‘j¤3§9¡9¬c¯k©kÐ":Ô;Ø>Ô*¨b°$·+±+Ð->Ñ>Ó>�4ð <r   c                  ó   — y r*   rM   r[   s     r   Ú
visit_Withz_Visit.visit_Withª   s   € Ør   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r^   r`   rM   r   r   rS   rS   �   s   „ ñ$òJ?ór   rS   c                 ón  — t        j                  | «      }	 t        j                  |«       y# t        $ r~}|j
                  sJ ‚|j
                  d   }|j                  t        j                  dd«      d   «      sJ ‚t        |j                  dd«      d   j                  d«      «      cY d}~S d}~ww xY w)z]return None or else 0-based line number of code on which
    a bare expression appeared.
    r   ú:é   ú ú.N)r"   r-   ÚBareExprÚvisitÚAssertionErrorr4   Ú
startswithrY   r   ÚintÚrsplitÚrstrip)ÚcodeÚtreeÚmsgs      r   Úline_with_bare_exprrt   ±   s•   € ô �9‰9�T‹?€Dð6Ü�‰�tÕøÜò 6Ø�xŠxˆˆxØ�h‰h�q‰kˆØ�~‰~Ô/×5Ñ5°c¸1Ó=¸aÑ@ÔAÐAÐAÜ�3—:‘:˜c 1Ó% aÑ(×/Ñ/°Ó4Ó5Õ5ûð	6ús   —- ­	B4¶A3B/Â)B4Â/B4c                  ól  ‡‡— ˆfd„} ˆfd„ŠdD �cg c]  }t        t        |«      ‘Œ }}dt        z  dt        z  dt        z  dt        z  dt        z  h}d	t        z  d
t        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  dt        z  hŠt        || «       t	        t
        | h d£d«       t	        t        | |«       t	        t        | |«       yc c}w )a€  
    This test tests all files in SymPy and checks that:
      o no lines contains a trailing whitespace
      o no lines end with 

      o no line uses tabs instead of spaces
      o that the file ends with a single newline
      o there are no general or string exceptions
      o there are no old style raise statements
      o name of arg-less test suite functions start with _ or test_
      o no duplicate function names that start with test_
      o no assignments to self variable in class methods
      o no lines contain ".func is" except in the test suite
      o there is no do-nothing expression like `a == b` or `x + 1`
    c                 ó¸   •— t        | d¬«      5 } ‰| |«       d d d «       t        | d¬«      5 }t        | |«       d d d «       y # 1 sw Y   Œ,xY w# 1 sw Y   y xY w)NÚutf8)Úencoding)Úopenr   )rO   Ú	test_fileÚtest_this_files     €r   Útestztest_files.<locals>.testÏ   s^   ø€ Ü�% &Ô)ð 	-¨YÙ˜5 )Ô,÷	-ä�% &Ô)ð 	7¨YÜ$ U¨IÔ6÷	7ð 	7÷	-ð 	-ú÷	7ð 	7ús   �
A®AÁAÁAc                 óö  •‡ — d }|j                  «       }|j                  d«       t        ‰ vr‰ n‰ j                  t        d«      d   }|j	                  d«      rt        |«      }|�J t        ‰ |dz   fz  «       ‚d }d}t        «       }t        |«      D �]  \  }}t        j                  ‰ «      r—t        j                  |«      rJ t        ‰ |dz   fz  «       ‚t        j                  |«      rZ|dz  }|j                  |dd  j                  d«      d   j!                  «       «       t#        |«      |k7  rJ t$        ‰ |dz   fz  «       ‚|j'                  d«      rJ t(        ‰ |dz   fz  «       ‚|j'                  d«      rJ t*        ‰ |dz   fz  «       ‚t-        |«      rJ t.        ‰ |dz   fz  «       ‚t0        j3                  |«      rJ t4        ‰ |dz   fz  «       ‚t6        j3                  |«      rJ t8        ‰ |dz   fz  «       ‚t:        j3                  |«      r+t=        t?        ˆ fd	„‰	«      «      sJ t@        ‰ |dz   fz  «       ‚tB        j3                  |«      r(t        j3                  ‰ «      sJ tD        ‰ |dz   fz  «       ‚tF        j3                  |«      }|€�ŒÿJ tH        ‰ |dz   |jK                  d
«      fz  «       ‚ |�B|dk(  r|dkD  rJ tL        ‰ |dz   fz  «       ‚|j'                  d«      sJ tN        ‰ |dz   fz  «       ‚y y )Nr   rg   éÿÿÿÿÚtest_r   ú()z 
z	
z
c                 ó   •— | ‰v S r*   rM   )rN   rO   s    €r   ú<lambda>z4test_files.<locals>.test_this_file.<locals>.<lambda>ö   s   ø€ ¨r°U¨{€ r   é   ú
)(ÚreadÚseekr   ro   rm   rt   rY   ÚsetÚ	enumerateÚtest_file_rerQ   Útest_suite_def_reÚmessage_test_suite_defÚtest_ok_def_reÚaddr   Ústripr   Úmessage_duplicate_testÚendswithÚmessage_spaceÚmessage_carriager   Úmessage_tabsÚstr_raise_reÚsearchÚmessage_str_raiseÚgen_raise_reÚmessage_gen_raiseÚimplicit_test_reÚlistÚfilterÚmessage_implicitÚ
func_is_reÚmessage_func_isÚold_raise_reÚmessage_old_raiseÚgroupÚmessage_multi_eofÚmessage_eof)
rO   rz   Úidxrq   ÚpyÚlineÚtestsÚtest_setÚresultÚimport_excludes
   `        €r   r{   z"test_files.<locals>.test_this_fileÕ   sô  ù€ ØˆØ�~‰~ÓˆØ�‰�qÔÜ Ñ&‰U¨E¯L©L¼¸aÓ,@ÀÑ,DˆØ�=‰=˜Ô!Ü% dÓ+ˆCØˆ?Ø>Ô+¨u°c¸A±gÐ.>Ñ>Ó>�5àˆØˆÜ“5ˆÜ" 9Ó-ó 	5‰IˆC�Ü×!Ñ! %Ô(Ü$×*Ñ*¨4Ô0ØKÔ"8¸EÀ3ÈÁ7Ð;KÑ"KÓK˜5Ü!×'Ñ'¨Ô-Ø˜Q‘J�EØ—L‘L  a b §¡°Ó!4°QÑ!7×!=Ñ!=Ó!?Ô@Ü˜8“}¨Ò-ØOÔ&<ÀÀsÈQÁwÐ?OÑ&OÓO˜uØ�}‰}˜_Ô-Ø>œm¨u°c¸A±gÐ.>Ñ>Ó>�uØ�}‰}˜VÔ$ØAÔ.°%¸¸q¹Ð1AÑAÓA�uÜ˜dÔ#Ø=œl¨e°S¸1±WÐ-=Ñ=Ó=�uÜ×"Ñ" 4Ô(ØBÔ/°5¸#À¹'Ð2BÑBÓB�uÜ×"Ñ" 4Ô(ØBÔ/°5¸#À¹'Ð2BÑBÓB�uÜ ×'Ñ'¨Ô-ÜœVÓ$:¸NÓKÔLØAÔ.°%¸¸q¹Ð1AÑAÓA�uÜ× Ñ  Ô&¬|×/BÑ/BÀ5Ô/IØ@œo°¸¸a¹Ð0@Ñ@Ó@�uä!×(Ñ(¨Ó.ˆFàÒ!ð5Ô/Ø˜3 ™7 F§L¡L°£Oð35ñ 5ó 5�uð9	5ð> ÐØ�tŠ|  a¢ØBÔ/°5¸#À¹'Ð2BÑBÓB�uØ—]‘] 4Ô(à<œk¨U°C¸!±GÐ,<Ñ<Ó<�uð )ð r   )z	isympy.pyzbuild.pyzsetup.pyzL%(sep)ssympy%(sep)sparsing%(sep)sautolev%(sep)s_antlr%(sep)sautolevparser.pyzK%(sep)ssympy%(sep)sparsing%(sep)sautolev%(sep)s_antlr%(sep)sautolevlexer.pyzN%(sep)ssympy%(sep)sparsing%(sep)sautolev%(sep)s_antlr%(sep)sautolevlistener.pyzH%(sep)ssympy%(sep)sparsing%(sep)slatex%(sep)s_antlr%(sep)slatexparser.pyzG%(sep)ssympy%(sep)sparsing%(sep)slatex%(sep)s_antlr%(sep)slatexlexer.pyz%(sep)ssympy%(sep)s__init__.pyz%(sep)svector%(sep)s__init__.pyz"%(sep)smechanics%(sep)s__init__.pyz %(sep)squantum%(sep)s__init__.pyz%(sep)spolys%(sep)s__init__.pyz,%(sep)spolys%(sep)sdomains%(sep)s__init__.pyz#%(sep)sinteractive%(sep)ssession.pyz%(sep)sisympy.pyz%(sep)sbin%(sep)ssympy_time.pyz$%(sep)sbin%(sep)ssympy_time_cache.pyz&%(sep)sparsing%(sep)ssympy_tokenize.pyz'%(sep)splotting%(sep)spygletplot%(sep)sz)%(sep)sbin%(sep)stest_external_imports.pyz*%(sep)sbin%(sep)stest_submodule_imports.pyz"%(sep)sutilities%(sep)sruntests.pyz %(sep)sutilities%(sep)spytest.pyz"%(sep)sutilities%(sep)srandtest.pyz"%(sep)sutilities%(sep)stmpfiles.pyz)%(sep)sutilities%(sep)squality_unicode.py>   ú.shú.pycú~Ú*N)r   ÚTOP_PATHÚsepdrB   rJ   ÚBIN_PATHÚ
SYMPY_PATHÚEXAMPLES_PATH)r|   ÚfileÚtop_level_filesÚexcluderª   r{   s       @@r   Ú
test_filesr·   ¿   sC  ù€ ô 7ô1=ðj9ö °”tœH dÕ+ð €Oð ð 	WÔY]Ñ]ØUÔX\Ñ\ØXÔ[_Ñ_ØRÔUYÑYØQÔTXÑXð€Gð 	)¬4Ñ/ð 	*¬DÑ0Ø,¬tÑ3Ø*¬TÑ1Ø(¬4Ñ/Ø6¼Ñ=à-´Ñ4àœTÑ!à(¬4Ñ/Ø.´Ñ5à0´4Ñ7à1´DÑ8à3´dÑ:Ø4´tÑ;à,¬tÑ3Ø*¬TÑ1Ø,¬tÑ3Ø,¬tÑ3Ø3´dÑ:ð;€Nô> � Ô&Üœ 4Ò)=¸sÔCÜœ T¨7Ô3Üœ¨¨gÕ6ùòas   ‘D1c                 ó:   — t        j                  dd«      dz  | z   S )Nr   é
   rh   )ÚrandomÚrandint)r=   s    r   Ú_with_spacer¼   =  s   € ä�>‰>˜!˜RÓ  Ñ$ qÑ(Ð(r   c                  ó  — g d¢} g d¢}g d¢}g d¢}| D ]q  }t         j                  t        |«      «      �J |«       ‚t        j                  t        |«      «      �J |«       ‚t        j                  t        |«      «      €ŒlJ |«       ‚ |D ]'  }t         j                  t        |«      «      �Œ"J |«       ‚ |D ]'  }t        j                  t        |«      «      �Œ"J |«       ‚ |D ]'  }t        j                  t        |«      «      �Œ"J |«       ‚ y )N)z#some text # raise Exception, 'text'z2raise ValueError('text') # raise Exception, 'text'úraise ValueError('text')zraise ValueErrorr¾   zraise ValueError('text') #,zB'"""This function will raise ValueError, except when it doesn't"""zraise (ValueError('text'))zraise 'exception'zraise 'Exception'zraise "exception"zraise "Exception"zraise 'ValueError')z1raise Exception('text') # raise Exception, 'text'úraise Exception('text')zraise Exceptionr¿   zraise Exception('text') #,úraise Exception, 'text'ú1raise Exception, 'text' # raise Exception('text')ú1raise Exception, 'text' # raise Exception, 'text'ú>>> raise Exception, 'text'ú5>>> raise Exception, 'text' # raise Exception('text')ú5>>> raise Exception, 'text' # raise Exception, 'text')rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   zraise ValueError, 'text'z2raise ValueError, 'text' # raise Exception('text')z2raise ValueError, 'text' # raise Exception, 'text'z>>> raise ValueError, 'text'z6>>> raise ValueError, 'text' # raise Exception('text')z6>>> raise ValueError, 'text' # raise Exception, 'text'zraise(ValueError,zraise (ValueError,zraise( ValueError,zraise ( ValueError,zraise(ValueError ,zraise (ValueError ,zraise( ValueError ,zraise ( ValueError ,)r”   r•   r¼   r—   rŸ   )Úcandidates_okÚstr_candidates_failÚgen_candidates_failÚold_candidates_failr=   s        r   Ú'test_raise_statement_regular_expressionrÊ   B  s'  € ò
€MòÐòÐòÐð. ò >ˆÜ×"Ñ"¤;¨q£>Ó2Ð:Ð=¸AÓ=Ð:Ü×"Ñ"¤;¨q£>Ó2Ð:Ð=¸AÓ=Ð:Ü×"Ñ"¤;¨q£>Ó2Ñ:Ð=¸AÓ=Ð:ð>ð !ò BˆÜ×"Ñ"¤;¨q£>Ó2Ñ>ÐAÀÓAÐ>ðBà ò BˆÜ×"Ñ"¤;¨q£>Ó2Ñ>ÐAÀÓAÐ>ðBà ò BˆÜ×"Ñ"¤;¨q£>Ó2Ñ>ÐAÀÓAÐ>ñBr   c                  óÄ   — g d¢} g d¢}| D ]'  }t         j                  t        |«      «      €Œ"J |«       ‚ |D ]'  }t         j                  t        |«      «      �Œ"J |«       ‚ y )N)zfrom sympy import somethingz>>> from sympy import somethingz%from sympy.somewhere import somethingz)>>> from sympy.somewhere import somethingzimport sympyz>>> import sympyz import sympy.something.somethingz... import sympyz$... import sympy.something.somethingz... from sympy import somethingz)... from sympy.somewhere import somethingz>> from sympy import *z# from sympy import *zsome text # from sympy import *)zfrom sympy import *z>>> from sympy import *zfrom sympy.somewhere import *z!>>> from sympy.somewhere import *z... from sympy import *z!... from sympy.somewhere import *)r™   r•   r¼   ©rÆ   Úcandidates_failr=   s      r   Ú(test_implicit_imports_regular_expressionrÎ   …  st   € ò€Mò €Oð ò BˆÜ×&Ñ&¤{°1£~Ó6Ñ>ÐAÀÓAÐ>ðBàò FˆÜ×&Ñ&¤{°1£~Ó6ÑBÐEÀAÓEÐBñFr   c                  ó    — g d¢} g d¢}| D ]  }t         j                  |«      €ŒJ |«       ‚ |D ]  }t         j                  |«      �ŒJ |«       ‚ y )N)z    def foo():
zdef foo(arg):
zdef _foo():
zdef test_foo():
)zdef foo():
zdef foo() :
zdef foo( ):
zdef  foo():
)rŠ   r•   rÌ   s      r   Útest_test_suite_defsrÐ   ¤  sh   € ò€Mò€Oð ò 6ˆÜ ×'Ñ'¨Ó*Ñ2Ð5°AÓ5Ð2ð6àò :ˆÜ ×'Ñ'¨Ó*Ñ6Ð9¸Ó9Ð6ñ:r   c                  ón   — g d¢} ddg}d}d„ }| D ]  } ||«      |k(  rŒJ ‚ |D ]  } ||«      |k7  rŒJ ‚ y )N)zdef foo():
def foo():
zdef test():
def test_():
zdef test_():
def test__():
zdef test_():
def test_ ():
zdef test_1():
def  test_1():
©Nr   c                 ó<  — d}t        «       }t        | j                  «       «      D ]t  \  }}t        j	                  |«      sŒ|dz  }|j                  |dd  j                  d«      d   j                  «       «       t        |«      |k7  sŒddt        d|dz   fz  fc S  y)Nr   rg   r   r€   Fr   rÒ   )
r‡   rˆ   Ú
splitlinesrŒ   rQ   r�   r   rŽ   r   r�   )r´   r§   r¨   r¤   r¦   s        r   r   z'test_test_duplicate_defs.<locals>.checkÂ  sš   € ØˆÜ“5ˆÜ" 4§?¡?Ó#4Ó5ò 	N‰IˆC�Ü×#Ñ# DÕ)Ø˜‘
�Ø—‘˜T ! "˜XŸ^™^¨CÓ0°Ñ3×9Ñ9Ó;Ô<Ü�x“= EÓ)Ø Ô"8¸GÀSÈ1ÁWÐ;MÑ"MÐMÒMð	Nð r   rM   )rÆ   rÍ   Úokr   r=   s        r   Útest_test_duplicate_defsrÖ   ·  sd   € ò€Mð 	(Ø)ð€Oð 
€Bò	ð ò ˆÙ�Q‹x˜2‹~Ðˆ~ðàò ˆÙ�Q‹x˜2‹~Ðˆ~ñr   c                  óp   — g d¢} g d¢}| D ]  }t        |«      g k(  rŒJ ‚ |D ]  }t        |«      g k7  rŒJ ‚ y )N)z4class A(object):
    def foo(self, arg): arg = self
z9class A(object):
    def foo(self, arg): self.prop = arg
z?class A(object):
    def foo(self, arg): obj, obj2 = arg, self
zCclass A(object):
    @classmethod
    def bar(cls, arg): arg = cls
z2class A(object):
    def foo(var, arg): arg = var
)z4class A(object):
    def foo(self, arg): self = arg
z>class A(object):
    def foo(self, arg): obj, self = arg, arg
zCclass A(object):
    def foo(self, arg):
        if arg: self = argzCclass A(object):
    @classmethod
    def foo(cls, arg): cls = arg
z2class A(object):
    def foo(var, arg): var = arg
)r@   rÌ   s      r   Útest_find_self_assignmentsrØ   Ò  sV   € ò€Mò€Oð ò .ˆÜ$ QÓ'¨2Ó-Ð-Ð-ð.àò .ˆÜ$ QÓ'¨2Ó-Ð-Ð-ñ.r   c                  óÐ   ‡ ‡‡‡— dgŠdgŠdŠ dgŠt        t        ˆ ˆˆˆfd„«       dŠ dgŠt        ‰ ‰‰‰«       dŠ dgŠt        t        ˆ ˆˆˆfd„«       dŠ dgŠt        ‰ ‰‰‰«       y )NÚfooÚbarÚabcu   Î±c                  ó    •— t        ‰ ‰‰‰«      S r*   r   ©rO   rz   Úunicode_strict_whitelistÚunicode_whitelists   €€€€r   r‚   z,test_test_unicode_encoding.<locals>.<lambda>î  ó   ø€ Ô#;ØˆyÐ+Ð-Eó$G€ r   c                  ó    •— t        ‰ ‰‰‰«      S r*   r   rÞ   s   €€€€r   r‚   z,test_test_unicode_encoding.<locals>.<lambda>ø  rá   r   )r   rl   r   rÞ   s   @@@@r   Útest_test_unicode_encodingrã   è  s“   û€ Ø˜ÐØ %˜wÐà€EØ�€IÜ
Œ>ö Gô Hð €EØ�€IÜØˆyÐ+Ð-EôGð €EØ�€IÜ
Œ>ö Gô Hð €EØ�€IÜØˆyÐ+Ð-EõGr   )@Úosr   r   r   Úos.pathr   r   r   r	   r
   r   rP   rº   r"   Úsympy.testing.pytestr   Úsympy.testing.quality_unicoder   r°   Ú__file__r²   r¯   r±   r³   r‘   rœ   r“   r’   r–   r˜   r    r£   r¢   r‹   r�   Úmessage_self_assignmentsrž   rY   Úcompiler™   r”   r—   rŸ   rŠ   rŒ   r‰   r�   r   r@   r‡   rJ   rB   ÚNodeVisitorrS   rj   rt   r·   r¼   rÊ   rÎ   rÐ   rÖ   rØ   rã   rM   r   r   ú<module>rì      sÜ  ðç  Ñ  ß 8Õ 8Ý Û 	Û Û 
å 'Ý Bð 	ˆs€|€ñ ‘T™% ›/¨!Ñ,¨f°fÓ=Ó>€
ÙˆjÔÐ Ðá‘4˜
 FÓ+Ó,€Ù�˜%Ó €Ù�X˜zÓ*€ð B€ØCÐ ØC€ØOÐ ØAÐ ØBÐ ØRÐ Ø=€ØEÐ ØQÐ ØIÐ ØPÐ Ø:€ØAÐ à�2—:‘:ÐIÓJÐ Øˆr�z‰zØ@óB€àˆr�z‰zØDóF€àˆr�z‰zÐNÓO€Ø�B—J‘JÐFÓGÐ Ø�—‘Ð/Ó0€Øˆr�z‰zÐ0Ó1€ØˆR�Z‰ZÐ)Ó*€
ò	-òñD <?»5È&ó 	Gñ /2«e¸Tó ô *ˆS�_‰_ô *ñZ ‹8€ò6ò{7ò|)ò
@BòFFò>:ò&ò6.ó,Gr   