Ë
    pPêj7  ã                  óX  — 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
mZ ddlmZmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z! 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.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z<m=Z=m>Z> ddl?m@Z@ ddlAmBZB ddlCmDZD ddlEmFZF  ejŽ                  dd¬«      ZHeHj“                  dd¬«       eHj“                  dd¬«       dZJ G d„ d«      ZKd%d„ZLd&d„ZMd'd „ZNd(d!„ZO	 	 	 	 	 	 	 	 	 	 	 	 d)d"„ZPd*d#„ZQd+d$„ZRy),a¦  
Mypy parallel build worker.

The protocol of communication with the coordinator is as following:
* Read (pickled) build options from command line.
* Populate status file with pid and socket address.
* Receive build sources from coordinator.
* Initialize build manager with the sources, and send ack to coordinator.
* Receive build graph from coordinator, and ack it.
* Receive SCC structure from coordinator, and ack it.
* In a loop:
  - Receive an SCC id from coordinator, and start processing it.
  - SCC is processed in two phases: interface and implementation, send a response after each.
  - When prompted by coordinator (with a scc_ids=[] message), cleanup and shutdown.
é    )ÚannotationsN)ÚFinal)Ú
ReadBufferÚread_tag)Úutil)ÚGRAPH_MESSAGEÚSCC_REQUEST_MESSAGEÚSCCS_DATA_MESSAGEÚSOURCES_DATA_MESSAGEÚ
AckMessageÚBuildManagerÚGraphÚGraphMessageÚModuleResultÚSccRequestMessageÚSccResponseMessageÚSccsDataMessageÚSourcesDataMessageÚload_pluginsÚ process_stale_scc_implementationÚprocess_stale_scc_interface)ÚTagÚread_int_listÚ	read_json)ÚRECURSION_LIMITÚWORKER_CONNECTION_TIMEOUTÚWORKER_IDLE_TIMEOUTÚWORKER_START_INTERVALÚWORKER_START_TIMEOUT)ÚOUTPUT_CHOICES)ÚCompileErrorÚ	ErrorInfoÚErrorsÚreport_internal_error)ÚFileSystemCache)ÚIPCExceptionÚ	IPCServerÚready_to_readÚreceiveÚsend)ÚBuildSourceÚBuildSourceSetÚcompute_search_paths)ÚFileRawData)ÚOptions©Úread_py_file)Ú__version__Úmypy_workerzMypy build worker)ÚprogÚdescriptionz--status-filez)status file to communicate worker details)Úhelpz--options-dataz!file with serialized mypy optionsÚbuild_workerc                  ó,   — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 dd„Zy)ÚServerContextc                óJ   — || _         || _        || _        || _        || _        y ©N)ÚoptionsÚdisable_error_codeÚenable_error_codeÚerrorsÚfscache)Úselfr<   r=   r>   r?   r@   s         ú]/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/build_worker/worker.pyÚ__init__zServerContext.__init__K   s)   € ð &ˆŒØ);ˆÔØ(9ˆÔØ#ˆŒØ%ˆ�ó    N)r<   r/   r=   ú	list[str]r>   rE   r?   r#   r@   r%   ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__rC   © rD   rB   r9   r9   J   sA   „ ð&àð&ð &ð&ð %ð	&ð
 ð&ð !ð&ð 
ô&rD   r9   c                óÊ  ‡— t        j                  t        «       t        j                  «       dk(  rt        j                  ddd«       t        j                  | «      }t        j                  «       t        z   }d }t        j                  «       |k  r:	 t        |j                  d«      5 }t        |j                  «       «      }d d d «       nt%        d|j                  › d|› �«      ‚t'        «      }|j)                  dg «      }|j)                  dg «      }	t+        «       j-                  |«      }
|j.                  }t1        t2        t4        «      }	 t        |d	«      5 }t7        j8                  t;        j<                  «       |j>                  d
œ|«       |jA                  d«       d d d «       tG        «       }|jI                  |
jJ                  «       |j                  Š|
jL                  €d ntO        jP                  |
jL                  «      }tS        |
ˆfd„|¬«      }tU        |
||	||«      }	 |5  tW        ||«       d d d «       |ja                  «        |
jb                  rte        jf                  d«       y y # 1 sw Y   �Œ³xY w# t        $ r&}|}t        j                   t"        «       Y d }~�Œ0d }~ww xY w# 1 sw Y   �ŒxY w# tB        $ r}tE        d|› d�|«       ‚ d }~ww xY w# 1 sw Y   ŒªxY w# t        tX        f$ r%}|
jZ                  dk\  rtE        d|«       Y d }~ŒÜd }~wtB        $ r$}t]        ||j^                  d||
«       Y d }~�Œd }~ww xY w# |ja                  «        w xY w)NÚCPythoni@ é   ÚrbzFailed to read z: r=   r>   Úw)ÚpidÚconnection_nameú
zError writing status file ú:c                ó   •— t        | ‰«      S r;   r0   )ÚpathÚcached_reads    €rB   ú<lambda>zmain.<locals>.<lambda>‰   s   ø€ ¤¨d°KÓ!@€ rD   )Úread_sourceÚerror_formatteré   z%Error communicating with coordinator:r   )4ÚsysÚsetrecursionlimitr   ÚplatformÚpython_implementationÚgcÚset_thresholdÚparserÚ
parse_argsÚtimer   ÚopenÚoptions_datar   ÚreadÚOSErrorÚsleepr   ÚTimeoutErrorr   Úpopr/   Úapply_changesÚstatus_filer'   ÚCONNECTION_NAMEr   ÚjsonÚdumpÚosÚgetpidrR   ÚwriteÚ	ExceptionÚprintr%   Úset_package_rootÚpackage_rootÚoutputr    Úgetr#   r9   Úserver&   Ú	verbosityr$   ÚfileÚcleanupÚ	fast_exitr   Ú	hard_exit)ÚargvÚargsÚend_timeÚlast_exceptionÚfÚbufÚexcÚoptions_dictr=   r>   r<   rm   Úserverr@   rZ   r?   ÚctxrW   s                    @rB   ÚmainrŠ   Z   sß  ø€ ä×Ñœ/Ô*Ü×%Ñ%Ó'¨9Ò4Ü
×Ñ˜ R¨Ô,ä×Ñ˜TÓ"€Dô
 �y‰y‹{Ô1Ñ1€HØ'+€NÜ
�)‰)‹+˜Ò
 ð	Ü�d×'Ñ'¨Ó.ð +°!Ü  §¡£Ó*�÷+ð 	ä˜_¨T×->Ñ->Ð,?¸rÀ.ÐAQÐRÓSÐSä˜S“>€LØ%×)Ñ)Ð*>ÀÓCÐØ$×(Ñ(Ð)<¸bÓAÐÜ‹i×%Ñ% lÓ3€Gà×"Ñ"€KÜ”Ô(AÓB€FðÜ�+˜sÓ#ð 	 qÜ�I‰IœbŸi™i›k¸f×>TÑ>TÑUÐWXÔYØ�G‰G�DŒM÷	ô Ó€GØ×Ñ˜W×1Ñ1Ô2Ø—,‘,€KØ%Ÿn™nÐ4‘d¼.×:LÑ:LÈWÏ^É^Ó:\€OÜØÛ@Ø'ô€Fô ˜Ð!3Ð5FÈÐPWÓ
X€Cð	Øñ 	Ü�&˜#Ô÷	ð 	�‰Ôà×Òä�‰�qÕð ÷a+ñ +ûäò 	Ø ˆNÜ�J‰JÔ,Ô-Ýûð	ú÷"	ñ 	ûô ò ÜÐ*¨;¨-°qÐ9¸3Ô?Øûðú÷ 	ð 	ûä”\Ð"ò @Ø×Ñ Ò!ÜÐ9¸3Ô?ÿøÜò DÜ˜c 6§;¡;°°6¸7×CÒCûðDûð 	�‰Õúsµ   ÂJ Â)I4ÃJ ÅK  ÅAJ3Æ#K  È*K. È,K"È9K. É4I>É9J Ê	J0Ê
J+Ê+J0Ê3J=Ê8K  Ë 	KË	KËKË"K+Ë'K. Ë.MË=LÌM ÌMÌ)MÍM ÍMÍM ÍM"c                óf   — t        | «      }|t        k(  rt        | «      rJ ‚y||k(  s
J d|› �«       ‚y)z+Check if the message is a shutdown request.TzUnexpected tag: F)r   r	   r   )r…   Úexpected_tagÚtags      rB   Úshould_shutdownrŽ   ž   sC   € ä
�3‹-€CØ
Ô!Ò!Ü  Ô%Ð%Ð%ØØ�,ÒÐ8Ð"2°3°%Ð 8Ó8ÐØrD   c                óè	  — t        | «      }t        |t        «      ryt        j                  |«      j
                  }t        ||«      }|€yt        | t        «       «       t        | «      }t        |t        «      ryt        j                  «       dk(  rt        j                  «        t        j                  ||«      }|xj                  |j                  z  c_        |j                   }|D ]  }||   j"                  |j$                  |<   Œ  |j&                  j)                  |j*                  «       t        | t        «       «       t        | «      }t        |t,        «      ryt/        j                  |«      j0                  }|D �	ci c]  }	|	j2                  |	“Œ c}	|_        |D �	cg c]  }	|	j2                  ‘Œ c}	|_        t        j                  «       dk(  r(t        j8                  «        t        j:                  «        t        | t        «       «       	 t=        j<                  «       }
t?        | gt@        «       t=        j<                  «       }t        | «      }tC        |«      tD        k(  sJ ‚tG        j                  |«      }|jI                  ||
z
  t=        j<                  «       |z
  ¬«       |jJ                  }|sKt        jL                  «       }|jI                  |d   d   |d   d   |d   d   ¬	«       |jO                  «        y|D �cg c]  }|j4                  |   ‘Œ }}g }|D ]  }	|jQ                  |	jR                  «       Œ t=        j<                  «       }
	 tU        ||||jV                  |jX                  «       g }|D ]<  }	t[        ||	||j\                  ¬
«      }|jQ                  |«       |j_                  «        Œ> 	 i }g }g }|D ]-  \  }}}|ja                  |«       |||<   |ja                  |«       Œ/ tc        |d|¬«      }te        || |«       	 i }tg        ||«      D ]  \  }}|ti        ||g||g«      z  }Œ |j_                  «        tc        |d|¬«      }te        || |«       |jI                  t=        j<                  «       |
z
  d¬«       �Œc c}	w c c}	w c c}w # tj        $ r}tc        |d|¬«      }Y d}~Œbd}~ww xY w# tj        $ r%}tc        |d|¬«      }te        || |«       Y d}~Œ†d}~ww xY w)zÞMain server loop of the worker.

    Receive initial state from the coordinator, then process each
    SCC checking request and reply to client (coordinator). See module
    docstring for more details on the protocol.
    NrM   T)Úscc_wait_timeÚscc_receive_timer   Úcollectionsr[   é   )Úgc_collections_gen0Úgc_collections_gen1Úgc_collections_gen2)Ú
from_cache)Úscc_idsÚis_interfaceÚresultF)r˜   r™   Úblocker)Útotal_process_stale_timeÚstale_sccs_processed)6r)   rŽ   r   r   rg   ÚsourcesÚsetup_worker_managerr*   r   r   r^   r_   r`   Údisabler   Úmissing_modulesÚgraphÚdependencies_setÚ
import_mapÚpluginÚset_modulesÚmodulesr
   r   ÚsccsÚidÚ	scc_by_idÚ	top_orderÚfreezeÚenablerd   r(   r   r   r	   r   Ú	add_statsr˜   Ú	get_statsÚ
dump_statsÚextendÚmod_idsÚload_statesÚimport_errorsÚmod_datar   r—   ÚcommitÚappendr   Ú
timed_sendÚzipr   r!   )rˆ   r‰   r…   rž   ÚmanagerÚ
graph_datar¢   r©   r¨   ÚsccÚt0Út1Úscc_messager˜   Úgc_statsÚscc_idr²   ÚresultsÚ
scc_resultÚmod_resultsÚstaleÚ
meta_filesÚ
mod_resultÚ	meta_fileÚmessagerš   r›   s                              rB   rz   rz   ¨   sz  € ô �&‹/€CÜ�sÔ0Ô1ØÜ ×%Ñ% cÓ*×2Ñ2€GÜ" 7¨CÓ0€GØ€Øô 	ˆ”“ÔÜ
�&‹/€CÜ�sœMÔ*Øô ×%Ñ%Ó'¨9Ò4Ü
�
‰
Œä×"Ñ" 3¨Ó0€Jà×Ò˜z×9Ñ9Ñ9ÕØ×Ñ€EØò <ˆØ!& r¡×!;Ñ!;ˆ×Ñ˜2Òð<ð ‡N�N×Ñ˜wŸ™Ô/ô 	ˆ”“ÔÜ
�&‹/€CÜ�sÔ-Ô.ØÜ×Ñ Ó$×)Ñ)€DØ04Ö5¨˜Ÿ™ ™Ò5€GÔØ+/Ö0 C˜Ÿ›Ò0€GÔä×%Ñ%Ó'¨9Ò4Ü
�	‰	ŒÜ
�	‰	Œô 	ˆ”“ÔØ
Ü�Y‰Y‹[ˆÜ�v�hÔ 3Ô4Ü�Y‰Y‹[ˆÜ�f‹oˆÜ˜‹}Ô 3Ò3Ð3Ð3Ü'×,Ñ,¨SÓ1ˆØ×Ñ¨¨R©Ä$Ç)Á)Ã+ÐPRÑBRÐÔSØ×%Ñ%ˆÙä—|‘|“~ˆHØ×ÑØ$,¨Q¡K°Ñ$>Ø$,¨Q¡K°Ñ$>Ø$,¨Q¡K°Ñ$>ð ô ð
 ×ÑÔ ØØ8?Ö@¨f�×!Ñ! &Ó)Ð@ˆÐ@ØˆØò 	(ˆCØ�N‰N˜3Ÿ;™;Õ'ð	(ä�Y‰Y‹[ˆð"	1Ü˜ ¨°×1JÑ1JÈK×L`ÑL`ÔaØˆGØò !�Ü8Ø˜3 °J×4IÑ4Iô�
ð —‘˜zÔ*à—‘Õ ñ!ð ˆKØˆEØˆJØ-4ò -Ñ)��J 	Ø—‘˜RÔ Ø",�˜B‘Ø×!Ñ! )Õ,ð-ô )°ÀtÐT_Ô`ˆGÜ�w ¨Ô0ð
aà24�Ü%(¨°
Ó%;ò b‘M�B˜	ØÔ>¸uÀrÀdÈGÐV_ÐU`ÓaÑa‘Fðbð —‘Ô ô -°WÈ5ÐY_Ô`�Ü�w ¨Ô0Ø×Ñ´4·9±9³;ÀÑ3CÐZ[ÐÔ\ñw ùò 6ùÚ0ùò6 AøôF  ò cÜ,°WÈ5ÐZaÔb•ûðcûô) ò 	1Ü(°ÀtÐU\Ô]ˆGÜ�w ¨×0Ñ0ûð	1úsC   ÆRÆ"RÌRÍA&S Ð9R Ò	S Ò(R;Ò;S Ó	S1ÓS,Ó,S1c                ó’   — t        j                   «       }t        ||«       | j                  t        j                   «       |z
  ¬«       y )N)Úscc_send_time)rd   r*   r®   )rº   rˆ   rÉ   r½   s       rB   r¸   r¸     s3   € Ü	�‰‹€BÜˆ�ÔØ×Ñ¤D§I¡I£K°"Ñ$4ÐÕ5rD   c                óä  — t        j                  «       dk(  r(t        j                  «        t        j                  «        g }| D ]f  }||   }|j
                  j                  |j                  «      |_        ||   \  }}	|	�|j                  |	¬«       n|j                  |«       ||_
        Œh |r|j                  |d¬«       | D ]ß  }||   }|j                  €J ‚|j                  j                  D �
ch c]  }
|
j                  ’Œ }}
|j                  j                  j!                  «       D ��ci c]  \  }}||v sŒ||“Œ c}}|_        ||v sŒŠ|j$                  j'                  |j(                  ||j
                  «       ||   D ]  }|j$                  j+                  |«       Œ Œá t        j                  «       dk(  r)t        j,                  «        t        j.                  «        yyc c}
w c c}}w )zDRe-create full state of an SCC as it would have been in coordinator.rM   N)Úraw_dataF)Ú
post_parse)r^   r_   r`   Úcollectr    r<   Úclone_for_moduler©   Ú
parse_filer·   Úknown_suppressed_deps_optsÚ	parse_allÚtreeÚimportsÚlineÚignored_linesÚitemsÚimports_ignoredr?   Úset_fileÚxpathÚadd_error_infor¬   r­   )r²   r¢   rº   r´   rµ   Úneeds_parser©   ÚstateÚsuppressed_deps_optsrÍ   ÚimpÚimport_linesrÖ   ÚcodesÚerr_infos                  rB   r³   r³     s½  € ô ×%Ñ%Ó'¨9Ò4ô 	�
‰
ŒÜ
�
‰
ŒØ€KØò 
@ˆØ�b‘	ˆàŸ™×6Ñ6°u·x±xÓ@ˆŒØ)1°"©Ñ&Ð˜hØÐØ×Ñ hÐÕ/à×Ñ˜uÔ%à+?ˆÕ(ð
@ñ Ø×Ñ˜+°%ÐÔ8Øò 8ˆØ�b‘	ˆØ�z‰zÐ%Ð%Ð%Ø,1¯J©J×,>Ñ,>Ö? S˜Ÿ›Ð?ˆÐ?à+0¯:©:×+CÑ+C×+IÑ+IÓ+K÷!
Ù'˜D %ÈtÐWcÒOcˆD�%‰Kó!
ˆÔð �ÒØ�N‰N×#Ñ# E§K¡K°°U·]±]ÔCØ)¨"Ñ-ò 8�Ø—‘×-Ñ-¨hÕ7ñ8ð8ô ×%Ñ%Ó'¨9Ò4Ü
�	‰	ŒÜ
�	‰	�ð 5ùò @ùó!
s   Ã2G'Ä.G,Ä;G,c                óN  — t         j                  j                  t         j                  j                  t        «      «      }t         j                  j                  d«      }t        | |j                  ||«      }t        | «      }	 t        |j                  |j                  t        j                  g «      \  }}|j                  }|j                  |_        |j                  |_        |j!                  d„ ¬«       dd„}		 t#        ||t        j$                  «       |d |t&        |||j                  |j(                  €d nt+        j
                  |j(                  «      |	|j,                  t        j                  t        j.                  d¬«      S # t        $ r Y y w xY w# t        $ r Y y w xY w)NÚMYPY_ALT_LIB_PATHc                 ó   — y r;   rK   )Úmsgs    rB   rX   z&setup_worker_manager.<locals>.<lambda>]  s   � rD   )Úerror_callbackc                 ó   — y r;   rK   )ÚfilenameÚnew_messagesÚ
is_seriouss      rB   Úflush_errorsz*setup_worker_manager.<locals>.flush_errors_  s   € àrD   T)Úignore_prefixÚ
source_setÚreportsr<   Ú
version_idr¥   Úplugins_snapshotr?   rZ   rí   r@   ÚstdoutÚstderrÚparallel_worker)rê   z
str | Nonerë   rE   rì   ÚboolrF   rG   )rq   rV   ÚdirnameÚ__file__Úenvironry   r-   r<   r,   r   r?   r\   ró   r!   r=   r>   Úprocess_error_codesr   Úgetcwdr2   rx   r    r@   rô   )
rž   r‰   Údata_dirÚalt_lib_pathÚsearch_pathsrï   r¥   Úsnapshotr<   rí   s
             rB   rŸ   rŸ   L  sS  € Ü�w‰w�‰œrŸw™wŸ™¬xÓ8Ó9€Hä—:‘:—>‘>Ð"5Ó6€LÜ'¨°·±¸hÈÓU€Lä Ó(€JðÜ'¨¯©°S·Z±ZÄÇÁÈRÓPÑˆ�ð �k‰k€GØ!$×!7Ñ!7€GÔØ #× 5Ñ 5€GÔØ×ÑÑ/?ÐÔ@óðÜØØÜŸ)™)›+Ø!ØØÜ"ØØ%Ø—:‘:Ø$+§N¡NÐ$:™DÄ×@RÑ@RÐSZ×SaÑSaÓ@bØ%Ø—K‘KÜ—:‘:Ü—:‘:Ø ô!
ð 	
øô ò áðûôB ò Ùðús%   Â3F	 Ã=BF Æ		FÆFÆ	F$Æ#F$c                 ó<   — t        t        j                  dd  «       y )Nr[   )rŠ   r\   r€   rK   rD   rB   Úconsole_entryr  z  s   € ÜŒ�‰�!�"ˆÕrD   )r€   rE   rF   rG   )r…   r   rŒ   r   rF   rö   )rˆ   r'   r‰   r9   rF   rG   )rº   r   rˆ   r'   rÉ   r   rF   rG   )r²   rE   r¢   r   rº   r   r´   zdict[str, list[ErrorInfo]]rµ   z+dict[str, tuple[bytes, FileRawData | None]]rF   rG   )rž   zlist[BuildSource]r‰   r9   rF   zBuildManager | None)rF   rG   )SÚ__doc__Ú
__future__r   Úargparser`   ro   rq   r^   r\   rd   Útypingr   Úlibrt.internalr   r   Úmypyr   Ú
mypy.buildr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú
mypy.cacher   r   r   Úmypy.defaultsr   r   r   r   r   Úmypy.error_formatterr    Úmypy.errorsr!   r"   r#   r$   Úmypy.fscacher%   Úmypy.ipcr&   r'   r(   r)   r*   Úmypy.modulefinderr+   r,   r-   Ú
mypy.nodesr.   Úmypy.optionsr/   Ú	mypy.utilr1   Úmypy.versionr2   ÚArgumentParserrb   Úadd_argumentrn   r9   rŠ   rŽ   rz   r¸   r³   rŸ   r  rK   rD   rB   ú<module>r     s-  ðñõ  #ã Û 	Û Û 	Û Û 
Û Ý ç /å ÷÷ ÷ ÷ ó ÷$ 5Ñ 4÷õ õ 0ß NÓ NÝ (ß JÕ Jß OÑ OÝ "Ý  Ý "Ý $à	 ˆ×	 Ñ	  mÐATÔ	U€Ø × Ñ �OÐ*UÐ Ô VØ × Ñ Ð$Ð+NÐ Ô Oà €÷&ñ &ó AóHóm]ó`6ð+Øð+àð+ð ð+ð .ð	+ð
 :ð+ð 
ó+ó\+ô\rD   