Ë
    pPêj´!  ã                  ól  — 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ZddlZddl	Z	ddl
Z
ddlmZ ddlmZ ej                  j!                  ed«      Zej                  j!                  ed«      Zej                  j!                  ed«      Z G d	„ d
e
j(                  «      Zedk(  r e
j.                  «        yy)zFIntegration tests for misc/diff-cache.py and misc/apply-cache-diff.py.é    )ÚannotationsN)ÚSQLITE_NUM_SHARDS)ÚPREFIXÚmisczdiff-cache.pyzapply-cache-diff.pyc                  ó   — e Zd ZdZdd„Zy)ÚDiffCacheIntegrationTestszKRun mypy twice with different sources, diff the caches, and apply the diff.c                ó  ‡— t        j                  «       }t        j                  j	                  t        j                  «       d«      }t        j
                  j                  «       }t        |d<   	 t        j                  j	                  |d«      }t        j                  j	                  |d«      }t        t        j                  j	                  |d«      d«      5 }|j                  d«       d d d «       t        t        j                  j	                  |d«      d«      5 }|j                  d	«       d d d «       t        j                  t        j                  d
dddd|dg|dd|¬«      }|j                  dk(  sJ d|j                  › �«       ‚t!        j"                  d«       t        j$                  t        j                  j	                  |d«      «       t        t        j                  j	                  |d«      d«      5 }|j                  d«       d d d «       t        t        j                  j	                  |d«      d«      5 }|j                  d«       d d d «       t        j                  t        j                  d
dddd|ddg	|dd|¬«      }|j                  dk(  sJ d|j                  › �«       ‚t        j&                  |«      D �cg c]T  }t        j                  j)                  t        j                  j	                  ||«      «      r|d   j+                  «       r|‘ŒV }	}t-        |	«      dk(  s
J d|	› �«       ‚|	d   }
t        j                  t        j                  t.        dt        j                  j	                  ||
«      t        j                  j	                  ||
«      |gdd|¬«      }|j                  dk(  sJ d|j                  › �«       ‚t        |«      5 }t1        j2                  |«      }d d d «       t5        t6        «      sJ ‚t-        |«      dkD  sJ d«       ‚t9        |j;                  «       «      }|D �ch c]  }d|v s|j=                  d«      sŒ|’Œ }}|D �ch c]  }d|v s|j=                  d «      sŒ|’Œ }}|D �ch c]  }d!|v s|j=                  d"«      sŒ|’Œ }}t-        |«      dk(  s
J d#|› �«       ‚t-        |«      d$k(  s
J d%|› �«       ‚t-        |«      d&k(  s
J d'|› �«       ‚d(|v sJ ‚t1        j>                  |d(   «      }t9        |j;                  «       «      d)d*hk(  s!J d+tA        |j;                  «       «      › �«       ‚tA        |d)   «      d,gk(  sJ ‚tA        |d*   «      d,d-gk(  sJ ‚t        j                  j	                  ||
«      }t        j                  j	                  |d.«      }t        j                  j	                  ||
«      }tC        jD                  ||«       dd/l#m$Š d<ˆfd0„} ||«      }t        j                  t        j                  tJ        d||gdd|¬«      }|j                  dk(  sJ d1|j                  › �«       ‚ ||«      }|D ];  }|j=                  d"«      sd!|v sŒ||v s
J |› d2�«       ‚||   ||   k(  rŒ3J |› d3�«       ‚  ||«      }d4D ]x  }|D ]q  }|j=                  |«      sd5|› �|v sŒ||v s
J |› d2�«       ‚|jM                  d6«      r"||   |jO                  |«      k7  rŒSJ |› d7�«       ‚||   ||   k(  rŒiJ |› d8�«       ‚ Œz dd9l(m)}  ||d(   «      }t9        |j;                  «       «      d)d*hk(  s!J d:tA        |j;                  «       «      › �«       ‚tA        |d)   «      d,gk(  sJ ‚tA        |d*   «      d,d-gk(  sJ ‚	 tC        jT                  |d¬;«       tC        jT                  t        j                  jW                  |«      d¬;«       y # 1 sw Y   �ŒúxY w# 1 sw Y   �ŒÃxY w# 1 sw Y   �ŒñxY w# 1 sw Y   �ŒºxY wc c}w # 1 sw Y   �Œ0xY wc c}w c c}w c c}w # tC        jT                  |d¬;«       tC        jT                  t        j                  jW                  |«      d¬;«       w xY w)=Nz	diff.jsonÚ
PYTHONPATHÚcache1Úcache2za.pyÚwzx: int = 1
zb.pyz(import a
def foo() -> int:
    return 1
z-mÚmypyz--sqlite-cachez--cache-fine-grainedz--cache-dirT)ÚcwdÚcapture_outputÚtextÚenvr   zmypy run 1 failed: é   z/import a
def foo() -> str:
    return str(a.x)
zc.pyzimport a
y: str = 'world'
zmypy run 2 failed: z!Expected one version subdir, got z--sqlite)r   r   r   zdiff-cache.py failed: zExpected non-empty diffz/b.úb.z/c.úc.z/a.za.z Unexpected a.* entries in diff: é   z%Expected 3 b.* entries in diff, got: é   z%Expected 4 c.* entries in diff, got: z@root.deps.jsonz<a.x>z<a>zUnexpected root deps keys: zb.fooÚcÚpatched)ÚSqliteMetadataStorec                ó¨   •—  ‰| t         ¬«      }|j                  «       D �ci c]  }||j                  |«      “Œ }}|j                  «        |S c c}w )N)Ú
num_shards)r   Úlist_allÚreadÚclose)Ú	cache_dirÚstoreÚnameÚresultr   s       €ú^/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/test/test_diff_cache.pyÚread_allzODiffCacheIntegrationTests.test_diff_cache_produces_valid_json.<locals>.read_all™   sL   ø€ Ù+¨IÔBSÔT�Ø=B¿^¹^Ó=MÖN°T˜$ §
¡
¨4Ó 0Ñ0ÐN�ÐNØ—‘”Ø�ùò Os   ¢Azapply-cache-diff.py failed: z missing after applyz changed after apply)r   r   ú/z.meta.ffz unchanged after applyz differs from target)Ú
json_loadsz#Unexpected applied root deps keys: )Úignore_errors)r    ÚstrÚreturnzdict[str, bytes]),ÚtempfileÚmkdtempÚosÚpathÚjoinÚenvironÚcopyr   ÚopenÚwriteÚ
subprocessÚrunÚsysÚ
executableÚ
returncodeÚstderrÚtimeÚsleepÚutimeÚlistdirÚisdirÚisdigitÚlenÚ_DIFF_CACHE_PATHÚjsonÚloadÚ
isinstanceÚdictÚsetÚkeysÚ
startswithÚloadsÚsortedÚshutilÚcopytreeÚmypy.metastorer   Ú_APPLY_CACHE_DIFF_PATHÚendswithÚgetÚ	mypy.utilr'   ÚrmtreeÚdirname)ÚselfÚsrc_dirÚoutput_filer   r   r   Úfr#   ÚeÚsubdirsÚverÚdatarG   ÚkÚb_keysÚc_keysÚa_keysÚ	root_depsÚ
cache2_verr   Úpatched_verr%   ÚbeforeÚafterr"   ÚtargetÚprefixr'   Úapplied_root_depsr   s                                @r$   Ú#test_diff_cache_produces_valid_jsonz=DiffCacheIntegrationTests.test_diff_cache_produces_valid_json   s  ø€ ô ×"Ñ"Ó$ˆÜ—g‘g—l‘l¤8×#3Ñ#3Ó#5°{ÓCˆÜ�j‰j�o‰oÓˆÜ"ˆˆLÑðl	LÜ—W‘W—\‘\ '¨8Ó4ˆFÜ—W‘W—\‘\ '¨8Ó4ˆFô ”b—g‘g—l‘l 7¨FÓ3°SÓ9ð (¸QØ—‘˜Ô'÷(ä”b—g‘g—l‘l 7¨FÓ3°SÓ9ð G¸QØ—‘ÐEÔF÷Gä—^‘^ä—N‘NØØØ$Ø*Ø!ØØð	ð Ø#ØØôˆFð  ×$Ñ$¨Ò)ÐPÐ-@ÀÇÁÀÐ+PÓPÐ)ô �J‰J�qŒMô �H‰H”R—W‘W—\‘\ '¨6Ó2Ô3ô ”b—g‘g—l‘l 7¨FÓ3°SÓ9ð N¸QØ—‘ÐLÔM÷Nä”b—g‘g—l‘l 7¨FÓ3°SÓ9ð 8¸QØ—‘Ð6Ô7÷8ä—^‘^ä—N‘NØØØ$Ø*Ø!ØØØð
ð Ø#ØØôˆFð" ×$Ñ$¨Ò)ÐPÐ-@ÀÇÁÀÐ+PÓPÐ)ô
 Ÿ™ FÓ+öàÜ—7‘7—=‘=¤§¡§¡¨f°aÓ!8Ô9¸aÀ¹d¿l¹l¼nò ðˆGð ô
 �w“< 1Ò$ÐSÐ(IÈ'ÈÐ&SÓSÐ$Ø˜!‘*ˆCô  —^‘^ä—N‘NÜ$ØÜ—G‘G—L‘L ¨Ó-Ü—G‘G—L‘L ¨Ó-Øðð  $ØØôˆFð ×$Ñ$¨Ò)ÐSÐ-CÀFÇMÁMÀ?Ð+SÓSÐ)ô �kÓ"ð $ aÜ—y‘y “|�÷$ä˜d¤DÔ)Ð)Ð)Ü�t“9˜q’=Ð;Ð";Ó;�=ô
 �t—y‘y“{Ó#ˆDØ!%ÖJ˜A¨°!©°q·|±|ÀDÕ7I’aÐJˆFÐJØ!%ÖJ˜A¨°!©°q·|±|ÀDÕ7I’aÐJˆFÐJØ!%ÖJ˜A¨°!©°q·|±|ÀDÕ7I’aÐJˆFÐJÜ�v“; !Ò#ÐPÐ'GÈÀxÐ%PÓPÐ#Ü�v“; !Ò#ÐUÐ'LÈVÈHÐ%UÓUÐ#Ü�v“; !Ò#ÐUÐ'LÈVÈHÐ%UÓUÐ#ð %¨Ñ,Ð,Ð,ÜŸ
™
 4Ð(9Ñ#:Ó;ˆIÜ�y—~‘~Ó'Ó(ØØð-ò ð Hð -¬V°I·N±NÓ4DÓ-EÐ,FÐGóHð ô ˜) GÑ,Ó-°'°Ò:Ð:Ð:Ü˜) EÑ*Ó+°¸¨~Ò=Ð=Ð=ô Ÿ™Ÿ™ f¨cÓ2ˆJÜ—g‘g—l‘l 7¨IÓ6ˆGÜŸ'™'Ÿ,™, w°Ó4ˆKÜ�O‰O˜F GÔ,õ ;õñ ˜kÓ*ˆFô  —^‘^Ü—‘Ô!7¸À[ÐR]Ð^Ø#ØØô	ˆFð ×$Ñ$¨Ò)ÐYÐ-IÈ&Ï-É-ÈÐ+YÓYÐ)á˜[Ó)ˆEð ò V�Ø—?‘? 4Ô(¨E°TªMØ 5™=ÐG¨T¨FÐ2FÐ*GÓG˜=Ø! $™<¨5°©;Ó6ÐU¸4¸&Ð@TÐ8UÓUÐ6ðVñ ˜jÓ)ˆFØ&ò 
Z�Ø"ò 	Z�DØ ŸO™O¨FÔ3¸¸6¸(°|ÀtÑ7KØ Ø 5™=ÐG¨T¨FÐ2FÐ*GÓG˜=Ø—}‘} ZÔ0ð  % T™{¨f¯j©j¸Ó.>Ó>Ð_À4À&ÐH^Ð@_Ó_Ð>à$ T™{¨f°T©lÓ:ÐY¸t¸fÐDXÐ<YÓYÐ:ñ	Zð
Zõ -á *¨5Ð1BÑ+CÓ DÐÜÐ(×-Ñ-Ó/Ó0ØØð5ò ð Xð 5´VÐ<M×<RÑ<RÓ<TÓ5UÐ4VÐWóXð ô Ð+¨GÑ4Ó5¸'¸ÒBÐBÐBÜÐ+¨EÑ2Ó3¸À°~ÒEÐEÑEä�M‰M˜'°Õ6Ü�M‰Mœ"Ÿ'™'Ÿ/™/¨+Ó6ÀdÖK÷O(ñ (ú÷Gñ Gú÷8Nñ Nú÷8ñ 8üò,÷2$ñ $üò KùÚJùÚJøôX �M‰M˜'°Õ6Ü�M‰Mœ"Ÿ'™'Ÿ/™/¨+Ó6ÀdÖKúsè   Á0A*`9 Ã_$Ã,2`9 Ä_1Ä0C`9 Ç=_>È2`9 É`ÉA3`9 ËA`ÌB:`9 Ï`Ï/A`9 Ð;`*Ñ`*Ñ`9 Ñ `/Ñ;`/Ñ?`9 Ò`4Ò `4Ò$G`9 Ù4`9 ÚA,`9 Û;`9 ÜB`9 ß$_.ß)`9 ß1_;ß6`9 ß>`à`9 à`à`9 à`'à"`9 à9AbN)r*   ÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rh   © ó    r$   r   r      s   „ ÙUôtLro   r   Ú__main__)rm   Ú
__future__r   rB   r-   rK   r4   r6   r+   r:   ÚunittestÚmypy.defaultsr   Úmypy.test.configr   r.   r/   Ú	_MISC_DIRrA   rN   ÚTestCaser   rj   Úmainrn   ro   r$   ú<module>rx      s™   ðÙ Lå "ã Û 	Û Û Û 
Û Û Û å +Ý #à�G‰G�L‰L˜ Ó(€	Ø—7‘7—<‘< 	¨?Ó;Ð ØŸ™Ÿ™ iÐ1FÓGÐ ôwL × 1Ñ 1ô wLðt ˆzÒØ€H‡M�M…Oð ro   