Ë
    pPêj’G  ã                  ó\  — d 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 ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z!m"Z"m#Z#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z- dZ. G d„ de"«      Z/dd„Z0 G d„ dejb                  «      Z2y)a  Test cases for fine-grained incremental checking.

Each test cases runs a batch build followed by one or more fine-grained
incremental steps. We verify that each step produces the expected output.

See the comment at the top of test-data/unit/fine-grained.test for more
information.

N.B.: Unlike most of the other test suites, testfinegrained does not
rely on an alt_lib_path for finding source files. This means that they
can test interactions with the lib_path that is built implicitly based
on specified sources.
é    )ÚannotationsN)ÚAny)Úbuild)Úparse_config_file)ÚServer)ÚDEFAULT_STATUS_FILE)ÚCompileError)Úcreate_source_list)ÚBuildSource)ÚOptions)Úcheck_consistency©Ú#sort_messages_preserving_file_order)Útest_temp_dir)ÚDataDrivenTestCaseÚ	DataSuiteÚ
DeleteFileÚ
UpdateFile)Úassert_module_equivalenceÚassert_string_arrays_equalÚassert_target_equivalenceÚfind_test_filesÚparse_optionsÚperform_file_operations)Úupdate_testcase_outputFc                  óÂ   — e Zd Z eddg¬«      ZdZdd„Zdd„Zdd„Zdd„Z	dd	„Z
dd
„Zdd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Zdd„Zy)ÚFineGrainedSuitezfine-grained*.testz#fine-grained-cache-incremental.test)ÚpatternÚexcludeFc                óœ   — | j                   r0|j                  dk(  ry|j                  r|j                  d   dk7  ryy|j                  dk(  ryy)Nz-only_when_nocacheTr   ú==z-only_when_cacheF)Ú	use_cacheÚ	only_whenÚoutput)ÚselfÚtestcases     ú^/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/test/testfinegrained.pyÚshould_skipzFineGrainedSuite.should_skip=   sU   € ð �>Š>Ø×!Ñ!Ð%9Ò9Øð �Š 8§?¡?°1Ñ#5¸Ò#=Øð ð ×!Ñ!Ð%7Ò7ØØó    c                ó€  — | j                  |«      rt        j                  «        dj                  |j                  «      }t
        j                  j                  t        d«      }t        |dd¬«      5 }|j                  |«       d d d «       | j                  ||d¬«      }|j                  t        j                  kD  rt        j                  d«       | j                  ||d	¬«      }t        |t        «      }| j!                  |«      }d
}	| j#                  ||	|«      }
|	|k  r| j%                  ||
«      }n| j'                  ||
«      }g }|r|j)                  t+        |«      «       |j,                  €J ‚|j)                  | j/                  |	|||j,                  «      «       |j)                  | j1                  |	||«      «       |j2                  rt4        rt7        |j2                  «       |j9                  «       }g }|D ]U  }|	d
z  }	| j;                  |||||||	|«      \  }}|j=                  d«       |j)                  |«       |j)                  |«       ŒW |D �cg c]  }|j?                  dd«      ‘Œ }}|j@                  |k7  r*|jB                  jE                  dd«      rtG        ||d
¬«       tI        |j@                  |d|jJ                  › d|jL                  › d�«       |jN                  rBtI        |jN                  | jQ                  |«      d|jJ                  › d|jL                  › d�«       y y # 1 sw Y   �Œ«xY wc c}w )Nú
ÚmainÚwÚutf8)ÚencodingF)Úbuild_cachez)Test case requires a newer Python versionTé   r!   ú\ú/z--update-data©Úincremental_stepzInvalid output (z, line ú)zInvalid active triggers ())r(   ÚpytestÚskipÚjoinÚinputÚosÚpathr   ÚopenÚwriteÚget_optionsÚpython_versionÚsysÚversion_infor   r   Úget_build_stepsÚparse_sourcesr   Ú	run_checkÚextendÚnormalize_messagesÚtmpdirÚmaybe_suggestÚmaybe_inspectÚfine_grained_managerÚCHECK_CONSISTENCYr   Ú
find_stepsÚperform_stepÚappendÚreplacer$   ÚconfigÚ	getoptionr   r   ÚfileÚlineÚ	triggeredÚformat_triggered)r%   r&   Úmain_srcÚ	main_pathÚfÚoptionsÚbuild_optionsÚserverÚnum_regular_incremental_stepsÚstepÚsourcesÚmessagesÚaÚstepsÚall_triggeredÚ
operationsr$   rU   rT   s                      r'   Úrun_casezFineGrainedSuite.run_caseM   sç  € Ø×Ñ˜HÔ%Ü�K‰KŒMà—9‘9˜XŸ^™^Ó,ˆÜ—G‘G—L‘L¤°Ó7ˆ	Ü�)˜S¨6Ô2ð 	°aØ�G‰G�HÔ÷	ð ×"Ñ" 8¨XÀ5Ð"ÓIˆØ×!Ñ!¤C×$4Ñ$4Ò4Ü�K‰KÐCÔDà×(Ñ(¨°8ÈÐ(ÓNˆÜ˜Ô!4Ó5ˆà(,×(<Ñ(<¸XÓ(FÐ%ØˆØ×$Ñ$ X¨t°WÓ=ˆØÐ0Ò0Ø—z‘z -°Ó9‰Hà—~‘~ f¨gÓ6ˆHàˆÙØ�H‰HÔ'¨Ó1Ô2à�‰Ð*Ð*Ð*Ø	�‰�×#Ñ# D¨&°(¸H¿O¹OÓLÔMØ	�‰�×#Ñ# D¨&°(Ó;Ô<à×&Ò&Ý Ü! &×"=Ñ"=Ô>à×#Ñ#Ó%ˆØˆàò 	,ˆJØ�A‰IˆDØ $× 1Ñ 1ØØØØØØØØ-ó	!ÑˆF�Ið �H‰H�TŒNØ�H‰H�VÔØ× Ñ  Õ+ð	,ð" 23Ö3¨ˆT�\‰\˜$ Õ$Ð3ˆÐ3ð �?‰?˜aÒ H§O¡O×$=Ñ$=¸oÈuÔ$UÜ" 8¨QÀÕCä"Ø�O‰O˜QÐ"2°8·=±=°/ÀÈÏÉÈÐWXÐ Yô	
ð ×ÒÜ&Ø×"Ñ"Ø×%Ñ% mÓ4Ø+¨H¯M©M¨?¸'À(Ç-Á-ÀÐPQÐRõð ÷y	ñ 	üòd 4s   Á3L.ÉL;Ì.L8c                óJ  — t        ||d¬«      }d|_        d|_        d|_        d|_        | |_        | j                  xr | |_        | j                  |_        d|_	        d|j                  v |_        |j                  j                  d«       |_        |j                  j                  d«      s|j                  j                  d«      rd|_        d|_        t#        j$                  d	|«      €d
|_        |j(                  D ]  \  }}d|v sd|v sŒt+        |d„ |«        |S  |S )Nr1   r4   TFÚinspectÚ	_no_emptyÚ_old_parserÚ_old_parser_cachedzflags:.*--follow-importsÚerrorzmypy.inizpyproject.tomlc                  ó   — y )N© rm   r)   r'   ú<lambda>z.FineGrainedSuite.get_options.<locals>.<lambda>°   s   � r)   )r   ÚincrementalÚuse_builtins_fixturesÚshow_tracebackÚerror_summaryÚfine_grained_incrementalr"   Úuse_fine_grained_cacheÚcache_fine_grainedÚlocal_partial_typesrS   Úexport_typesÚnameÚendswithÚallow_empty_bodiesÚnative_parserÚreveal_verbose_typesÚreÚsearchÚfollow_importsÚfilesr   )r%   Úsourcer&   r0   rZ   rx   Ú_s          r'   r?   zFineGrainedSuite.get_options–   s  € ä ¨À1ÔEˆØ"ˆÔØ(,ˆÔ%Ø!%ˆÔØ %ˆÔØ/:¨?ˆÔ(Ø)-¯©Ò)KÀ¸OˆÔ&Ø%)§^¡^ˆÔ"Ø&*ˆÔ#Ø(¨H¯M©MÐ9ˆÔà)1¯©×)?Ñ)?ÀÓ)LÐ%LˆÔ"à�=‰=×!Ñ! -Ô0°H·M±M×4JÑ4JÐK_Ô4`à$)ˆGÔ!à'+ˆÔ$Ü�9‰9Ð/°Ó8Ð@à%,ˆGÔ"à—~‘~ò 	‰GˆD�!Ø˜TÑ!Ð%5¸Ò%=Ü! '©<¸Ô>Øàˆð	ð
 ˆr)   c                óˆ   — |j                  |ddd¬«      }|d   xs |d   }t        |t        «      sJ ‚|j                  «       S )NFéÿÿÿÿ)rw   Úis_ttyÚterminal_widthÚoutÚerr)ÚcheckÚ
isinstanceÚstrÚ
splitlines)r%   r\   r_   Úresponser‡   s        r'   rE   zFineGrainedSuite.run_checkµ   sH   € Ø—<‘< °eÀEÐZ\�<Ó]ˆØ�u‰oÒ0 ¨%¡ˆÜ˜#œsÔ#Ð#Ð#Ø�~‰~ÓÐr)   c                óŽ   — 	 t        j                   ||¬«      }|j                  S # t        $ r}|j                  cY d }~S d }~ww xY w)N)r_   rZ   )r   r	   r`   Úerrors)r%   rZ   r_   ÚresultÚes        r'   r   zFineGrainedSuite.build»   s?   € ð	Ü—[‘[¨¸'ÔBˆFð �}‰}Ðøô ò 	Ø—:‘:Õûð	ús   ‚% ¥	A®?¹A¿Ac                óþ   — g }t        |«      D ]g  \  }}|D �cg c]  }|j                  d«      rŒ|‘Œ }}t        |«      }|j                  d|dz   dj	                  |«      fz  j                  «       «       Œi |S c c}w )Nz__>z%d: %sé   z, )Ú	enumeratery   ÚsortedrO   r9   Ústrip)r%   rU   r�   ÚnÚtriggersÚtriggerÚfiltereds          r'   rV   z!FineGrainedSuite.format_triggeredÂ   s…   € ØˆÜ$ YÓ/ò 	M‰KˆAˆxØ/7ÖW G¸w×?OÑ?OÐPUÕ?VšÐWˆHÐWÜ˜hÓ'ˆHØ�M‰M˜8 q¨1¡u¨d¯i©i¸Ó.AÐ&BÑB×IÑIÓKÕLð	Mð ˆùò Xs
   ˜A:¯A:c                ó¢   — | j                   syt        j                  d|t        j                  ¬«      }|�t	        |j                  d«      «      S y)zHGet the number of regular incremental steps to run, from the test sourcer   z# num_build_steps: ([0-9]+)$©Úflagsr1   )r"   r}   r~   Ú	MULTILINEÚintÚgroup)r%   Úprogram_textÚms      r'   rC   z FineGrainedSuite.get_build_stepsÊ   s=   € à�~Š~ØÜ�I‰IÐ4°lÌ"Ï,É,ÔWˆØˆ=Ü�q—w‘w˜q“z“?Ð"Ør)   c	                ó&  — t        |«       | j                  |||«      }	||k  r| j                  ||	«      }
n| j                  ||	«      }
g }g }g }g }|j                  r”t
        rt        |j                  «       |j                  |j                  j                  «       |j                  j                  }|j                  j                  D ��cg c]  \  }}|‘Œ	 }}}|j                  j                  }|j                  j                  |dz
  «      }|�t        dt        |dz
  «      z   ||«       |j                   j                  |dz
  «      }|�t        dt        |dz
  «      z   ||«       |j"                  j                  |«      }|rt%        dt        |«      z   ||«       t'        |
«      }
|
}|j(                  €J ‚|j+                  | j-                  ||||j(                  «      «       |j+                  | j/                  |||«      «       ||fS c c}}w )z�Perform one fine-grained incremental build step (after some file updates/deletions).

        Return (mypy output, triggered targets).
        r1   ÚstaleÚ	recheckedÚtargets)r   rD   r   rE   rK   rL   r   rO   rU   Úupdated_modulesÚchanged_modulesÚprocessed_targetsÚexpected_stale_modulesÚgetr   r‹   Úexpected_rechecked_modulesÚexpected_fine_grained_targetsr   rG   rH   rF   rI   rJ   )r%   rd   r\   rZ   r[   r&   rW   r^   r]   r_   Únew_messagesÚupdatedÚchangedr¦   rU   ÚmodrS   Úexpected_staleÚexpected_recheckedÚexpectedra   s                        r'   rN   zFineGrainedSuite.perform_stepÓ   sä  € ô 	  
Ô+Ø×$Ñ$ X¨t°WÓ=ˆàÐ0Ò0ØŸ:™: m°WÓ=‰LàŸ>™>¨&°'Ó:ˆLàˆØˆØˆØˆ	Ø×&Ò&Ý Ü! &×"=Ñ"=Ô>Ø×Ñ˜V×8Ñ8×BÑBÔCà×1Ñ1×AÑAˆGØ,2×,GÑ,G×,WÑ,W×X™y˜s D’sÐXˆGÑXØ×1Ñ1×CÑCˆGà!×8Ñ8×<Ñ<¸TÀA¹XÓFˆØÐ%Ü% g´°D¸1±H³Ñ&=¸~ÈwÔWà%×@Ñ@×DÑDÀTÈAÁXÓNÐØÐ)Ü% k´C¸¸q¹³MÑ&AÐCUÐW^Ô_à×9Ñ9×=Ñ=¸dÓCˆÙÜ% i´#°d³)Ñ&;¸XÀwÔOä)¨,Ó7ˆàˆØ�‰Ð*Ð*Ð*Ø	�‰�×#Ñ# D¨&°(¸H¿O¹OÓLÔMØ	�‰�×#Ñ# D¨&°(Ó;Ô<à�)ˆ|Ðùó- Ys   ÃHc                ó  — t        j                  d|t         j                  ¬«      }d|› d�}t        j                  ||t         j                  ¬«      }|�|}|rh|j                  d«      j	                  «       j                  «       D �cg c]&  }t        j                  j                  t        |«      ‘Œ( }}t        ||«      S t        t        j                  j                  t        d«      dd«      }	|	gt        t        g|d	¬
«      z   S c c}w )a!  Return target BuildSources for a test case.

        Normally, the unit tests will check all files included in the test
        case. This differs from how testcheck works by default, as dmypy
        doesn't currently support following imports.

        You can override this behavior and instruct the tests to check
        multiple modules by using a comment like this in the test case
        input:

          # cmd: main a.py

        You can also use `# cmdN:` to have a different cmd for incremental
        step N (2, 3, ...).

        z# cmd: mypy ([a-zA-Z0-9_./ ]+)$rœ   z# cmdz: mypy ([a-zA-Z0-9_./ ]+)$Nr1   r,   Ú__main__T)Úallow_empty_dir)r}   r~   rž   r    r–   Úsplitr;   r<   r9   r   r
   r   )
r%   r¡   r5   rZ   r¢   ÚregexÚalt_mr<   ÚpathsÚbases
             r'   rD   zFineGrainedSuite.parse_sources  sÛ   € ô& �I‰IÐ7¸ÌRÏ\É\ÔZˆØÐ(Ð)Ð)CÐDˆÜ—	‘	˜% ´R·\±\ÔBˆØÐð ˆAáàCDÇ7Á7È1Ã:×CSÑCSÓCU×C[ÑC[ÓC]Ö^¸4”R—W‘W—\‘\¤-°Õ6Ð^ˆEÐ^Ü% e¨WÓ5Ð5äœrŸw™wŸ|™|¬M¸6ÓBÀJÐPTÓUˆDð �6Ô.´¨ÀÐY]Ô^Ñ^Ð^ùò _s   Â+Dc                óÀ  — g }| j                  ||«      }|D �]º  \  }}d|v }	d|v }
d|v }d|v }t        j                  d|«      }|rt        |j	                  d«      «      nd }t        j                  d|«      }|r|j	                  d«      nd }t        j                  d|«      }|rt        |j	                  d«      «      nd }|j                  |j                  «       |	|||||
|¬	«      }d
|v r|d
   n
|d   |d   z   }|	r¦|j                  dd«      }|j                  t        j                  j                  |«      t        j                  j                  z   d«      }|j                  t        j                  j                  |«      t        j                  j                  z   d«      }|j                  |j                  «       j                  d«      «       �Œ½ t!        |«      S )Nz--jsonz--callsitesz--no-anyz--no-errorsz--flex-any=([0-9.]+)r1   z--use-fixme=(\w+)z--max-guesses=([0-9]+))ÚjsonÚno_anyÚ	no_errorsÚflex_anyÚ	use_fixmeÚ	callsitesÚmax_guessesrk   r‡   rˆ   z\\r2   Ú r+   )Úget_suggestr}   ÚmatchÚfloatr    rŸ   Úcmd_suggestr–   rP   r;   r<   ÚrealpathÚsepÚabspathrF   r¸   rG   )r%   r^   r\   ÚsrcÚtmp_dirr$   r¦   r�   Útargetr¾   rÃ   r¿   rÀ   r¢   rÁ   rÂ   rÄ   ÚresÚvals                      r'   rI   zFineGrainedSuite.maybe_suggest2  s©  € ØˆØ×"Ñ" 3¨Ó-ˆØ$ó 	3‰MˆE�6Ø˜uÐ$ˆDØ%¨Ð.ˆIØ 5Ð(ˆFØ%¨Ð.ˆIÜ—‘Ð/°Ó7ˆAÙ,-”u˜QŸW™W Q›ZÔ(°4ˆHÜ—‘Ð-¨uÓ5ˆAÙ&'˜Ÿ™ œ
¨TˆIÜ—‘Ð1°5Ó9ˆAÙ-.œ#˜aŸg™g a›jœ/°DˆKØ"(×"4Ñ"4Ø—‘“ØØØ#Ø!Ø#Ø#Ø'ð #5ó 	#ˆCð #*¨S¡.�#�g’,°c¸%±jÀ3ÀuÁ:Ñ6MˆCÙà—k‘k &¨$Ó/�Ø—k‘k¤"§'¡'×"2Ñ"2°7Ó";¼b¿g¹g¿k¹kÑ"IÈ2ÓN�Ø—k‘k¤"§'¡'§/¡/°'Ó":¼R¿W¹W¿[¹[Ñ"HÈ"ÓM�Ø�M‰M˜#Ÿ)™)›+×+Ñ+¨DÓ1Ö2ð7	3ô8 " &Ó)Ð)r)   c                óü  — g }| j                  ||«      }|D ]â  \  }}t        j                  d|«      }|r|j                  d«      nd}	d}
d|v rd}
d|v rd}
t        j                  d|«      }|rt	        |j                  d«      «      nd}d	|v }d
|v }d|v }d|v }d|v }|j                  |	||
||||||¬«	      }d|v r|d   n
|d   |d   z   }|j                  |j                  «       j                  d«      «       Œä |S )Nz--show=(\w+)r1   Útyper   z-vz-vvr“   z--limit=([0-9]+)z--include-spanz--include-kindz--include-object-attrsz--union-attrsz--force-reload)Ú	verbosityÚlimitÚinclude_spanÚinclude_kindÚinclude_object_attrsÚunion_attrsÚforce_reloadrk   r‡   rˆ   r+   )	Úget_inspectr}   rÇ   r    rŸ   Úcmd_inspectrF   r–   r¸   )r%   r^   r\   rÍ   r$   r¦   r�   Úlocationr¢   ÚshowrÔ   rÕ   rÖ   r×   rØ   rÙ   rÚ   rÐ   rÑ   s                      r'   rJ   zFineGrainedSuite.maybe_inspectS  s7  € ØˆØ×"Ñ" 3¨Ó-ˆØ&ò 	3‰OˆE�8Ü—‘˜¨%Ó0ˆAÙ!"�1—7‘7˜1”:¨ˆDØˆIØ�u‰}Ø�	Ø˜‰~Ø�	Ü—‘Ð,¨eÓ4ˆAÙ'(”C˜Ÿ™ ›
”O¨aˆEØ+¨uÐ4ˆLØ+¨uÐ4ˆLØ#;¸uÐ#DÐ Ø)¨UÐ2ˆKØ+¨uÐ4ˆLØ"(×"4Ñ"4ØØØ#ØØ)Ø)Ø%9Ø'Ø)ð #5ó 
#ˆCð #*¨S¡.�#�g’,°c¸%±jÀ3ÀuÁ:Ñ6MˆCØ�M‰M˜#Ÿ)™)›+×+Ñ+¨DÓ1Õ2ð7	3ð8 ˆr)   c                ó‚   — |dk(  rdn
t        |«      }d|› d�}t        j                  ||t        j                  ¬«      }|S )Nr1   ú1?z	# suggestz3: (--[a-zA-Z0-9_\-./=?^ ]+ )*([a-zA-Z0-9_.:/?^ ]+)$rœ   ©r‹   r}   Úfindallrž   ©r%   r¡   r5   Ústep_bitr¹   r¢   s         r'   rÆ   zFineGrainedSuite.get_suggestt  s@   € Ø+¨qÒ0‘4´cÐ:JÓ6KˆØ˜H˜:Ð%YÐZˆÜ�J‰J�u˜l´"·,±,Ô?ˆØˆr)   c                ó‚   — |dk(  rdn
t        |«      }d|› d�}t        j                  ||t        j                  ¬«      }|S )Nr1   rà   z	# inspectz1: (--[a-zA-Z0-9_\-=?^ ]+ )*([a-zA-Z0-9_.:/?^ ]+)$rœ   rá   rã   s         r'   rÛ   zFineGrainedSuite.get_inspectz  s@   € Ø+¨qÒ0‘4´cÐ:JÓ6KˆØ˜H˜:Ð%WÐXˆÜ�J‰J�u˜l´"·,±,Ô?ˆØˆr)   N)r&   r   ÚreturnÚbool)r&   r   ræ   ÚNone)r�   r‹   r&   r   r0   rç   ræ   r   )r\   r   r_   úlist[BuildSource]ræ   ú	list[str])rZ   r   r_   ré   ræ   rê   )rU   zlist[list[str]]ræ   rê   )r¡   r‹   ræ   rŸ   )rd   zlist[UpdateFile | DeleteFile]r\   r   rZ   r   r[   r   r&   r   rW   r‹   r^   rŸ   r]   rŸ   ræ   z!tuple[list[str], list[list[str]]])r¡   r‹   r5   rŸ   rZ   r   ræ   ré   )
r^   rŸ   r\   r   rÍ   r‹   rÎ   r‹   ræ   rê   )r^   rŸ   r\   r   rÍ   r‹   ræ   rê   )r¡   r‹   r5   rŸ   ræ   zlist[tuple[str, str]])Ú__name__Ú
__module__Ú__qualname__r   r€   r"   r(   re   r?   rE   r   rV   rC   rN   rD   rI   rJ   rÆ   rÛ   rm   r)   r'   r   r   4   sà   „ ÙØ$Ð/TÐ.Uô€Eð €Ióó GóRó> óóóð7à1ð7ð ð7ð ð	7ð
 ð7ð %ð7ð ð7ð ð7ð (+ð7ð 
+ó7ðr$_Øð$_Ø36ð$_ØAHð$_à	ó$_óL*óBóBôr)   r   c           	     óž   — | D �cg c]=  }t        j                  dt        j                  t        j                  «      z   d|«      ‘Œ? c}S c c}w )Nz^tmprÅ   )r}   ÚsubÚescaper;   rË   )r`   Úmessages     r'   rG   rG   �  s5   € ØKSÖTÀŒB�F‰F�6œBŸI™I¤b§f¡fÓ-Ñ-¨r°7Õ;ÒTÐTùÒTs   …AA
c                  ó,   — e Zd Zdd„Zdd„Zdd„Zdd„Zy)ÚTestMessageSortingc                óÄ   — ddg}ddg}t        ||«      t        t        |«      «      k(  sJ ‚t        t        t        |«      «      |«      t        t        |«      «      k(  sJ ‚y )Nú!x.py:1: error: "int" not callableú#foo/y.py:123: note: "X" not definedú"foo/y.py:12: note: "Y" not definedú!x.py:8: error: "str" not callable)r   ÚlistÚreversed)r%   ÚmsgsÚold_msgss      r'   Útest_simple_sortingz&TestMessageSorting.test_simple_sorting†  si   € Ø3Ð5ZÐ[ˆØ8Ð:]Ð^ˆÜ2°4¸ÓBÄdÌ8ÐTXË>ÓFZÒZÐZÐZÜ2´4¼À»Ó3GÈÓRÔVZÜ�T‹NóW
ò 
ð 	
ñ 
r)   c                óx   — g d¢}g d¢}ddg}t        ||z   |«      ||z   k(  sJ ‚t        ||z   |«      ||z   k(  sJ ‚y )N)rõ   zand message continues (x: y)z    1()z    ^~~)zfoo/y.py: In function "f":rö   zand again message continuesr÷   rø   r   )r%   Úmsg1Úmsg2rü   s       r'   Útest_long_form_sortingz)TestMessageSorting.test_long_form_sortingŽ  sY   € ò
ˆò
ˆð
 9Ð:]Ð^ˆÜ2°4¸$±;ÀÓIÈTÐTXÉ[ÒXÐXÐXÜ2°4¸$±;ÀÓIÈTÐTXÉ[ÒXÐXÑXr)   c                ót   — d}d}d}g d¢}t        |||g|«      |||gk(  sJ ‚t        |||g|«      |||gk(  sJ ‚y )Nrõ   z foo/y:123: note: "X" not definedz&mypy: Error not associated with a file)zmypy: Something wrongzfoo/y:12: note: "Y" not definedrø   r   )r%   rÿ   r   Úmsg3rü   s        r'   Útest_mypy_error_prefixz)TestMessageSorting.test_mypy_error_prefixŸ  s|   € ð 3ˆØ1ˆØ7ˆò
ˆô
 3°D¸$ÀÐ3EÀxÓPØØØðU
ò 
ð 	
ð 
ô
 3°D¸$ÀÐ3EÀxÓPØØØðU
ò 
ð 	
ñ 
r)   c                ó|   — d}d}d}d}ddg}t        |||g|«      |||gk(  sJ ‚t        ||||g|«      ||||gk(  sJ ‚y )Nrõ   rö   zab.py:3: error: Problem: errorzaaa:3: error: Badr÷   rø   r   )r%   rÿ   r   Únew1Únew2rü   s         r'   Útest_new_file_at_the_endz+TestMessageSorting.test_new_file_at_the_endµ  s†   € Ø2ˆØ4ˆØ/ˆØ"ˆØ8Ð:]Ð^ˆÜ2°D¸$ÀÐ3EÀxÓPØØØðU
ò 
ð 	
ð 
ô
 3°D¸$ÀÀdÐ3KÈXÓVØØØØð	[
ò 
ð 	
ñ 
r)   N)ræ   rè   )rë   rì   rí   rý   r  r  r  rm   r)   r'   ró   ró   …  s   „ ó
óYó"
ô,
r)   ró   )r`   rê   ræ   rê   )3Ú__doc__Ú
__future__r   r;   r}   rA   ÚunittestÚtypingr   r7   Úmypyr   Úmypy.config_parserr   Úmypy.dmypy_serverr   Úmypy.dmypy_utilr   Úmypy.errorsr	   Úmypy.find_sourcesr
   Úmypy.modulefinderr   Úmypy.optionsr   Úmypy.server.mergecheckr   Úmypy.server.updater   Úmypy.test.configr   Úmypy.test.datar   r   r   r   Úmypy.test.helpersr   r   r   r   r   r   Úmypy.test.update_datar   rL   r   rG   ÚTestCaseró   rm   r)   r'   ú<module>r     s†   ðñõ #ã 	Û 	Û 
Û Ý ã å Ý 0Ý $Ý /Ý $Ý 0Ý )Ý  Ý 4Ý BÝ *ß PÓ P÷÷ õ 9àÐ ôJ�yô JóZ
Uô@
˜×*Ñ*õ @
r)   