§
    ÷yIf  ã                  ó&  — U d dl mZ d dlZd dlmZ d dlmZmZ d dlm	Z	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mZ 	 d dlZn# e$ r dZY nw xY w	 d dlmZ n# e$ r dZY nw xY we	rd dlmZ daded<   	 d#d$d„Zd%d„Z d&d„Z!	 d#d'd"„Z"dS )(é    )ÚannotationsN)Údefaultdict)ÚIterableÚSequence)ÚTYPE_CHECKINGÚAny)Ú	reporters)Ú_augment_sys_path)ÚMessage)ÚFileItem)ÚLinterStatsÚmerge_stats)ÚProcessPoolExecutor)ÚPyLinterzPyLinter | NoneÚ_worker_linterÚlinterÚbytesÚextra_packages_pathsúSequence[str] | NoneÚreturnÚNonec                ól  — t          j        | ¦  «        at          sJ ‚t                               t	          j        ¦   «         ¦  «         t                               ¦   «          t                               t          j        d¬¦  «         t           	                    ¦   «          |rt          |¦  «         dS dS )zåFunction called to initialize a worker for a Process within a concurrent Pool.

    :param linter: A linter-class (PyLinter) instance pickled with dill
    :param extra_packages_paths: Extra entries to be added to `sys.path`
    T)ÚforceN)ÚdillÚloadsr   Úset_reporterr	   ÚCollectingReporterÚopenÚload_plugin_modulesÚ_dynamic_pluginsÚload_plugin_configurationr
   )r   r   s     úH/var/www/piapp/venv/lib/python3.11/site-packages/pylint/lint/parallel.pyÚ_worker_initializer#   &   s§   € õ ”Z Ñ'Ô'€NÝÐÐÐõ ×Ò¥	Ô <Ñ >Ô >Ñ?Ô?Ð?Ý×ÒÑÔÐõ ×&Ò&¥~Ô'FÈdÐ&ÑSÔSÐSÝ×,Ò,Ñ.Ô.Ð.àð 0ÝÐ.Ñ/Ô/Ð/Ð/Ð/ð0ð 0ó    Ú	file_itemr   úWtuple[int, str, str, str, list[Message], LinterStats, int, defaultdict[str, list[Any]]]c                ó¾  — t           st          d¦  «        ‚t                                ¦   «          t                                | ¦  «         t	          t
          ¦  «        }t                                ¦   «         D ]8}|                     ¦   «         }|� ||j                  	                    |¦  «         Œ9t           j
        j        }t          t           j
        t          j        ¦  «        sJ ‚t           j
                             ¦   «          t!          t#          j        ¦   «         ¦  «        t           j        | j        t           j        j        |t           j        t           j        |fS )Nz!Worker linter not yet initialised)r   ÚRuntimeErrorr   Úcheck_single_file_itemr   ÚlistÚget_checkersÚget_map_dataÚnameÚappendÚreporterÚmessagesÚ
isinstancer	   r   ÚresetÚidÚmultiprocessingÚcurrent_processÚcurrent_nameÚfilepathÚ
file_stateÚ	base_nameÚstatsÚ
msg_status)r%   Úmapreduce_dataÚcheckerÚdataÚmsgss        r"   Ú_worker_check_single_filer@   @   s  € õ ð @ÝÐ>Ñ?Ô?Ð?Ý×ÒÑÔÐÝ×)Ò)¨)Ñ4Ô4Ð4Ý ¥Ñ&Ô&€NÝ!×.Ò.Ñ0Ô0ð 6ð 6ˆØ×#Ò#Ñ%Ô%ˆØÐØ˜7œ<Ô(×/Ò/°Ñ5Ô5Ð5øÝÔ"Ô+€DÝ•nÔ-­yÔ/KÑLÔLÐLÐLÐLÝÔ×!Ò!Ñ#Ô#Ð#å
�?Ô*Ñ,Ô,Ñ-Ô-ÝÔ#ØÔÝÔ!Ô+ØÝÔÝÔ!Øð	ð 	r$   r   Úall_mapreduce_dataú3defaultdict[int, list[defaultdict[str, list[Any]]]]c                óV  — t          t          ¦  «        }|                     ¦   «         D ]<}|D ]7}|                     ¦   «         D ] \  }}||                              |¦  «         Œ!Œ8Œ=|                      ¦   «         }|D ],}|j        |v r!|                     | ||j                 ¦  «         Œ-dS )zJMerges map/reduce data across workers, invoking relevant APIs on checkers.N)r   r*   ÚvaluesÚitemsÚextendr+   r-   Úreduce_map_data)	r   rA   Úcollated_map_reduce_dataÚlinter_dataÚrun_dataÚchecker_namer>   Úoriginal_checkersr=   s	            r"   Ú_merge_mapreduce_datarM   d   sé   € õ =HÍÑ<MÔ<MÐØ)×0Ò0Ñ2Ô2ð Dð DˆØ#ð 	Dð 	DˆHØ&.§n¢nÑ&6Ô&6ð Dð DÑ"�˜dØ(¨Ô6×=Ò=¸dÑCÔCÐCÐCðDð	Dð
 ×+Ò+Ñ-Ô-ÐØ$ð Tð TˆØŒ<Ð3Ð3Ð3ð ×#Ò# FÐ,DÀWÄ\Ô,RÑSÔSÐSøð	Tð Tr$   ÚjobsÚintÚfilesúIterable[FileItem]c           
     óÌ  — t          j        t          |¬¦  «        }t          ||t	          j        | ¦  «        f¬¦  «        5 }|                      ¦   «          g }t          t          ¦  «        }| 	                    t          |¦  «        D ]˜\  }}	}
}}}}}|| j        _        d| j        _        |                      |	|
¦  «         |D ]}| j                             |¦  «         Œ|                     |¦  «         ||                              |¦  «         | xj        |z  c_        Œ™	 ddd¦  «         n# 1 swxY w Y   t'          | |¦  «         t)          | j        g|¢¦  «        | _        dS )a  Use the given linter to lint the files with given amount of workers (jobs).

    This splits the work filestream-by-filestream. If you need to do work across
    multiple files, as in the similarity-checker, then implement the map/reduce functionality.
    )r   )Úmax_workersÚinitializerÚinitargsFN)Ú	functoolsÚpartialr#   r   r   Údumpsr   r   r*   Úmapr@   r8   r9   Ú_is_base_filestateÚset_current_moduler/   Úhandle_messager.   r;   rM   r   r:   )r   rN   rP   r   rT   ÚexecutorÚ	all_statsrA   Ú
worker_idxÚmoduleÚ	file_pathr9   r0   r:   r;   r<   Úmsgs                    r"   Úcheck_parallelrc   |   sÉ  € õ Ô#ÝÐ1Eðñ ô €Kõ 
Ø k½T¼ZÈÑ=OÔ=OÐ<Qð
ñ 
ô 
ð ,à	Ø�Š‰ŒˆØˆ	å�ÑÔð 	ð  �\Š\Õ3°UÑ;Ô;ð	,ð 	,ñ 	
ØØØØØØØØà*3ˆFÔÔ'Ø38ˆFÔÔ0Ø×%Ò% f¨iÑ8Ô8Ð8Øð 4ð 4�Ø”×.Ò.¨sÑ3Ô3Ð3Ð3Ø×Ò˜UÑ#Ô#Ð#Ø˜zÔ*×1Ò1°.ÑAÔAÐAØÐÔ Ñ+ÐÔÐð#	,ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,õ> ˜&Ð"4Ñ5Ô5Ð5Ý ¤Ð9¨yÐ9Ñ:Ô:€F„L€L€Ls   ÁCD-Ä-D1Ä4D1)N)r   r   r   r   r   r   )r%   r   r   r&   )r   r   rA   rB   r   r   )
r   r   rN   rO   rP   rQ   r   r   r   r   )#Ú
__future__r   rV   Úcollectionsr   Úcollections.abcr   r   Útypingr   r   r   Úpylintr	   Úpylint.lint.utilsr
   Úpylint.messager   Úpylint.typingr   Úpylint.utilsr   r   r4   ÚImportErrorÚconcurrent.futuresr   Úpylint.lintr   r   Ú__annotations__r#   r@   rM   rc   © r$   r"   ú<module>rr      sð  ðð
 #Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€à Ð Ð Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ø "Ð "Ð "Ð "Ð "Ð "Ø "Ð "Ð "Ð "Ð "Ð "Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1ðØÐÐÐÐøØð ð ð Ø€O€O€OðøøøðØ6Ð6Ð6Ð6Ð6Ð6Ð6øØð ð ð ØÐÐÐðøøøð ð %Ø$Ð$Ð$Ð$Ð$Ð$ð #'€Ð &Ð &Ð &Ñ &ð AEð0ð 0ð 0ð 0ð 0ð4!ð !ð !ð !ðHTð Tð Tð Tð8 26ð	1;ð 1;ð 1;ð 1;ð 1;ð 1;ð 1;s$   ÁA ÁAÁAÁA! Á!A+Á*A+