ó
    áÅŸgJX  ã                  ó$  • % S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ r   SSK!J"r"  \\\#\$\$\#\\#   4      r%\RL                  " \'5      r(\RR                  1r*S\+S'   S\+S'   \RX                        S!S j5       r-S"S jr.S#S jr/ " S S5      r0 " S S5      r1      S$S jr2      S%S  jr3g)&z$Checker Manager and Checker classes.é    )ÚannotationsN)ÚAny)Ú	Generator)ÚList)ÚOptional)ÚSequence)ÚTuple)Údefaults)Ú
exceptions)Ú	processor)Úutils)ÚFSTRING_START)Úexpand_paths)Ú
parse_args)ÚCheckers)ÚLoadedPlugin)ÚStyleGuideManagerr   Ú_mp_pluginsúargparse.NamespaceÚ_mp_optionsc              #  ó0   #   • Xsq q S v •  B Bg ! B Bf = f7f©N)r   r   )ÚpluginsÚoptionss     ÚO/var/www/blue/EV-Temp_rev04/venv/lib/python3.13/site-packages/flake8/checker.pyÚ_mp_preforkr   5   s#   é € ð  'Ð€K�ð%Ûà™øˆK™üs   ‚ˆ Œ�“c                óÜ   • [         R                   " [         R                  [         R                  5         [        [        4  g ! [
         a    [        U 5      u  pUR                  Usqq g f = fr   )ÚsignalÚSIGINTÚSIG_IGNr   r   Ú	NameErrorr   Úcheckers)Úargvr   r   s      r   Ú_mp_initr$   B   sU   € ô ‡M‚M”&—-‘-¤§¡Ô0ð=ä”[Ò øÜó =Ü% dÓ+ÑˆØ#*×#3Ñ#3°WÐ ˆ’[ð=ús   µA Á&A+Á*A+c                óD   • [        U [        [        S9R                  5       $ )N©Úfilenamer   r   )ÚFileCheckerr   r   Ú
run_checks©r'   s    r   Ú_mp_runr+   P   s   € ÜØ¤;¼ñç�jƒlðó    c                  óŒ   • \ rS rSrSr        SS jrSS jrSS jrSS jrSS jr	SS jr
SS	 jrSS
 jrSS jrSS jrSrg)ÚManageréV   a*  Manage the parallelism and checker instances for each plugin and file.

This class will be responsible for the following:

- Determining the parallelism of Flake8, e.g.:

  * Do we use :mod:`multiprocessing` or is it unavailable?

  * Do we automatically decide on the number of jobs to use or did the
    user provide that?

- Falling back to a serial way of processing files if we run into an
  OSError related to :mod:`multiprocessing`

- Organizing the results of each checker so we can group the output
  together and make our output deterministic.
c                ó  • Xl         UR                  U l        X l        U R                  5       U l        SSSSS.U l        / U R                  R                  QU R                  R                  Q7U l        X0l        / U l	        g)z Initialize our Manager instance.r   )Úfilesúlogical linesúphysical linesÚtokensN)
Ústyle_guider   r   Ú
_job_countÚjobsÚ
statisticsÚexcludeÚextend_excluder#   Úresults)Úselfr5   r   r#   s       r   Ú__init__ÚManager.__init__i   ss   € ð 'ÔØ"×*Ñ*ˆŒØŒØ—O‘OÓ%ˆŒ	àØØØñ	
ˆŒð M˜Ÿ™×-Ñ-ÐL°·±×0KÑ0KÑLˆŒØŒ	ØBDˆ�r,   c                óä   • U R                    H6  u    p[        R                   H  nU R                  U==   X#   -  ss'   M     M8     U R                  S==   [	        U R
                  5      -  ss'   g )Nr1   )r;   r
   ÚSTATISTIC_NAMESr8   ÚlenÚ	filenames)r<   Ú_r8   Ú	statistics       r   Ú_process_statisticsÚManager._process_statistics~   s[   € Ø $§¤ÑˆAˆqÜ%×5Ô5�	Ø—‘ 	Ó*¨jÑ.CÑCÕ*ó 6ñ !-ð 	�‰˜Ó ¤C¨¯©Ó$7Ñ7Ô r,   c                ó>  • [         R                  " U R                  R                  5      (       a  [        R                  S5        gU R                  R                  nUR                  (       a   [        R                  " 5       $ UR                  $ ! [         a     gf = f)Nz]The --jobs option is not compatible with supplying input using - . Ignoring --jobs arguments.r   )r   Úis_using_stdinr   rB   ÚLOGÚwarningr7   Úis_autoÚmultiprocessingÚ	cpu_countÚNotImplementedErrorÚn_jobs)r<   r7   s     r   r6   ÚManager._job_count„   s�   € ô ×Ò §¡× 6Ñ 6×7Ñ7Ü�K‰Kð=ôð à�|‰|× Ñ ˆð �<�<ðÜ&×0Ò0Ó2Ð2ð �{‰{Ðøô 'ó Ùðús   Á.B Â
BÂBc                óh   • U R                   nSnU H  u  pVpxn	XCR                  UUUUUU	S9-  nM     U$ )Nr   )Úcoder'   Úline_numberÚcolumn_numberÚtextÚphysical_line)r5   Úhandle_error)
r<   r'   r;   r5   Úreported_results_countÚ
error_coderS   ÚcolumnrU   rV   s
             r   Ú_handle_resultsÚManager._handle_results¢   s[   € Ø×&Ñ&ˆØ!"ÐÛDKÑ@ˆJ V°=Ø"×&>Ñ&>ØØ!Ø'Ø$ØØ+ð '?ð 'ñ Ò"ñ ELð &Ð%r,   c                óˆ  • S=pU R                   R                  [        R                  " S5      S9  U R                    Ho  u  p4nUR                  [        R                  " SS5      S9  U R                  R                  U5         XR                  X45      -  nSSS5        U[        U5      -  nMq     X!4$ ! , (       d  f       N#= f)zàReport all of the errors found in the managed file checkers.

This iterates over each of the checkers and reports the errors sorted
by line number.

:returns:
    A tuple of the total results found and the results reported.
r   )Úkeyé   é   N)r;   ÚsortÚoperatorÚ
itemgetterr5   Úprocessing_filer[   rA   )r<   Úresults_reportedÚresults_foundr'   r;   rC   s         r   ÚreportÚManager.report°   sª   € ð ,-Ð,ÐØ�‰×Ñœh×1Ò1°!Ó4ÐÑ5Ø$(§L¤LÑ ˆH˜qØ�L‰LœX×0Ò0°°AÓ6ˆLÑ7Ø×!Ñ!×1Ñ1°(Õ;Ø ×$8Ñ$8¸Ó$KÑKÐ ÷ <àœS ›\Ñ)ŠMñ	 %1ð
 Ð0Ð0÷ <Õ;ús   ÂB3Â3
C	c                ó0  • [        U R                  U R                  5         [        U R                  U R
                  5      nSSS5        Wc  U R                  5         gSn [        UR                  [        U R                  5      5      U l        UR                  5         UR                  5         SnU(       d!  UR                  5         UR                  5         gg! , (       d  f       Nž= f! U(       d!  UR                  5         UR                  5         f f = f)zRun the checkers in parallel.NFT)r   r   r   Ú_try_initialize_processpoolr7   r#   Ú
run_serialÚlistÚimap_unorderedr+   rB   r;   ÚcloseÚjoinÚ	terminate)r<   ÚpoolÚpool_closeds      r   Úrun_parallelÚManager.run_parallelÂ   sÁ   € ä˜Ÿ™ t§|¡|Õ4Ü.¨t¯y©y¸$¿)¹)ÓDˆD÷ 5ð ‰<Ø�O‰OÔØàˆð	Ü × 3Ñ 3´G¸T¿^¹^Ó LÓMˆDŒLØ�J‰JŒLØ�I‰IŒKØˆKæØ—‘Ô Ø—	‘	•ð ÷ 5Õ4ûö Ø—‘Ô Ø—	‘	•ð ús   ¡!CÁ!AC+ Ã
C(Ã+*Dc           	     ó¦   • U R                    Vs/ sH0  n[        UU R                  U R                  S9R	                  5       PM2     snU l        gs  snf )zRun the checkers in serial.r&   N)rB   r(   r   r   r)   r;   )r<   r'   s     r   rk   ÚManager.run_serialÖ   sT   € ð !ŸNšNó
ñ +�ô Ø!ØŸ™ØŸ™ñ÷ ‰j‹lò	ñ
 +ñ
ˆ�ùò 
s   �6Ac                ó  •  U R                   S:”  a*  [        U R                  5      S:”  a  U R                  5         gU R	                  5         g! [
         a,    [        R                  S5        [        R                  " S5      ef = f)zûRun all the checkers.

This will intelligently decide whether to run the checks in parallel
or whether to run them in serial.

If running the checks in parallel causes a problem (e.g.,
:issue:`117`) this also implements fallback to serial processing.
r_   z"Flake8 was interrupted by the userzEarly quit while running checksN)
r7   rA   rB   rs   rk   ÚKeyboardInterruptrI   rJ   r   Ú	EarlyQuit©r<   s    r   ÚrunÚManager.runá   si   € ð	JØ�y‰y˜1‹}¤ T§^¡^Ó!4°qÓ!8Ø×!Ñ!Õ#à—‘Õ!øÜ ó 	JÜ�K‰KÐ<Ô=Ü×&Ò&Ð'HÓIÐIð	Jús   ‚9A ¼A Á6Bc           	     óî   • [         R                  S5        [        [        U R                  R
                  U R                  R                  U R                  R                  U R                  S95      U l        g)z}Start checking files.

:param paths:
    Path names to check. This is passed directly to
    :meth:`~Manager.make_checkers`.
zMaking checkers)ÚpathsÚstdin_display_nameÚfilename_patternsr9   N)	rI   ÚinfoÚtupler   r   rB   r   r'   r9   rz   s    r   ÚstartÚManager.startó   sS   € ô 	�‰Ð"Ô#ÜÜØ—l‘l×,Ñ,Ø#'§<¡<×#BÑ#BØ"&§,¡,×"7Ñ"7ØŸ™ñ	ó
ˆ�r,   c                ó$   • U R                  5         g)zStop checking files.N)rE   rz   s    r   ÚstopÚManager.stop  s   € à× Ñ Õ"r,   )	r#   r9   rB   r7   r   r   r;   r8   r5   N)r5   r   r   r   r#   úSequence[str]ÚreturnÚNone©r‰   rŠ   )r‰   Úint)r'   Ústrr;   ÚResultsr‰   rŒ   )r‰   útuple[int, int])Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r=   rE   r6   r[   rg   rs   rk   r{   rƒ   r†   Ú__static_attributes__© r,   r   r.   r.   V   se   † ñð$Eà&ðEð ðEð ð	Eð
 
ôEô*8ôô<&ô1ô$ô(	
ôJô$
÷"#r,   r.   c                  óÔ   • \ rS rSrSr        SS jrSS jrSS jr          SS jrSS jr	\
SS j5       rSS	 jrSS
 jrSS jrSS jrSS jrSS jr      SS jrSrg)r(   i	  z;Manage running checks for a file and aggregate the results.c               ó‚  • X0l         Xl        X l        / U l        SSSS.U l        U R                  5       U l        Xl        SU l        U R                  bl  U R                  R                  U l        U R                  R                  5       (       + U l        [        U R                  R                  5      U R                  S'   gg)zInitialize our file checker.r   )r4   r2   r3   FNr3   )r   r'   r   r;   r8   Ú_make_processorr   Údisplay_nameÚshould_processÚshould_ignore_filerA   Úlines)r<   r'   r   r   s       r   r=   ÚFileChecker.__init__  s£   € ð ŒØ ŒØŒØ "ˆŒàØØñ
ˆŒð
 ×-Ñ-Ó/ˆŒØ$ÔØ#ˆÔØ�>‰>Ñ%Ø $§¡× 7Ñ 7ˆDÔØ&*§n¡n×&GÑ&GÓ&IÔ"IˆDÔÜ03°D·N±N×4HÑ4HÓ0IˆD�O‰OÐ,Ò-ð &r,   c                ó    • SU R                    3$ )z)Provide helpful debugging representation.zFileChecker for r*   rz   s    r   Ú__repr__ÚFileChecker.__repr__%  s   € à! $§-¡- Ð1Ð1r,   c           	     óà   •  [         R                  " U R                  U R                  5      $ ! [         a6  nU R                  SSS[        U5      R                   SU 35         S nAg S nAff = f)NÚE902r   ú: )r   ÚFileProcessorr'   r   ÚOSErrorrg   Útyper�   )r<   Úes     r   r™   ÚFileChecker._make_processor)  s_   € ð
	Ü×*Ò*¨4¯=©=¸$¿,¹,ÓGÐGøÜó 	ð �K‰K˜  1¬¨a«×)9Ñ)9Ð(:¸"¸Q¸CÐ&@ÔAÜûð	ús   ‚*- ­
A-·,A(Á(A-c                óè   • Uc  UR                  SS5      u  p[        U S5      (       a)  U R                  b  U R                  R                  U5      nOSnU R                  R                  XX4U45        U$ )z2Report an error by storing it in the results list.NÚ r_   r   )ÚsplitÚhasattrr   Únoqa_line_forr;   Úappend)r<   rY   rS   rZ   rU   Úlines         r   rg   ÚFileChecker.report6  sm   € ð ÑØ#Ÿz™z¨#¨qÓ1ÑˆJô �4˜×%Ñ%¨$¯.©.Ñ*DØ—>‘>×/Ñ/°Ó<‰DàˆDà�‰×Ñ˜Z°fÀDÐIÔJØÐr,   c                óÎ  • U R                   c   U R                  5       e U R                   R                  UR                  U5      n UR                  " S0 UDUD6$ ! [         a$  n[
        R                  " UR                  US9eSnAff = f! [         aN  n[        R                  SUR                  SS9  [
        R                  " U R                  UR                  US9eSnAff = f)z!Run the check in a single plugin.N)Úplugin_nameÚ	exceptionz(Plugin %s raised an unexpected exceptionT)Úexc_info)r'   r³   r´   r–   )r   r'   Úkeyword_arguments_forÚ
parametersÚAttributeErrorr   Ú PluginRequestedUnknownParametersrš   ÚobjÚ	ExceptionrI   ÚcriticalÚPluginExecutionFailed)r<   ÚpluginÚ	argumentsÚparamsÚaeÚall_excs         r   Ú	run_checkÚFileChecker.run_checkK  sä   € à�~‰~Ñ)Ð8¨4¯=©=Ó8Ð)ð	Ø—^‘^×9Ñ9Ø×!Ñ! 9óˆFð	Ø—:’:Ñ4 	Ð4¨VÑ4Ð4øô ó 	Ü×=Ò=Ø"×/Ñ/¸2ñð ûð	ûô ó 
	Ü�L‰LØ:Ø×#Ñ#Øð ñ ô
 ×2Ò2ØŸ™Ø"×/Ñ/Ø!ñð ûð
	ús0    &A ÁB Á
B	Á%BÂB	Â
C$ÂA	CÃC$c                ó¸  • [        U R                  5      S:”  aG  U R                  S   (       a3  [        U R                  S   5      S:”  a  U R                  S   nUSS u  p#On[        U [        R                  5      (       aI  [        U R                  5      S:X  a0  [        U R                  S   5      S:X  a  SnU R                  S   u  p#OSnSu  p#US:”  a„  U(       a}  [        U [
        5      (       ah  [        U5      S:X  aY  SnSnUS   nUbE  UR                  S5      R                  S5      n[        U5      S-
  nUS   n[        U5      n	X9:”  a  U	nX%-  nX4-  nX#4$ )	Nr_   r`   é   r–   )r_   r   r   é   Ú
)rA   ÚargsÚ
isinstanceÚtokenizeÚ
TokenErrorÚSyntaxErrorÚrstripr¬   )
r´   ÚtokenÚrowrZ   Úcolumn_offsetÚ
row_offsetrV   r�   Úlogical_lineÚlogical_line_lengths
             r   Ú_extract_syntax_informationÚ'FileChecker._extract_syntax_informationd  sU  € ô �	—‘Ó !Ó#Ø—‘˜q×!Ü�I—N‘N 1Ñ%Ó&¨Ó*à—N‘N 1Ñ%ˆEØ  !˜*‰KˆC�ä�y¤(×"5Ñ"5×6Ñ6Ü�I—N‘NÓ# qÓ(Ü�I—N‘N 1Ñ%Ó&¨!Ó+àˆEØ#Ÿ.™.¨Ñ+‰KˆC�àˆEØ ‰KˆCð �Q‹JÞÜ˜9¤k×2Ñ2Ü�E“
˜a“ð
 ˆMØˆJð " !™HˆMð
 Ñ(ð
 &×,Ñ,¨TÓ2×8Ñ8¸Ó>�Ü  ›Z¨!™^�
Ø$ Q™x�Ü&)¨,Ó&7Ð#ØÓ/Ø0�FØÑˆCØÑ#ˆFØˆ{Ðr,   c           	     óN  • U R                   c   U R                  5       eU R                   R                  5       nU R                  R                   HA  nU R                  X!S9n UR                  5       nU H  u  pVpxU R                  SUUUS9  M     MC     g! [         a    Un N1f = f)z1Run all checks expecting an abstract syntax tree.N)Útree©rY   rS   rZ   rU   )	r   r'   Ú	build_astr   rØ   rÃ   r{   r¸   rg   )	r<   Úastr¾   ÚcheckerÚrunnerrS   ÚoffsetrU   rC   s	            r   Úrun_ast_checksÚFileChecker.run_ast_checksŸ  s¥   € à�~‰~Ñ)Ð8¨4¯=©=Ó8Ð)Ø�n‰n×&Ñ&Ó(ˆà—l‘l×'Ô'ˆFØ—n‘n V�nÐ6ˆGð!Ø Ÿ™›�ó 17Ñ,� TØ—‘Ø#Ø +Ø!Øð	 ó ó 17ò (øô "ó !Ø ’ð!ús   Á"BÂB$Â#B$c           	     ó\  • U R                   c   eU R                   R                  5       u  pnU(       d  gU R                   R                  U5        [        R	                  SUR                  5       5        U R                  R                   H…  nU R                   R                  U5        U R                  XBS9=(       d    SnU HI  u  pg[        Xc5      u  p‰X‰s=:X  a  S:X  a  O  O[        R                  SU5        U R                  SUU	US9  MK     M‡     U R                   R                  5         g)z(Run all checks expecting a logical line.NzLogical line: "%s")rÓ   r–   r   z#position of error out of bounds: %srÙ   )r   Úbuild_logical_lineÚupdate_staterI   ÚdebugrÎ   r   rÓ   Úupdate_checker_state_forrÃ   Úfind_offsetrJ   rg   Únext_logical_line)
r<   ÚcommentsrÓ   Úmappingr¾   r;   rÞ   rU   rS   rÑ   s
             r   Úrun_logical_checksÚFileChecker.run_logical_checks´  sö   € à�~‰~Ñ)Ð)Ð)Ø*.¯.©.×*KÑ*KÓ*MÑ'ˆ ÞØØ�‰×#Ñ# GÔ,ä�	‰	Ð&¨×(;Ñ(;Ó(=Ô>à—l‘l×/Ô/ˆFØ�N‰N×3Ñ3°FÔ;Ø—n‘n V�nÐG×MÈ2ˆGÛ '‘�Ü-8¸Ó-IÑ*�ØÕ4°1Ö4Ü—K‘KÐ EÀvÔNØ—‘Ø#Ø +Ø(Øð	 ó ó	 !(ñ 0ð 	�‰×(Ñ(Õ*r,   c           	     óŒ  • U R                   c   eU R                  R                   H…  nU R                   R                  U5        U R	                  X!S9nUc  M2  Sn US   n[        U[        5      (       a  U4nU H-  nUu  pFU R                  SU R                   R                  UUS9  M/     M‡     g! [
        [        4 a     Nbf = f)z_Run all checks for a given physical line.

A single physical check may return multiple errors.
N)rV   r   rÙ   )r   r   rV   rå   rÃ   Ú
IndexErrorÚ	TypeErrorrÊ   rŒ   rg   rS   )r<   rV   r¾   ÚresultrÑ   Úresult_singlerU   s          r   Úrun_physical_checksÚFileChecker.run_physical_checksÎ  sË   € ð
 �~‰~Ñ)Ð)Ð)Ø—l‘l×0Ô0ˆFØ�N‰N×3Ñ3°FÔ;Ø—^‘^ F�^ÐHˆFàÓ!à $�ðØ$*¨1¡I�Mô ˜m¬S×1Ñ1à$˜Y�Fã%+�MØ*7Ñ'�MØ—K‘KØ#'Ø$(§N¡N×$>Ñ$>Ø,Ø!ð	  ó ó &,ò! 1øô #¤IÐ.ó Ùðús   ÁB0Â0CÃCc                ó  • U R                   c   eSnU R                  nU R                   nSnUR                  5        HŠ  nUS==   S-  ss'   U R                  XT5        USS u  pgU[        R
                  :X  a  [         R                  " X5      nO2US:X  a,  [         R                  " U5      (       a  U R                  U5        US   nMŒ     UR                  (       a/  U R                  UR                  S   5        U R                  5         gg)	z‚Process tokens and trigger checks.

Instead of using this directly, you should use
:meth:`flake8.checker.FileChecker.run_checks`.
Nr   Ú r4   r_   r`   rÇ   éÿÿÿÿ)r   r8   Úgenerate_tokensÚcheck_physical_eolrË   ÚOPÚcount_parenthesesÚtoken_is_newlineÚhandle_newliner4   rñ   r�   rê   )r<   Úparensr8   Úfile_processorÚprev_physicalrÏ   Ú
token_typerU   s           r   Úprocess_tokensÚFileChecker.process_tokensí  sï   € ð �~‰~Ñ)Ð)Ð)ØˆØ—_‘_ˆ
ØŸ™ˆØˆØ#×3Ñ3Ö5ˆEØ�xÓ  AÑ%Ó Ø×#Ñ# EÔ9Ø$ Q q˜zÑˆJØœXŸ[™[Ó(Ü"×4Ò4°VÓB‘Ø˜1“Ü×-Ò-¨e×4Ñ4Ø×'Ñ'¨
Ô3Ø! !™HŠMñ 6ð × × à×$Ñ$ ^×%9Ñ%9¸"Ñ%=Ô>Ø×#Ñ#Õ%ð !r,   c           
     óÊ  • U R                   b  U R                  (       d#  U R                  U R                  U R                  4$  U R                  5         U R                  5         U R                   R                  S   nXPR                  S'   U R                  U R                  U R                  4$ ! [        [        R                  4 a›  n[        U[        R                  5      (       a  SOSnU R                  U5      u  p4U R                  X#U[        U5      R                   SUR                  S    35        U R                  U R                  U R                  4s SnA$ SnAff = f)zRun checks against the file.Nr£   ÚE999r¤   r   r2   )r   r›   rš   r;   r8   rß   r   rÍ   rË   rÌ   rÊ   rÕ   rg   r§   r�   rÉ   )r<   r¨   rR   rÐ   rZ   Úlogical_liness         r   r)   ÚFileChecker.run_checks  s  € à�>‰>Ñ!¨×)<×)<Ø×$Ñ$ d§l¡l°D·O±OÐCÐCð	DØ×ÑÔ!Ø×ÑÔ!ð Ÿ™×1Ñ1°/ÑBˆØ+8�‰˜Ñ(Ø× Ñ  $§,¡,°·±Ð?Ð?øô œX×0Ñ0Ð1ó 	DÜ'¨¬8×+>Ñ+>×?Ñ?‘6ÀVˆDØ×:Ñ:¸1Ó=‰KˆCØ�K‰K˜ 6¬d°1«g×.>Ñ.>Ð-?¸rÀ!Ç&Á&ÈÁ)ÀÐ+MÔNØ×$Ñ$ d§l¡l°D·O±OÐCÕCûð		Dús   Á B- Â-E"ÃBEÅE"ÅE"c                óp  • U R                   c   eU[        R                  :X  a+  U R                  5         U R                   R	                  5         g[        U R                   R                  5      S:X  a5  U R                   R                  5         U R                   R                  5         gU R                  5         g)z3Handle the logic when encountering a newline token.Nr_   )	r   rË   ÚNEWLINErê   Úreset_blank_beforerA   r4   Úvisited_new_blank_lineÚdelete_first_token)r<   rÿ   s     r   rû   ÚFileChecker.handle_newline  s   € à�~‰~Ñ)Ð)Ð)Øœ×)Ñ)Ó)Ø×#Ñ#Ô%Ø�N‰N×-Ñ-Õ/Ü�—‘×&Ñ&Ó'¨1Ó,à�N‰N×1Ñ1Ô3Ø�N‰N×-Ñ-Õ/à×#Ñ#Õ%r,   c                óì  • U R                   c   eUR                  [        :X  a)  U R                   R                  UR                  S   5        g[         R
                  " U5      (       a>  UR                  S:X  a  U R                  U5        gU R                  UR                  5        g[         R                  " U5      (       a4  U R                   R                  U5       H  nU R                  U5        M     gg)z@Run physical checks if and only if it is at the end of the line.Nr   rô   )
r   r§   r   Úfstring_startrƒ   Úis_eol_tokenr°   rñ   Úis_multiline_stringÚmultiline_string)r<   rÏ   rþ   r°   s       r   r÷   ÚFileChecker.check_physical_eol'  s¸   € ð �~‰~Ñ)Ð)Ð)Ø�:‰:œÓ&Ø�N‰N×(Ñ(¨¯©°Q©Õ8ä×#Ò# E×*Ñ*ð �z‰z˜RÓØ×(Ñ(¨Õ7à×(Ñ(¨¯©Õ4Ü×*Ò*¨5×1Ñ1ð Ÿ™×7Ñ7¸Ö>�Ø×(Ñ(¨Ö.ò ?ð 2r,   )rš   r'   r   r   r   r;   r›   r8   N)r'   r�   r   r   r   r   r‰   rŠ   )r‰   r�   )r‰   zprocessor.FileProcessor | None)
rY   z
str | NonerS   rŒ   rZ   rŒ   rU   r�   r‰   r�   )r¾   r   r¿   r   r‰   r   )r´   r»   r‰   r�   r‹   )rV   r�   r‰   rŠ   )r‰   ú#tuple[str, Results, dict[str, int]])rÿ   rŒ   r‰   rŠ   )rÏ   ztokenize.TokenInforþ   r�   r‰   rŠ   )r�   r‘   r’   r“   r”   r=   r    r™   rg   rÃ   ÚstaticmethodrÕ   rß   rê   rñ   r   r)   rû   r÷   r•   r–   r,   r   r(   r(   	  sÌ   † ÙEðJð ðJð ð	Jð
 $ðJð 
ôJô22ôðàðð ðð ð	ð
 ðð 
ôô*ð2 ó8ó ð8ôtô*+ô4ô>&ô6@ô$&ð/Ø'ð/Ø8;ð/à	÷/r,   r(   c                ó¨   •  [         R                  " U [        U4S9$ ! [         a  nUR                  [
        ;  a  e  SnAgSnAf[         a     gf = f)z@Return a new process pool instance if we are able to create one.)ÚinitargsN)rL   ÚPoolr$   r¦   ÚerrnoÚSERIAL_RETRY_ERRNOSÚImportError)Ú	job_countr#   Úerrs      r   rj   rj   G  sX   € ð
Ü×#Ò# I¬xÀ4À'ÑJÐJøÜó Ø�9‰9Ô/Ó/Øó 0ð
 ûô ó Øàðús   ‚ �
A§AÁAÁAc                óŽ   • [        U [        5      (       a  U $ U H  nUS   nX::  d  M  US   n  O   SnS=pUS   US   U -   U-
  4$ )z*Find the offset tuple for a single offset.r   r_   )r   r   )rÊ   r‚   )rÞ   ré   rÏ   Útoken_offsetÚpositions        r   ræ   ræ   W  sg   € ô �&œ%× Ñ ØˆãˆØ˜Q‘xˆØÕ!Ø˜Q‘xˆHÙñ	 ð ˆØ !Ð!ˆØ�Q‰K˜ !™ vÑ-°Ñ<Ð=Ð=r,   )r   r   r   r   r‰   zGenerator[None, None, None])r#   rˆ   r‰   rŠ   )r'   r�   r‰   r  )r  rŒ   r#   rˆ   r‰   z multiprocessing.pool.Pool | None)rÞ   rŒ   ré   zprocessor._LogicalMappingr‰   r�   )4r”   Ú
__future__r   ÚargparseÚ
contextlibr  ÚloggingÚmultiprocessing.poolrL   rb   r   rË   Útypingr   r   r   r   r   r	   Úflake8r
   r   r   r   Úflake8._compatr   Úflake8.discover_filesr   Úflake8.options.parse_argsr   Úflake8.plugins.finderr   r   Úflake8.style_guider   r�   rŒ   rŽ   Ú	getLoggerr�   rI   ÚENOSPCr  Ú__annotations__Úcontextmanagerr   r$   r+   r.   r(   rj   ræ   r–   r,   r   Ú<module>r/     s2  ðÚ *Ý "ã Û Û Û Û Û Û Û Ý Ý Ý Ý Ý Ý å Ý Ý Ý Ý (Ý .Ý 0Ý *Ý .Ý 0à
ˆu�S˜#˜s C¨°#©Ð6Ñ7Ñ
8€à×Ò˜Ó!€ð 
‡L�LðÐ ð Ó ØÓ ð ×Ñð	%Øð	%Ø 2ð	%à ó	%ó ð	%ô=ô÷p#ñ p#÷f{/ñ {/ð|	Øðà
ðð &ôð >Øð>Ø3ð>àõ>r,   