§
    øyIfJX  ã                  ó  — U 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 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 ddlm Z  ddl!m"Z" eee#e$e$e#ee#         f                  Z% ej&        e'¦  «        Z(ej)        hZ*de+d<   de+d<   ej,        d2d„¦   «         Z-d3d „Z.d4d$„Z/ G d%„ d&¦  «        Z0 G d'„ d(¦  «        Z1d5d,„Z2d6d1„Z3dS )7z$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_optionsÚpluginsÚoptionsÚreturnúGenerator[None, None, None]c              #  ó0   K  — | |ca a	 d V — b bd S # b bw xY w©N)r   r   )r   r   s     úB/var/www/piapp/venv/lib/python3.11/site-packages/flake8/checker.pyÚ_mp_preforkr   5   s<   è è € ð  '¨Ð€K�ð%Øˆˆˆà˜˜˜øˆK˜Ð$Ð$Ð$Ð$s   ‰ ‘ÚargvúSequence[str]ÚNonec                óÐ   — t          j         t           j        t           j        ¦  «         	 t          t          f d S # t
          $ r  t          | ¦  «        \  }}|j        |caaY d S w xY wr   )ÚsignalÚSIGINTÚSIG_IGNr   r   Ú	NameErrorr   Úcheckers)r   r   r   s      r   Ú_mp_initr(   B   sr   € õ „M•&”-¥¤Ñ0Ô0Ð0ð=å•[Ð Ð Ð Ð øÝð =ð =ð =Ý% dÑ+Ô+Ñˆ�Ø#*Ô#3°WÐ ˆ�[�[�[�[ð=øøøs   «; »&A%Á$A%ÚfilenameÚstrú#tuple[str, Results, dict[str, int]]c                ó^   — t          | t          t          ¬¦  «                             ¦   «         S )N©r)   r   r   )ÚFileCheckerr   r   Ú
run_checks©r)   s    r   Ú_mp_runr1   P   s)   € ÝØ¥;½ðñ ô ç‚j�l„lðó    c                  ób   — e Zd 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S ) ÚManageraR  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.
    Ústyle_guider   r   r   r   r    r   r!   c                óà   — || _         |j        | _        || _        |                      ¦   «         | _        dddddœ| _        g | j        j        ¢| j        j        ¢R | _        || _        g | _	        dS )z Initialize our Manager instance.r   )Úfilesúlogical linesúphysical linesÚtokensN)
r5   r   r   Ú
_job_countÚjobsÚ
statisticsÚexcludeÚextend_excluder   Úresults)Úselfr5   r   r   s       r   Ú__init__zManager.__init__i   s{   € ð 'ˆÔØ"Ô*ˆŒØˆŒØ—O’OÑ%Ô%ˆŒ	àØØØð	
ð 
ˆŒð M˜œÔ-ÐL°´Ô0KÐLÐLˆŒØˆŒ	ØBDˆŒˆˆr2   c                óÄ   — | j         D ]0\  }}}t          j        D ]}| j        |xx         ||         z  cc<   ŒŒ1| j        dxx         t	          | j        ¦  «        z  cc<   d S )Nr7   )r@   r
   ÚSTATISTIC_NAMESr=   ÚlenÚ	filenames)rA   Ú_r=   Ú	statistics       r   Ú_process_statisticszManager._process_statistics~   sŠ   € Ø $¤ð 	Dð 	DÑˆAˆq�*Ý%Ô5ð Dð D�	Ø” 	Ð*Ð*Ô*¨j¸Ô.CÑCÐ*Ð*Ñ*Ð*ðDàŒ˜Ð Ð Ô ¥C¨¬Ñ$7Ô$7Ñ7Ð Ð Ñ Ð Ð r2   Úintc                óô   — t          j        | j        j        ¦  «        rt                               d¦  «         dS | j        j        }|j        r%	 t          j	        ¦   «         S # t          $ r Y dS w xY w|j        S )Nz]The --jobs option is not compatible with supplying input using - . Ignoring --jobs arguments.r   )r   Úis_using_stdinr   rF   ÚLOGÚwarningr<   Úis_autoÚmultiprocessingÚ	cpu_countÚNotImplementedErrorÚn_jobs)rA   r<   s     r   r;   zManager._job_count„   s”   € õ Ô ¤Ô 6Ñ7Ô7ð 	Ý�KŠKð=ñô ð ð �1àŒ|Ô ˆð Œ<ð 	ðÝ&Ô0Ñ2Ô2Ð2øÝ&ð ð ð Ø�q�qðøøøð
 Œ{Ðs   ÁA" Á"
A0Á/A0r)   r*   r@   ÚResultsc           
     ój   — | j         }d}|D ]&\  }}}}}	||                     ||||||	¬¦  «        z  }Œ'|S )Nr   )Úcoder)   Úline_numberÚcolumn_numberÚtextÚphysical_line)r5   Úhandle_error)
rA   r)   r@   r5   Úreported_results_countÚ
error_coderW   ÚcolumnrY   rZ   s
             r   Ú_handle_resultszManager._handle_results¢   si   € ØÔ&ˆØ!"ÐØDKð 	ð 	Ñ@ˆJ˜ V¨T°=Ø" k×&>Ò&>ØØ!Ø'Ø$ØØ+ð '?ñ 'ô 'ñ Ð"Ð"ð &Ð%r2   útuple[int, int]c                ó”  — dx}}| j                              t          j        d¦  «        ¬¦  «         | j         D ]Œ\  }}}|                     t          j        dd¦  «        ¬¦  «         | j                             |¦  «        5  ||                      ||¦  «        z  }ddd¦  «         n# 1 swxY w Y   |t          |¦  «        z  }Œ�||fS )a  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_   rE   )rA   Úresults_reportedÚresults_foundr)   r@   rG   s         r   ÚreportzManager.report°   s"  € ð ,-Ð,Ð˜=ØŒ×Ò�hÔ1°!Ñ4Ô4ÐÑ5Ô5Ð5Ø$(¤Lð 	*ð 	*Ñ ˆH�g˜qØ�LŠL�XÔ0°°AÑ6Ô6ˆLÑ7Ô7Ð7ØÔ!×1Ò1°(Ñ;Ô;ð Lð LØ  D×$8Ò$8¸À7Ñ$KÔ$KÑKÐ ðLð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Là�S ™\œ\Ñ)ˆMˆMØÐ/Ð0Ð0s   ÂB(Â(B,	Â/B,	c                óD  — t          | j        | j        ¦  «        5  t          | j        | j        ¦  «        }ddd¦  «         n# 1 swxY w Y   |€|                      ¦   «          dS d}	 t          |                     t          | j
        ¦  «        ¦  «        | _        |                     ¦   «          |                     ¦   «          d}|s*|                     ¦   «          |                     ¦   «          dS dS # |s)|                     ¦   «          |                     ¦   «          w w xY w)zRun the checkers in parallel.NFT)r   r   r   Ú_try_initialize_processpoolr<   r   Ú
run_serialÚlistÚimap_unorderedr1   rF   r@   ÚcloseÚjoinÚ	terminate)rA   ÚpoolÚpool_closeds      r   Úrun_parallelzManager.run_parallelÂ   sW  € å˜œ t¤|Ñ4Ô4ð 	Eð 	EÝ.¨t¬y¸$¼)ÑDÔDˆDð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eð ˆ<Ø�OŠOÑÔÐØˆFàˆð	Ý × 3Ò 3µG¸T¼^Ñ LÔ LÑMÔMˆDŒLØ�JŠJ‰LŒLˆLØ�IŠI‰KŒKˆKØˆKàð Ø—’Ñ Ô Ð Ø—	’	‘”���ðð ø�;ð Ø—’Ñ Ô Ð Ø—	’	‘”��ðøøøs   ›AÁAÁ	AÁ(AC2 Ã2-Dc                ó8   ‡ — ˆ fd„‰ j         D ¦   «         ‰ _        dS )zRun the checkers in serial.c                ól   •— g | ]0}t          |‰j        ‰j        ¬ ¦  «                             ¦   «         ‘Œ1S )r-   )r.   r   r   r/   )Ú.0r)   rA   s     €r   ú
<listcomp>z&Manager.run_serial.<locals>.<listcomp>Ø   sR   ø€ ð 
ð 
ð 
ð õ Ø!ØœØœðñ ô ÷ Šj‰lŒlð
ð 
ð 
r2   N)rF   r@   ©rA   s   `r   rn   zManager.run_serialÖ   s5   ø€ ð
ð 
ð 
ð 
ð !œNð
ñ 
ô 
ˆŒˆˆr2   c                ó  — 	 | j         dk    r.t          | j        ¦  «        dk    r|                      ¦   «          dS |                      ¦   «          dS # t
          $ r/ t                               d¦  «         t          j	        d¦  «        ‚w xY w)a#  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.
        rc   z"Flake8 was interrupted by the userzEarly quit while running checksN)
r<   rE   rF   rv   rn   ÚKeyboardInterruptrM   rN   r   Ú	EarlyQuitr{   s    r   ÚrunzManager.runá   s™   € ð	JØŒy˜1Š}ˆ}¥ T¤^Ñ!4Ô!4°qÒ!8Ð!8Ø×!Ò!Ñ#Ô#Ð#Ð#Ð#à—’Ñ!Ô!Ð!Ð!Ð!øÝ ð 	Jð 	Jð 	JÝ�KŠKÐ<Ñ=Ô=Ð=ÝÔ&Ð'HÑIÔIÐIð	Jøøøs   ‚7A »A Á9B
c                óÊ   — t                                d¦  «         t          t          | j        j        | j        j        | j        j        | j        ¬¦  «        ¦  «        | _        dS )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_patternsr>   N)	rM   ÚinfoÚtupler   r   rF   r‚   r)   r>   r{   s    r   ÚstartzManager.startó   s[   € õ 	�ŠÐ"Ñ#Ô#Ð#ÝÝØ”lÔ,Ø#'¤<Ô#BØ"&¤,Ô"7Øœð	ñ ô ñ
ô 
ˆŒˆˆr2   c                ó.   — |                       ¦   «          dS )zStop checking files.N)rI   r{   s    r   ÚstopzManager.stop  s   € à× Ò Ñ"Ô"Ð"Ð"Ð"r2   N)r5   r   r   r   r   r    r   r!   ©r   r!   )r   rJ   )r)   r*   r@   rT   r   rJ   )r   r`   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rB   rI   r;   r_   rk   rv   rn   r   r†   rˆ   © r2   r   r4   r4   V   sî   € € € € € ðð ð$Eð Eð Eð Eð*8ð 8ð 8ð 8ðð ð ð ð<&ð &ð &ð &ð1ð 1ð 1ð 1ð$ð ð ð ð(	
ð 	
ð 	
ð 	
ðJð Jð Jð Jð$
ð 
ð 
ð 
ð"#ð #ð #ð #ð #ð #r2   r4   c                  óŠ   — e Zd ZdZd,d
„Zd-d„Zd.d„Zd/d„Zd0d„Ze	d1d„¦   «         Z
d2d„Zd2d„Zd3d!„Zd2d"„Zd4d$„Zd5d&„Zd6d*„Zd+S )7r.   z;Manage running checks for a file and aggregate the results.r)   r*   r   r   r   r   r   r!   c               óV  — || _         || _        || _        g | _        ddddœ| _        |                      ¦   «         | _        || _        d| _        | j        �S| j        j        | _        | j         	                    ¦   «          | _        t          | j        j        ¦  «        | j        d<   dS dS )zInitialize our file checker.r   )r:   r8   r9   FNr9   )r   r)   r   r@   r=   Ú_make_processorr   Údisplay_nameÚshould_processÚshould_ignore_filerE   Úlines)rA   r)   r   r   s       r   rB   zFileChecker.__init__  s²   € ð ˆŒØ ˆŒØˆŒØ "ˆŒàØØð
ð 
ˆŒð
 ×-Ò-Ñ/Ô/ˆŒØ$ˆÔØ#ˆÔØŒ>Ð%Ø $¤Ô 7ˆDÔØ&*¤n×&GÒ&GÑ&IÔ&IÐ"IˆDÔÝ03°D´NÔ4HÑ0IÔ0IˆDŒOÐ,Ñ-Ð-Ð-ð &Ð%r2   c                ó   — d| j         › �S )z)Provide helpful debugging representation.zFileChecker for r0   r{   s    r   Ú__repr__zFileChecker.__repr__%  s   € à1 $¤-Ð1Ð1Ð1r2   úprocessor.FileProcessor | Nonec           	     óÐ   — 	 t          j        | j        | j        ¦  «        S # t          $ r:}|                      dddt          |¦  «        j        › d|› �¦  «         Y d }~d S d }~ww xY w)NÚE902r   ú: )r   ÚFileProcessorr)   r   ÚOSErrorrk   ÚtyperŠ   )rA   Úes     r   r‘   zFileChecker._make_processor)  s{   € ð
	ÝÔ*¨4¬=¸$¼,ÑGÔGÐGøÝð 	ð 	ð 	ð �KŠK˜  1­¨a©¬Ô)9Ð&@Ð&@¸QÐ&@Ð&@ÑAÔAÐAØ�4�4�4�4�4øøøøð	øøøs   ‚! ¡
A%«/A Á A%r]   ú
str | NonerW   rJ   r^   rY   c                óâ   — |€|                      dd¦  «        \  }}t          | d¦  «        r"| j        �| j                             |¦  «        }nd}| j                             |||||f¦  «         |S )z2Report an error by storing it in the results list.Nú rc   r   )ÚsplitÚhasattrr   Únoqa_line_forr@   Úappend)rA   r]   rW   r^   rY   Úlines         r   rk   zFileChecker.report6  s€   € ð ÐØ#Ÿzšz¨#¨qÑ1Ô1ÑˆJ˜õ �4˜Ñ%Ô%ð 	¨$¬.Ð*DØ”>×/Ò/°Ñ<Ô<ˆDˆDàˆDàŒ×Ò˜Z¨°f¸dÀDÐIÑJÔJÐJØÐr2   Úpluginr   Ú	argumentsr   c                ó–  — | j         €J | j        ¦   «         ‚	 | j                              |j        |¦  «        }n-# t          $ r }t          j        |j        |¬¦  «        ‚d}~ww xY w	  |j        di |¤|¤ŽS # t          $ rH}t                               d|j        d¬¦  «         t          j        | j        |j        |¬¦  «        ‚d}~ww xY w)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Ú	ExceptionrM   ÚcriticalÚPluginExecutionFailed)rA   r¨   r©   ÚparamsÚaeÚall_excs         r   Ú	run_checkzFileChecker.run_checkK  s  € àŒ~Ð)Ð)¨4¬=Ñ)Ô)Ð)ð	Ø”^×9Ò9ØÔ! 9ñô ˆFˆFøõ ð 	ð 	ð 	ÝÔ=Ø"Ô/¸2ðñ ô ð øøøøð	øøøð	Ø�6”:Ð4Ð4 	Ð4¨VÐ4Ð4Ð4øÝð 
	ð 
	ð 
	Ý�LŠLØ:ØÔ#Øð ñ ô ð õ
 Ô2ØœØ"Ô/Ø!ðñ ô ð øøøøð
	øøøs.   ˜ 9 ¹
A#ÁAÁA#Á'A6 Á6
CÂ ACÃCr¬   r³   r`   c                óÜ  — t          | j        ¦  «        dk    rF| j        d         r9t          | j        d         ¦  «        dk    r| j        d         }|dd…         \  }}njt          | t          j        ¦  «        rIt          | j        ¦  «        dk    r1t          | j        d         ¦  «        dk    rd}| j        d         \  }}nd}d\  }}|dk    r›|r™t          | t
          ¦  «        r„t          |¦  «        dk    rqd}d}|d         }|�Y|                     d¦  «                             d¦  «        }t          |¦  «        dz
  }|d         }t          |¦  «        }	||	k    r|	}||z  }||z  }||fS )	Nrc   rd   é   rŽ   )rc   r   r   é   ú
)rE   ÚargsÚ
isinstanceÚtokenizeÚ
TokenErrorÚSyntaxErrorÚrstripr£   )
r¬   ÚtokenÚrowr^   Úcolumn_offsetÚ
row_offsetrZ   r•   Úlogical_lineÚlogical_line_lengths
             r   Ú_extract_syntax_informationz'FileChecker._extract_syntax_informationd  s—  € õ �	”ÑÔ !Ò#Ð#Ø”˜qÔ!ð $å�I”N 1Ô%Ñ&Ô&¨Ò*Ð*à”N 1Ô%ˆEØ  ! œ*‰KˆC��å�y¥(Ô"5Ñ6Ô6ð		!å�I”NÑ#Ô# qÒ(Ð(Ý�I”N 1Ô%Ñ&Ô&¨!Ò+Ð+àˆEØ#œ.¨Ô+‰KˆC��àˆEØ ‰KˆC�ð �QŠJˆJØð å˜9¥kÑ2Ô2ð õ �E‘
”
˜a’�ð
 ˆMØˆJð " !œHˆMð
 Ð(ð
 &×,Ò,¨TÑ2Ô2×8Ò8¸Ñ>Ô>�Ý  ™ZœZ¨!™^�
Ø$ Qœx�Ý&)¨,Ñ&7Ô&7Ð#ØÐ/Ò/Ð/Ø0�FØ�:ÑˆCØ�mÑ#ˆFØ�Fˆ{Ðr2   c                óF  — | j         €J | j        ¦   «         ‚| j                              ¦   «         }| j        j        D ]d}|                      ||¬¦  «        }	 |                     ¦   «         }n# t          $ r |}Y nw xY w|D ] \  }}}}|                      d|||¬¦  «         Œ!ŒedS )z1Run all checks expecting an abstract syntax tree.N)Útree©r]   rW   r^   rY   )	r   r)   Ú	build_astr   rÌ   r¹   r   r°   rk   )	rA   Úastr¨   ÚcheckerÚrunnerrW   ÚoffsetrY   rG   s	            r   Úrun_ast_checkszFileChecker.run_ast_checksŸ  sá   € àŒ~Ð)Ð)¨4¬=Ñ)Ô)Ð)ØŒn×&Ò&Ñ(Ô(ˆà”lÔ'ð 	ð 	ˆFØ—n’n V°#�nÑ6Ô6ˆGð!Ø Ÿš™œ��øÝ!ð !ð !ð !Ø ���ð!øøøà06ð ð Ñ,�˜V T¨1Ø—’Ø#Ø +Ø!Øð	 ñ ô ð ð ðð	ð 	s   ÁA+Á+A:Á9A:c                ó\  — | j         €J ‚| j                              ¦   «         \  }}}|sdS | j                              |¦  «         t                               d|                     ¦   «         ¦  «         | j        j        D ]”}| j                              |¦  «         |  	                    ||¬¦  «        pd}|D ]\\  }}t          ||¦  «        \  }}	||	cxk    rdk    rn nt                               d|¦  «         |                      d||	|¬¦  «         Œ]Œ•| j                              ¦   «          dS )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_staterM   ÚdebugrÃ   r   rÈ   Úupdate_checker_state_forr¹   Úfind_offsetrN   rk   Únext_logical_line)
rA   ÚcommentsrÈ   Úmappingr¨   r@   rÒ   rY   rW   rÆ   s
             r   Úrun_logical_checkszFileChecker.run_logical_checks´  s]  € àŒ~Ð)Ð)Ð)Ø*.¬.×*KÒ*KÑ*MÔ*MÑ'ˆ�, Øð 	ØˆFØŒ×#Ò# GÑ,Ô,Ð,å�	Š	Ð&¨×(;Ò(;Ñ(=Ô(=Ñ>Ô>Ð>à”lÔ/ð 	ð 	ˆFØŒN×3Ò3°FÑ;Ô;Ð;Ø—n’n V¸,�nÑGÔGÐMÈ2ˆGØ 'ð 	ð 	‘�˜Ý-8¸ÀÑ-IÔ-IÑ*�˜]Ø -Ð4Ð4Ò4Ð4°1Ò4Ð4Ð4Ð4Ð4Ý—K’KÐ EÀvÑNÔNÐNØ—’Ø#Ø +Ø(Øð	 ñ ô ð ð ð		ð 	Œ×(Ò(Ñ*Ô*Ð*Ð*Ð*r2   rZ   c                ól  — | j         €J ‚| j        j        D ]�}| j                              |¦  «         |                      ||¬¦  «        }|�hd}	 |d         }n# t
          t          f$ r Y nw xY wt          |t          ¦  «        r|f}|D ]*}|\  }}|  	                    d| j         j
        ||¬¦  «         Œ+ŒždS )zoRun all checks for a given physical line.

        A single physical check may return multiple errors.
        N)rZ   r   rÍ   )r   r   rZ   rØ   r¹   Ú
IndexErrorÚ	TypeErrorr¿   rJ   rk   rW   )rA   rZ   r¨   ÚresultrÆ   Úresult_singlerY   s          r   Úrun_physical_checkszFileChecker.run_physical_checksÎ  s  € ð
 Œ~Ð)Ð)Ð)Ø”lÔ0ð 	ð 	ˆFØŒN×3Ò3°FÑ;Ô;Ð;Ø—^’^ F¸-�^ÑHÔHˆFàÐ!à $�ðØ$*¨1¤I�M�MøÝ"¥IÐ.ð ð ð Ø�Dðøøøõ ˜m­SÑ1Ô1ð 'à$˜Y�Fà%+ð ð �MØ*7Ñ'�M 4Ø—K’KØ#'Ø$(¤NÔ$>Ø,Ø!ð	  ñ ô ð ð øð%	ð 	s   ÁAÁA+Á*A+c                ó  — | j         €J ‚d}| j        }| j         }d}|                     ¦   «         D ]’}|dxx         dz  cc<   |                      ||¦  «         |dd…         \  }}|t          j        k    rt          j        ||¦  «        }n/|dk    r)t          j        |¦  «        r|                      |¦  «         |d         }Œ“|j	        r6|  
                    |j        d         ¦  «         |                      ¦   «          dS dS )	zšProcess tokens and trigger checks.

        Instead of using this directly, you should use
        :meth:`flake8.checker.FileChecker.run_checks`.
        Nr   Ú r:   rc   rd   r¼   éÿÿÿÿ)r   r=   Úgenerate_tokensÚcheck_physical_eolrÀ   ÚOPÚcount_parenthesesÚtoken_is_newlineÚhandle_newliner:   rã   r•   rÝ   )rA   Úparensr=   Úfile_processorÚprev_physicalrÄ   Ú
token_typerY   s           r   Úprocess_tokenszFileChecker.process_tokensí  s.  € ð Œ~Ð)Ð)Ð)ØˆØ”_ˆ
ØœˆØˆØ#×3Ò3Ñ5Ô5ð 		%ð 		%ˆEØ�xÐ Ð Ô  AÑ%Ð Ð Ñ Ø×#Ò# E¨=Ñ9Ô9Ð9Ø$ Q q SœzÑˆJ˜Ø�Xœ[Ò(Ð(Ý"Ô4°V¸TÑBÔB��Ø˜1’�ÝÔ-¨eÑ4Ô4ð 4Ø×'Ò'¨
Ñ3Ô3Ð3Ø! !œHˆMˆMàÔ ð 	&à×$Ò$ ^Ô%9¸"Ô%=Ñ>Ô>Ð>Ø×#Ò#Ñ%Ô%Ð%Ð%Ð%ð	&ð 	&r2   r+   c           
     óH  — | j         �| j        s| j        | j        | j        fS 	 |                      ¦   «          |                      ¦   «          n§# t          t          j	        f$ rŽ}t          |t          j	        ¦  «        rdnd}|                      |¦  «        \  }}|                      |||t          |¦  «        j        › d|j        d         › �¦  «         | j        | j        | j        fcY d}~S d}~ww xY w| j         j        d         }|| j        d<   | j        | j        | j        fS )zRun checks against the file.Nrš   ÚE999r›   r   r8   )r   r“   r’   r@   r=   rÓ   rñ   rÂ   rÀ   rÁ   r¿   rÊ   rk   rž   rŠ   r¾   )rA   rŸ   rV   rÅ   r^   Úlogical_liness         r   r/   zFileChecker.run_checks  s9  € àŒ>Ð!¨Ô)<Ð!ØÔ$ d¤l°D´OÐCÐCð	DØ×ÒÑ!Ô!Ð!Ø×ÒÑ!Ô!Ð!Ð!øÝ�XÔ0Ð1ð 	Dð 	Dð 	DÝ'¨­8Ô+>Ñ?Ô?ÐK�6�6ÀVˆDØ×:Ò:¸1Ñ=Ô=‰KˆC�Ø�KŠK˜˜c 6­d°1©g¬gÔ.>Ð+MÐ+MÀ!Ä&ÈÄ)Ð+MÐ+MÑNÔNÐNØÔ$ d¤l°D´OÐCÐCÐCÐCÐCÐCÐCøøøøð		Døøøð œÔ1°/ÔBˆØ+8ˆŒ˜Ñ(ØÔ  $¤,°´Ð?Ð?s   ¤(A ÁC1Á#BC,Ã&C1Ã,C1rð   c                ó`  — | j         €J ‚|t          j        k    r/|                      ¦   «          | j                              ¦   «          dS t          | j         j        ¦  «        dk    r4| j                              ¦   «          | j                              ¦   «          dS |                      ¦   «          dS )z3Handle the logic when encountering a newline token.Nrc   )	r   rÀ   ÚNEWLINErÝ   Úreset_blank_beforerE   r:   Úvisited_new_blank_lineÚdelete_first_token)rA   rð   s     r   rì   zFileChecker.handle_newline  s¨   € àŒ~Ð)Ð)Ð)Ø�Ô)Ò)Ð)Ø×#Ò#Ñ%Ô%Ð%ØŒN×-Ò-Ñ/Ô/Ð/Ð/Ð/Ý�”Ô&Ñ'Ô'¨1Ò,Ð,àŒN×1Ò1Ñ3Ô3Ð3ØŒN×-Ò-Ñ/Ô/Ð/Ð/Ð/à×#Ò#Ñ%Ô%Ð%Ð%Ð%r2   rÄ   útokenize.TokenInforï   c                óº  — | j         €J ‚|j        t          k    r'| j                              |j        d         ¦  «         dS t          j        |¦  «        r>|j        dk    r|                      |¦  «         dS |                      |j        ¦  «         dS t          j        |¦  «        r2| j          	                    |¦  «        D ]}|                      |¦  «         ŒdS dS )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)rA   rÄ   rï   r§   s       r   rè   zFileChecker.check_physical_eol'  sø   € ð Œ~Ð)Ð)Ð)ØŒ:�Ò&Ð&ØŒN×(Ò(¨¬°Q¬Ñ8Ô8Ð8Ð8Ð8åÔ# EÑ*Ô*ð 	/ð Œz˜RÒÐØ×(Ò(¨Ñ7Ô7Ð7Ð7Ð7à×(Ò(¨¬Ñ4Ô4Ð4Ð4Ð4ÝÔ*¨5Ñ1Ô1ð 	/ð œ×7Ò7¸Ñ>Ô>ð /ð /�Ø×(Ò(¨Ñ.Ô.Ð.Ð.ð	/ð 	/ð/ð /r2   N)r)   r*   r   r   r   r   r   r!   )r   r*   )r   r˜   )
r]   r    rW   rJ   r^   rJ   rY   r*   r   r*   )r¨   r   r©   r   r   r   )r¬   r³   r   r`   r‰   )rZ   r*   r   r!   )r   r+   )rð   rJ   r   r!   )rÄ   rú   rï   r*   r   r!   )rŠ   r‹   rŒ   r�   rB   r—   r‘   rk   r¹   ÚstaticmethodrÊ   rÓ   rÝ   rã   rñ   r/   rì   rè   rŽ   r2   r   r.   r.   	  s3  € € € € € ØEÐEðJð Jð Jð Jð22ð 2ð 2ð 2ðð ð ð ðð ð ð ð*ð ð ð ð2 ð8ð 8ð 8ñ „\ð8ðtð ð ð ð*+ð +ð +ð +ð4ð ð ð ð>&ð &ð &ð &ð6@ð @ð @ð @ð$&ð &ð &ð &ð/ð /ð /ð /ð /ð /r2   r.   Ú	job_countrJ   ú multiprocessing.pool.Pool | Nonec                ó¤   — 	 t          j        | t          |f¬¦  «        S # t          $ r}|j        t
          vr‚ Y d}~nd}~wt          $ r Y nw xY wdS )z@Return a new process pool instance if we are able to create one.)ÚinitargsN)rP   ÚPoolr(   r�   ÚerrnoÚSERIAL_RETRY_ERRNOSÚImportError)r  r   Úerrs      r   rm   rm   G  s€   € ð
ÝÔ# I­xÀ4À'ÐJÑJÔJÐJøÝð ð ð ØŒ9Õ/Ð/Ð/Øð 0Ð/Ð/Ð/Ð/øøøøåð ð ð Øˆðøøøð ˆ4s   ‚ Ÿ
A©=½AÁArÒ   rÜ   úprocessor._LogicalMappingr`   c                ó¢   — t          | t          ¦  «        r| S |D ]}|d         }| |k    r
|d         } nŒd}dx} }|d         |d         | z   |z
  fS )z*Find the offset tuple for a single offset.r   rc   )r   r   )r¿   r…   )rÒ   rÜ   rÄ   Útoken_offsetÚpositions        r   rÙ   rÙ   W  s   € õ �&�%Ñ Ô ð Øˆàð "ð "ˆØ˜Q”xˆØ�\Ò!Ð!Ø˜Q”xˆHØˆEð "ð ˆØ !Ð!ˆ�Ø�QŒK˜ !œ vÑ-°Ñ<Ð=Ð=r2   )r   r   r   r   r   r   )r   r    r   r!   )r)   r*   r   r+   )r  rJ   r   r    r   r  )rÒ   rJ   rÜ   r
  r   r`   )4r�   Ú
__future__r   ÚargparseÚ
contextlibr  ÚloggingÚmultiprocessing.poolrP   rf   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*   rJ   rT   Ú	getLoggerrŠ   rM   ÚENOSPCr  Ú__annotations__Úcontextmanagerr   r(   r1   r4   r.   rm   rÙ   rŽ   r2   r   ú<module>r     sÇ  ðØ *Ð *Ð *Ø "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø .Ð .Ð .Ð .Ð .Ð .Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø *Ð *Ð *Ð *Ð *Ð *Ø .Ð .Ð .Ð .Ð .Ð .Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0à
ˆu�S˜#˜s C¨°#¬Ð6Ô7Ô
8€à€gÔ˜Ñ!Ô!€ð 
„LðÐ ð Ð Ð Ñ Ø Ð Ð Ñ ð Ôð	%ð 	%ð 	%ñ Ôð	%ð=ð =ð =ð =ðð ð ð ðp#ð p#ð p#ð p#ð p#ñ p#ô p#ð p#ðf{/ð {/ð {/ð {/ð {/ñ {/ô {/ð {/ð|	ð ð ð ð >ð >ð >ð >ð >ð >r2   