§
    öyIfØ¾  ã                  ó¬  — 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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 ddlZddlmZ dd	lmZ dd
lmZmZ ddlmZmZmZmZmZm Z  ddl!m"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- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 erddl4m5Z5 ee6eeee6ef                  ee6         f         f         Z7ddhdhdhdhdhh d£dhh d£h d£h d£d œ
Z8dqd.„Z9drd3„Z:dsd7„Z;dtdud:„Z<dvd>„Z=dwdC„Z>i dDdEdFdGdHdIgif“dJdK“dLdM“dNdO“dPdQ“dRdS“dTdU“dVdW“dXdY“dZd[“d\d]“d^d_“d`da“dbdc“ddde“dfdg“Z?dhe@di<   djZAdkZBdjZC G dl„ dmee¦  «        ZDdxdp„ZEdS )yz!Imports checkers for Python code.é    )ÚannotationsN)Údefaultdict)Ú	ItemsViewÚSequence)Úcached_property)ÚTYPE_CHECKINGÚAnyÚDictÚListÚUnion)Únodes)Ú
ImportNode)ÚBaseCheckerÚDeprecatedMixin)Úget_import_nameÚin_type_checking_blockÚis_from_fallback_blockÚis_module_ignoredÚis_sys_guardÚnode_ignores_exception)ÚMAX_NUMBER_OF_IMPORT_SHOWN)ÚEmptyReportError)Ú
DotBackendÚ
get_cycles)ÚHIGH)Ú	ParagraphÚSectionÚVerbatimText)ÚMessageDefinitionTuple)ÚIsortDriver)ÚLinterStats)ÚPyLinterztkinter.tixÚfpectlÚoptparsezxml.etree.cElementTreeÚimpÚ	formatter>   ÚsmtpdÚasynchatÚasyncoreÚmacpath>   ÚbinhexÚparserÚsymbolÚlib2to3>   ú	typing.ioú	typing.reÚ	distutils>   ÚuuÚcgiÚnisÚaifcÚspwdÚcgitbÚchunkÚcryptÚpipesÚsunauÚimghdrÚmsilibÚsndhdrÚxdrlibÚaudioopÚmailcapÚnntplibÚ	sre_parseÚ	telnetlibÚossaudiodevÚsre_compileÚsre_constants)
)r   r   r   )é   é   r   )rH   rH   r   )rH   é   r   )rH   é   r   )rH   é   r   )rH   é   r   )rH   é	   r   )rH   é
   r   )rH   é   r   Únoder   Úcontextúnodes.LocalsDictNodeNGÚnameÚstrÚbaseú
str | NoneÚlevelú
int | NoneÚaliasÚreturnú9tuple[nodes.Import | nodes.ImportFrom | None, str | None]c                óˆ  ‡— |r|› d|› �n|Šd}d}d}|j         D �]}|| u rŒ|                     ¦   «         |                      ¦   «         u r|j        | j        k    rŒAt          |t          j        ¦  «        rDt          ˆfd„|j        D ¦   «         ¦  «        rd} nŽ|j        D ]\  }	}
|
s|	|k    rd}d} nŒ|r noŒŸt          |t          j        ¦  «        rR||j	        k    rG|j        D ];\  }	}
‰|j
        › d|	› �k    rd} n#|dk    r||	k    r|s|
sd} n|
s|	|k    rd}d} nŒ<|r n�Œ|rt          j        || ¦  «        s||fS d	S )
zEReturn the node where [base.]<name> is imported or None if not found.ú.NFÚ
reimportedc              3  ó0   •K  — | ]}‰|d          k    V — ŒdS )r   N© )Ú.0ÚinameÚfullnames     €úK/var/www/piapp/venv/lib/python3.11/site-packages/pylint/checkers/imports.pyú	<genexpr>z$_get_first_import.<locals>.<genexpr>j   s,   øè è € ÐAÐA¨E�8˜u QœxÒ'ÐAÐAÐAÐAÐAÐAó    Túshadowed-importÚ*©NN)ÚbodyÚscopeÚ
fromlinenoÚ
isinstancer   ÚImportÚanyÚnamesÚ
ImportFromrX   ÚmodnameÚastroidÚare_exclusive)rQ   rR   rT   rV   rX   rZ   ÚfirstÚfoundÚmsgÚimported_nameÚimported_aliasrd   s              @re   Ú_get_first_importr{   U   sò  ø€ ð $(Ð1�$ÐÐ˜ÐÐÐ¨T€Hà€EØ€EØ
€Cà”ð "ñ "ˆØ�Dˆ=ˆ=ØØ�;Š;‰=Œ=˜DŸJšJ™LœLÐ(Ð(¨UÔ-=ÀÄÒ-OÐ-OØÝ�e�Uœ\Ñ*Ô*ð 	ÝÐAÐAÐAÐA°U´[ÐAÑAÔAÑAÔAð Ø�Ø�Ø16´ð ð Ñ-�˜~Ø%ð ¨-¸5Ò*@Ð*@Ø �EØ+�CØ�EøØð Ø�ðå˜�uÔ/Ñ0Ô0ð 	Ø˜œÒ#Ð#Ø5:´[ð ð Ñ1�M >Ø e¤mÐ#EÐ#E°mÐ#EÐ#EÒEÐEØ $˜Ø˜à š˜Ø  MÒ1Ð1Ø!&ð 2Ø*8ð 2ð !%˜Ø˜Ø)ð ¨m¸uÒ.DÐ.DØ $˜Ø/˜Ø˜øØð Ø�EùØð •WÔ*¨5°$Ñ7Ô7ð Ø�cˆzÐØˆ:rg   rs   Úignored_modulesúSequence[str]Úboolc                óÜ   — t          ||¦  «        rdS t          | ¦  «        rdS t          | j        t          j        ¦  «        rt          | j        ¦  «        rdS t          | t          ¦  «        S )NT)	r   r   rn   Úparentr   ÚIfr   r   ÚImportError)rQ   rs   r|   s      re   Ú_ignore_import_failurerƒ   Œ   sn   € õ
 ˜ /Ñ2Ô2ð Øˆtõ ˜dÑ#Ô#ð ØˆtÝ�$”+�uœxÑ(Ô(ð ­\¸$¼+Ñ-FÔ-Fð Øˆtå! $­Ñ4Ô4Ð4rg   Úmod_files_listúItemsView[str, set[str]]Ú_ImportTreec                ó8  — i }| D ]”\  }}|g g}|                      d¦  «        D ]=}t          |d         t          ¦  «        sJ ‚|d                              |i g f¦  «        }Œ>t          |d         t          ¦  «        sJ ‚|d                              |¦  «         Œ•|S )zˆGet a list of 2-uple (module, list_of_files_which_import_this_module),
    it will return a dictionary to represent this as a tree.
    r^   r   é   )Úsplitrn   ÚdictÚ
setdefaultÚlistÚextend)r„   Ú	tree_defsÚmodÚfilesrQ   Úprefixs         re   Ú_make_tree_defsr’   ¡   s°   € ð  €IØ$ð ð ‰
ˆˆUØ/8¸"¨oˆØ—i’i ‘n”nð 	8ð 	8ˆFÝ˜d 1œg¥tÑ,Ô,Ð,Ð,Ð,Ø˜”7×%Ò% f¨r°2¨hÑ7Ô7ˆDˆDÝ˜$˜qœ'¥4Ñ(Ô(Ð(Ð(Ð(ØˆQŒ�Š�uÑÔÐÐØÐrg   ÚdataÚ
indent_strc                ó0  — g }|                       ¦   «         }t          t          |d„ ¬¦  «        ¦  «        D ]Ì\  }\  }\  }}|sdn%dd                     t          |¦  «        ¦  «        › d�}|€|                     |› d|› �¦  «         d	}	n>|                     |› d
|› d|› �¦  «         |t          |¦  «        dz
  k    r|› d	�}	n|› d�}	|r8t          |t          ¦  «        r#|                     t          ||	¦  «        ¦  «         ŒÍd                     |¦  «        S )z3Return a string which represents imports as a tree.c                ó   — | d         S )Nr   ra   )Úxs    re   ú<lambda>z!_repr_tree_defs.<locals>.<lambda>´   s   € ÈaÐPQÌd€ rg   )ÚkeyÚ ú(ú,ú)Nú z  z\-rˆ   z| ú
)	ÚitemsÚ	enumerateÚsortedÚjoinÚappendÚlenrn   rŠ   Ú_repr_tree_defs)
r“   r”   ÚlinesÚnodes_itemsÚir�   Úsubr�   Ú
files_listÚsub_indent_strs
             re   r¦   r¦   °   sG  € à€EØ—*’*‘,”,€KÝ"+­F°;ÀNÀNÐ,SÑ,SÔ,SÑ"TÔ"Tð ?ð ?ÑˆÑˆC‘�#�uØ$ÐH�R�RÐ*H¨c¯hªhµv¸e±}´}Ñ.EÔ.EÐ*HÐ*HÐ*Hˆ
ØÐØ�LŠL˜CÐ.Ð. *Ð.Ð.Ñ/Ô/Ð/Ø!ˆNˆNà�LŠL˜ZÐ=Ð=¨3Ð=Ð=°Ð=Ð=Ñ>Ô>Ð>Ø•C˜Ñ$Ô$ qÑ(Ò(Ð(Ø$.Ð!2Ð!2Ð!2��à$.Ð!2Ð!2Ð!2�Øð 	?•:˜c¥4Ñ(Ô(ð 	?Ø�LŠL�¨¨nÑ=Ô=Ñ>Ô>Ð>øØ�9Š9�UÑÔÐrg   ÚfilenameÚdep_infoúdict[str, set[str]]c                ó€  — i }t          t          j                             t          j                             | ¦  «        ¦  «        d         d¬¦  «        }|                     d¦  «         t          |                     ¦   «         ¦  «        D ]Q\  }}t          |¦  «        }d||<   |                     |¦  «         |D ] }||vrd||<   |                     |¦  «         Œ!ŒRt          |                     ¦   «         ¦  «        D ]-\  }}t          |¦  «        D ]}| 	                    ||¦  «         ŒŒ.| 
                    | ¦  «        S )ú,Write dependencies as a dot (graphviz) file.r   ÚLR)ÚrankdirzURL="." node[shape="box"]rˆ   )r   ÚosÚpathÚsplitextÚbasenameÚemitr¢   r    Ú	emit_nodeÚ	emit_edgeÚgenerate)r­   r®   ÚdoneÚprinterrs   ÚdependenciesÚsorted_dependenciesÚ
depmodnames           re   Ú_dependencies_graphrÁ   Ä   sR  € à€DÝ�œ×)Ò)­"¬'×*:Ò*:¸8Ñ*DÔ*DÑEÔEÀaÔHÐRVÐWÑWÔW€GØ‡L‚LÐ,Ñ-Ô-Ð-Ý!'¨¯ªÑ(8Ô(8Ñ!9Ô!9ð .ð .Ñˆ�Ý$ \Ñ2Ô2ÐØˆˆW‰Ø×Ò˜'Ñ"Ô"Ð"Ø-ð 	.ð 	.ˆJØ Ð%Ð%Ø#$��ZÑ Ø×!Ò! *Ñ-Ô-Ð-øð	.õ %+¨8¯>ª>Ñ+;Ô+;Ñ$<Ô$<ð 3ð 3Ñ ˆ
�LÝ˜lÑ+Ô+ð 	3ð 	3ˆGØ×Ò˜g zÑ2Ô2Ð2Ð2ð	3à×Ò˜HÑ%Ô%Ð%rg   Úsectr   ÚgtypeÚNonec                óv   — t          | |¦  «        }|                     t          |› d|› �f¦  «        ¦  «         dS )zaGenerate a dependencies graph and add some information about it in the
    report's section.
    z"imports graph has been written to N)rÁ   r¤   r   )r­   r®   rÂ   rÃ   Ú
outputfiles        re   Ú_make_graphrÇ   ×   sD   € õ % X¨xÑ8Ô8€JØ‡K‚K•	˜eÐSÐSÀzÐSÐSÐUÑVÔVÑWÔWÐWÐWÐWrg   ÚE0401zUnable to import %súimport-errorz4Used when pylint has been unable to import a module.Ú	old_names)ÚF0401zold-import-errorÚE0402)z2Attempted relative import beyond top-level packageúrelative-beyond-top-levelzSUsed when a relative import tries to access too many levels in the current package.ÚR0401)zCyclic import (%s)úcyclic-importzBUsed when a cyclic import between two or more modules is detected.ÚR0402)zUse 'from %s import %s' insteadúconsider-using-from-importz³Emitted when a submodule of a package is imported and aliased with the same name, e.g., instead of ``import concurrent.futures as futures`` use ``from concurrent import futures``.ÚW0401)zWildcard import %súwildcard-importz-Used when `from module import *` is detected.ÚW0404)zReimport %r (imported line %s)r_   z.Used when a module is imported more than once.ÚW0406)zModule import itselfúimport-selfz'Used when a module is importing itself.ÚW0407)z!Prefer importing %r instead of %rúpreferred-modulez?Used when a module imported has a preferred replacement module.ÚW0410)z:__future__ import is not the first non docstring statementúmisplaced-futurezgPython 2.5 and greater require __future__ import to be the first non docstring statement in the module.ÚC0410)z!Multiple imports on one line (%s)úmultiple-importszBUsed when import statement importing multiple modules is detected.ÚC0411)z%s should be placed before %súwrong-import-orderzvUsed when PEP8 import order is not respected (standard imports first, then third-party libraries, then local imports).ÚC0412)z'Imports from package %s are not groupedúungrouped-importsz.Used when imports are not grouped by packages.ÚC0413)z5Import "%s" should be placed at the top of the moduleúwrong-import-positionz%Used when code and imports are mixed.ÚC0414)z-Import alias does not rename original packageúuseless-import-aliaszwUsed when an import alias is same as original package, e.g., using import numpy as numpy instead of import numpy as np.ÚC0415)zImport outside toplevel (%s)úimport-outside-toplevelzwUsed when an import statement is used anywhere other than the module toplevel. Move this import to the top of the file.ÚW0416)zShadowed %r (imported line %s)rh   zFUsed when a module is aliased with a name that shadows another import.z!dict[str, MessageDefinitionTuple]ÚMSGSra   )Úenchantc                  óB  — e Zd ZdZdZi ej        ¥e¥ZdZ	de	ddddœfd	e
dd
ddœfddddddœfddddddœfddddddœfdeddddœfdeddddœfddddddœfddddddœfd dddd!dœff
Zdqd&„Zdrd'„Zdsd)„Zdrd*„Zdtd,„Zdud/„Zdvd1„Zdwd4„Zdxd6„Zdyd8„Zdwd9„Zdzd;„ZexZxZxZxZxZxZZ d{d=„Z!e!xZ"xZ#Z$dyd>„Z%dyd?„Z&d|dA„Z'd}dD„Z(e)d~dG„¦   «         Z*ddJ„Z+d€dP„Z,d�dR„Z-d‚dU„Z.dƒdW„Z/d„dY„Z0d|dZ„Z1	 	 d…d†d`„Z2d‡dg„Z3d‡dh„Z4dˆdj„Z5e6dsdk„¦   «         Z7e6dsdl„¦   «         Z8d‰dn„Z9dŠdo„Z:d|dp„Z;d[S )‹ÚImportsCheckerzæBaseChecker for import statements.

    Checks for
    * external modules dependencies
    * relative / wildcard imports
    * cyclic imports
    * uses of deprecated modules
    * uses of modules instead of preferred modules
    Úimportsra   zdeprecated-modulesÚcsvz	<modules>zBDeprecated modules which should not be used, separated by a comma.)ÚdefaultÚtypeÚmetavarÚhelpzpreferred-modulesz<module:preferred-module>z?Couples of modules and preferred modules, separated by a comma.zimport-graphrš   rµ   z	<file.gv>z›Output a graph (.gv or any supported image format) of all (i.e. internal and external) dependencies to the given file (report RP0402 must not be disabled).zext-import-graphzƒOutput a graph (.gv or any supported image format) of external dependencies to the given file (report RP0402 must not be disabled).zint-import-graphzƒOutput a graph (.gv or any supported image format) of internal dependencies to the given file (report RP0402 must not be disabled).zknown-standard-libraryzYForce import order to recognize a module as part of the standard compatibility libraries.zknown-third-partyzJForce import order to recognize a module as part of a third party library.zallow-any-import-levelzNList of modules that can be imported at any level, not just the top level one.zallow-wildcard-with-allFÚynz<y or n>z8Allow wildcard imports from modules that define __all__.zallow-reexport-from-packagez:Allow explicit reexports by alias from a package __init__.Úlinterr"   r[   rÄ   c                ó  — t          j        | |¦  «         t          t          ¦  «        | _        g | _        d | _        i | _        t          ¦   «         | _        dd| j	        fdd| j
        ff| _        t          t          ¦  «        | _        d S )NÚRP0401zExternal dependenciesÚRP0402zModules dependencies graph)r   Ú__init__r   ÚsetÚimport_graphÚ_imports_stackÚ_first_non_import_nodeÚ_module_pkgÚ_allow_any_import_levelÚ_report_external_dependenciesÚ_report_dependencies_graphÚreportsÚ_excluded_edges)Úselfró   s     re   r÷   zImportsChecker.__init__¾  sŒ   € ÝÔ˜T 6Ñ*Ô*Ð*Ý8CÅCÑ8HÔ8HˆÔØ<>ˆÔØ&*ˆÔ#àð 	Ôõ 25±´ˆÔ$àÐ.°Ô0RÐSØÐ3°TÔ5TÐUð
ˆŒõ <GÅsÑ;KÔ;KˆÔÐÐrg   c                óš  — i | j         j        _        | j         j        | j         _        t          t          ¦  «        | _        i | _        d| _        | j         j        j	        | _
        t          d„ | j         j        j        D ¦   «         ¦  «        | _        t	          | j         j        j        ¦  «        | _        | j         j        j        | _        dS )ú4Called before visiting project (i.e set of modules).Fc              3  óH   K  — | ]}d |v ¯|                      d ¦  «        V — ŒdS )ú:N©r‰   )rb   Úmodules     re   rf   z&ImportsChecker.open.<locals>.<genexpr>Ö  s@   è è € ð &
ð &
àØ�fˆ}ˆ}ð �LŠL˜ÑÔàˆ}ˆ}ˆ}ð&
ð &
rg   N)ró   Ústatsr¾   r   rø   rù   rü   Ú_current_module_packageÚconfigr|   Ú_ignored_modulesrŠ   Úpreferred_modulesÚallow_any_import_levelrý   Úallow_reexport_from_packageÚ_allow_reexport_package©r  s    re   ÚopenzImportsChecker.openÍ  s´   € à)+ˆŒÔÔ&Ø œKÔ-ˆŒÔÝ'­Ñ,Ô,ˆÔØˆÔØ',ˆÔ$Ø/3¬{Ô/AÔ/QˆÔå!%ð &
ð &
àœ+Ô,Ô>ð&
ñ &
ô &
ñ "
ô "
ˆÔõ
 (+¨4¬;Ô+=Ô+TÑ'UÔ'UˆÔ$Ø'+¤{Ô'9Ô'UˆÔ$Ð$Ð$rg   údefaultdict[str, set[str]]c                óŽ   — t          j        | j        ¦  «        }|D ](}||                              | j        |         ¦  «         Œ)|S ©N)ÚcopyÚdeepcopyrù   Údifference_updater  )r  Úfiltered_graphrQ   s      re   Ú#_import_graph_without_ignored_edgesz2ImportsChecker._import_graph_without_ignored_edgesÞ  sO   € Ýœ tÔ'8Ñ9Ô9ˆØ"ð 	Oð 	OˆDØ˜4Ô ×2Ò2°4Ô3GÈÔ3MÑNÔNÐNÐNØÐrg   c                ó   — | j                              d¦  «        ra|                      ¦   «         }t          |¦  «        }t	          ||¬¦  «        D ].}|                      dd                     |¦  «        ¬¦  «         Œ-dS dS )r  rÏ   )Úverticesz -> )ÚargsN)ró   Úis_message_enabledr  rŒ   r   Úadd_messager£   )r  Úgraphr  Úcycles       re   ÚclosezImportsChecker.closeä  s•   € àŒ;×)Ò)¨/Ñ:Ô:ð 	KØ×<Ò<Ñ>Ô>ˆEÝ˜E‘{”{ˆHÝ# E°HÐ=Ñ=Ô=ð Kð K�Ø× Ò  °v·{²{À5Ñ7IÔ7IÐ ÑJÔJÐJÐJð		Kð 	KðKð Krg   ú=tuple[defaultdict[str, set[str]], defaultdict[str, set[str]]]c                ó¢   — | j                              d¦  «        r| j        | j        fS t	          t
          ¦  «        t	          t
          ¦  «        fS ©NrÏ   )ró   r  rù   r  r   rø   r  s    re   Úget_map_datazImportsChecker.get_map_dataì  sH   € ð Œ;×)Ò)¨/Ñ:Ô:ð 	=ØÔ% tÔ';Ð<Ð<Ý�CÑ Ô ¥+­cÑ"2Ô"2Ð3Ð3rg   r“   úClist[tuple[defaultdict[str, set[str]], defaultdict[str, set[str]]]]c                óF  — | j                              d¦  «        r†t          t          ¦  «        | _        t          t          ¦  «        | _        |D ];}|\  }}| j                             |¦  «         | j                             |¦  «         Œ<|                      ¦   «          d S d S r%  )ró   r  r   rø   rù   r  Úupdater"  )r  ró   r“   Ú	to_updater   Úexcluded_edgess         re   Úreduce_map_datazImportsChecker.reduce_map_dataó  s¡   € ð
 Œ;×)Ò)¨/Ñ:Ô:ð 	Ý +­CÑ 0Ô 0ˆDÔÝ#.­sÑ#3Ô#3ˆDÔ Ø!ð <ð <�	Ø(1Ñ%��~ØÔ!×(Ò(¨Ñ/Ô/Ð/ØÔ$×+Ò+¨NÑ;Ô;Ð;Ð;à�JŠJ‰LŒLˆLˆLˆLð	ð 	rg   úset[str]c                óÊ   — t          | j        j        j        ¦  «        }t                               ¦   «         D ]*\  }}|t          j        k    r|                     |¦  «        }Œ+|S )z*Callback returning the deprecated modules.)	rø   ró   r  Údeprecated_modulesÚDEPRECATED_MODULESr    ÚsysÚversion_infoÚunion)r  Úall_deprecated_modulesÚ
since_versÚmod_sets       re   r/  z!ImportsChecker.deprecated_modules  se   € õ "% T¤[Ô%7Ô%JÑ!KÔ!KÐå#5×#;Ò#;Ñ#=Ô#=ð 	Oð 	OÑˆJ˜Ø�SÔ-Ò-Ð-Ø)?×)EÒ)EÀgÑ)NÔ)NÐ&øØ%Ð%rg   rQ   únodes.Modulec                ó   — |j         | _        dS )z<Store if current module is a package, i.e. an __init__ file.N)Úpackager
  ©r  rQ   s     re   Úvisit_modulezImportsChecker.visit_module  s   € à'+¤|ˆÔ$Ð$Ð$rg   únodes.Importc                óØ  — |                       |¦  «         |                      |¦  «         |                      |¦  «         d„ |j        D ¦   «         }t	          |¦  «        dk    r+|                      dd                     |¦  «        |¬¦  «         |D ]Ø}|                      ||¦  «         |                      ||¦  «         |  	                    ||¦  «        }t          |j        t          j        ¦  «        r|                      |¦  «         t          |                     ¦   «         t          j        ¦  «        r|                      ||¦  «         |€Œ½|                      ||j        ¦  «         ŒÙdS )z+Triggered when an import statement is seen.c                ó   — g | ]\  }}|‘ŒS ra   ra   ©rb   rT   Ú_s      re   ú
<listcomp>z/ImportsChecker.visit_import.<locals>.<listcomp>  s   € Ð0Ð0Ð0™'˜$ �Ð0Ð0Ð0rg   rI   rÜ   ú, ©r  rQ   N)Ú_check_reimportÚ_check_import_as_renameÚ_check_toplevelrq   r¥   r  r£   Úcheck_deprecated_moduleÚ_check_preferred_moduleÚ_get_imported_modulern   r€   r   ÚModuleÚ_check_positionrl   Ú_record_importÚ_add_imported_modulerT   )r  rQ   rq   rT   Úimported_modules        re   Úvisit_importzImportsChecker.visit_import  si  € à×Ò˜TÑ"Ô"Ð"Ø×$Ò$ TÑ*Ô*Ð*Ø×Ò˜TÑ"Ô"Ð"à0Ð0 T¤ZÐ0Ñ0Ô0ˆÝˆu‰:Œ:˜Š?ˆ?Ø×ÒÐ/°d·i²iÀÑ6FÔ6FÈTÐÑRÔRÐRàð 	Bð 	BˆDØ×(Ò(¨¨tÑ4Ô4Ð4Ø×(Ò(¨¨tÑ4Ô4Ð4Ø"×7Ò7¸¸dÑCÔCˆOÝ˜$œ+¥u¤|Ñ4Ô4ð +à×$Ò$ TÑ*Ô*Ð*Ý˜$Ÿ*š*™,œ,­¬Ñ5Ô5ð ;Ø×#Ò# D¨/Ñ:Ô:Ð:àÐ&Øà×%Ò% d¨OÔ,@ÑAÔAÐAÐAð	Bð 	Brg   únodes.ImportFromc                óX  — |j         }|                      ||¦  «        }t          ||¦  «        }|                      |¦  «         |                      |¦  «         |                      ||¦  «         |                      ||¦  «         |                      ||¦  «         |                      |¦  «         |  	                    |||j
        ¬¦  «         |                      |¦  «         t          |j        t          j        ¦  «        r|                      |¦  «         t          |                     ¦   «         t          j        ¦  «        r|                      ||¦  «         |€dS |j        D ]G\  }}|dk    r!|                      ||j        › d|› �¦  «         Œ,|                      ||j        ¦  «         ŒHdS )z(Triggered when a from statement is seen.)r·   rX   Nri   r^   )rs   rI  r   rE  Ú_check_misplaced_futurerG  rH  Ú_check_wildcard_importsÚ_check_same_line_importsrD  rX   rF  rn   r€   r   rJ  rK  rl   rL  rq   rM  rT   )r  rQ   r·   rN  Úabsolute_namerT   r@  s          re   Úvisit_importfromzImportsChecker.visit_importfrom)  sµ  € à”<ˆØ×3Ò3°D¸(ÑCÔCˆÝ'¨¨hÑ7Ô7ˆà×$Ò$ TÑ*Ô*Ð*Ø×$Ò$ TÑ*Ô*Ð*Ø×$Ò$ T¨=Ñ9Ô9Ð9Ø×$Ò$ T¨8Ñ4Ô4Ð4Ø×$Ò$ T¨?Ñ;Ô;Ð;Ø×%Ò% dÑ+Ô+Ð+Ø×Ò˜T¨H¸D¼JÐÑGÔGÐGØ×Ò˜TÑ"Ô"Ð"å�d”k¥5¤<Ñ0Ô0ð 	'à× Ò  Ñ&Ô&Ð&Ý�d—j’j‘l”l¥E¤LÑ1Ô1ð 	7Ø×Ò  oÑ6Ô6Ð6ØÐ"ØˆFØ”zð 	Fð 	F‰GˆD�!Ø�sŠ{ˆ{Ø×)Ò)¨$°?Ô3GÐ0PÐ0PÈ$Ð0PÐ0PÑQÔQÐQÐQà×)Ò)¨$°Ô0DÑEÔEÐEÐEð		Fð 	Frg   c                óV  — |                       |¦  «        \  }}}t          ¦   «         }t          ¦   «         }d }||z   |z   D ]Ú\  }}	t          |t          j        ¦  «        r|n|}
|	                     d¦  «        \  }}}|rd||k    r^||
v rZt          |¦  «        sKt          |j        t          j        ¦  «        rt          |j        ¦  «        s|  
                    d||¬¦  «         |}| j                             d|j        ¦  «        sŒÅ|
                     |¦  «         ŒÛg | _        d | _        d S )Nr^   rà   ©rQ   r  )Ú_check_imports_orderrø   rn   r   rr   Ú	partitionr   r€   r�   r   r  ró   r  rm   Úaddrú   rû   )r  rQ   Ústd_importsÚext_importsÚloc_importsÚ
met_importÚmet_fromÚcurrent_packageÚimport_nodeÚimport_nameÚmetr9  r@  s                re   Úleave_modulezImportsChecker.leave_moduleE  sW  € à04×0IÒ0IÈ$Ñ0OÔ0OÑ-ˆ�[ +õ  #™uœuˆ
Ý ™UœUˆØˆØ(3°kÑ(AÀKÑ(Oð 	ð 	Ñ$ˆK˜Ý(¨µeÔ6FÑGÔGÐW�(�(ÈZˆCØ'×1Ò1°#Ñ6Ô6‰MˆG�Q˜àð
Và# wÒ.Ð.Ø˜s�N�NÝ.¨{Ñ;Ô;ð #õ ˜{Ô1µ5´8Ñ<Ô<ð #õ % [Ô%7Ñ8Ô8ð	 #ð × Ò Ð!4¸;ÈWÐ ÑUÔUÐUØ%ˆOØ”;×1Ò1Ø# [Ô%;ñô ð ð Ø�GŠG�GÑÔÐÐà ˆÔØ&*ˆÔ#Ð#Ð#rg   úgnodes.If | nodes.Expr | nodes.Comprehension | nodes.IfExp | nodes.Assign | nodes.AssignAttr | nodes.Tryc                óˆ  — | j         rd S t          |j        t          j        ¦  «        sd S t          |t          j        ¦  «        r:t          |                     t          j        t          j	        f¦  «        ¦  «        rd S t          |t          j
        ¦  «        r"d„ |j        D ¦   «         }t          |¦  «        rd S || _         d S )Nc                óª   — g | ]P}t          |t          j        ¦  «        o3|j                             d ¦  «        o|j                             d ¦  «        ‘ŒQS )Ú__)rn   r   Ú
AssignNamerT   Ú
startswithÚendswith)rb   Útargets     re   rA  z@ImportsChecker.compute_first_non_import_node.<locals>.<listcomp>€  sg   € ð ð ð ð õ ˜6¥5Ô#3Ñ4Ô4ð /Ø”K×*Ò*¨4Ñ0Ô0ð/à”K×(Ò(¨Ñ.Ô.ðð ð rg   )rû   rn   r€   r   rJ  ÚTryrp   Únodes_of_classro   rr   ÚAssignÚtargetsÚall)r  rQ   Úvalid_targetss      re   Úcompute_first_non_import_nodez,ImportsChecker.compute_first_non_import_nodee  sÑ   € ð  Ô&ð 	ØˆFÝ˜$œ+¥u¤|Ñ4Ô4ð 	ØˆFÝ�d�EœIÑ&Ô&ð 	­3Ø×Ò¥¤­uÔ/?Ð @ÑAÔAñ,
ô ,
ð 	ð ˆFÝ�d�EœLÑ)Ô)ð 
	ðð ð #œlð	ñ ô ˆMõ �=Ñ!Ô!ð Ø�Ø&*ˆÔ#Ð#Ð#rg   ú<nodes.FunctionDef | nodes.While | nodes.For | nodes.ClassDefc                óÚ  — | j         rd S t          |j                             ¦   «         t          j        ¦  «        sd S |}t          |j        t          j        ¦  «        s&|j        }t          |j        t          j        ¦  «        ¯&t          |t          j        t          j        f¦  «        r:t          | 	                    t          j
        t          j        f¦  «        ¦  «        rd S || _         d S r  )rû   rn   r€   rl   r   rJ  r�   rn  rp   ro  ro   rr   )r  rQ   Úroots      re   Úvisit_functiondefz ImportsChecker.visit_functiondefŽ  sÏ   € ð Ô&ð 	ØˆFõ ˜$œ+×+Ò+Ñ-Ô-­u¬|Ñ<Ô<ð 	ØˆFàˆÝ˜Tœ[­%¬,Ñ7Ô7ð 	Ø”;ˆDõ ˜Tœ[­%¬,Ñ7Ô7ð 	õ �d�UœX¥u¤yÐ1Ñ2Ô2ð 	Ý�4×&Ò&­¬µeÔ6FÐ'GÑHÔHÑIÔIð Ø�à&*ˆÔ#Ð#Ð#rg   c                óÈ   — |j         }|dk    rT|                     ¦   «         }|r<t          |t          j        ¦  «        r|j         dk    s|                      d|¬¦  «         d S d S )NÚ
__future__rÚ   ©rQ   )rs   Úprevious_siblingrn   r   rr   r  )r  rQ   r·   Úprevs       re   rR  z&ImportsChecker._check_misplaced_future¦  sz   € Ø”<ˆØ�|Ò#Ð#à×(Ò(Ñ*Ô*ˆDØð Dõ ˜t¥UÔ%5Ñ6Ô6ðDØ;?¼<È<Ò;WÐ;Wà×$Ò$Ð%7¸dÐ$ÑCÔCÐCØˆFð $Ð#rg   c                óÎ   — d„ |j         D ¦   «         }t          j        |¦  «        }|                     ¦   «         D ]*\  }}|dk    r|                      d|||j        f¬¦  «         Œ+d S )Nc              3  ó    K  — | ]	\  }}|V — Œ
d S r  ra   r?  s      re   rf   z:ImportsChecker._check_same_line_imports.<locals>.<genexpr>µ  s&   è è € Ð0Ð0™'˜$ �Ð0Ð0Ð0Ð0Ð0Ð0rg   rˆ   r_   rX  )rq   ÚcollectionsÚCounterr    r  rm   )r  rQ   rq   ÚcounterrT   Úcounts         re   rT  z'ImportsChecker._check_same_line_imports³  s|   € à0Ð0 T¤ZÐ0Ñ0Ô0ˆÝÔ% eÑ,Ô,ˆØ"Ÿ=š=™?œ?ð 	Xð 	X‰KˆD�%Ø�qŠyˆyØ× Ò  °DÀÀdÄoÐ?VÐ ÑWÔWÐWøð	Xð 	Xrg   r   c                óü   — | j         rt| j                             d| j         j        ¦  «        r,|                      d||                     ¦   «         ¬¦  «         dS | j                             d|j        |¦  «         dS dS )zˆCheck `node` import or importfrom node position is correct.

        Send a message  if `node` comes before another instruction
        râ   rX  N)rû   ró   r  rm   r  Ú	as_stringÚadd_ignored_messager:  s     re   rK  zImportsChecker._check_position»  s§   € ð Ô&ð 
	ØŒ{×-Ò-Ø'¨Ô)DÔ)Oñô ð 	ð × Ò Ø+°$¸T¿^º^Ñ=MÔ=Mð !ñ ô ð ð ð ð ”×/Ò/Ø+¨T¬_¸dñô ð ð ð ð
	ð 
	rg   Úimportedmodnodeúnodes.Module | Nonec                óL  — t          |t          j        ¦  «        r|j        }n|r|j        nd}|s,|j        d         d                              d¦  «        d         }t          |t          j        ¦  «        r|j        pddk    rd|z   }| j         	                    ||f¦  «         dS )z'Record the package `node` imports from.Nr   r^   rˆ   )
rn   r   rr   rs   rT   rq   r‰   rX   rú   r¤   )r  rQ   r‡  Úimportednames       re   rL  zImportsChecker._record_importÎ  s³   € õ �d�EÔ,Ñ-Ô-ð 	MØœ<ˆLˆLà3BÐL˜?Ô/Ð/ÈˆLØð 	:Øœ: aœ=¨Ô+×1Ò1°#Ñ6Ô6°qÔ9ˆLå�d�EÔ,Ñ-Ô-ð 	.°4´:°?ÀÀqÒ2HÐ2Hð  Ñ-ˆLàÔ×"Ò" D¨,Ð#7Ñ8Ô8Ð8Ð8Ð8rg   úlist[tuple[ImportNode, str]]r~   c                óR   ‡ — d„ |D ¦   «         }t          ˆ fd„|D ¦   «         ¦  «        S )Nc                ó   — g | ]\  }}|‘ŒS ra   ra   )rb   rb  r@  s      re   rA  z6ImportsChecker._is_fallback_import.<locals>.<listcomp>ë  s   € Ð?Ð?Ð?Ñ#3 K°�;Ð?Ð?Ð?rg   c              3  óB   •K  — | ]}t          j        |‰¦  «        V — Œd S r  )rt   ru   )rb   rb  rQ   s     €re   rf   z5ImportsChecker._is_fallback_import.<locals>.<genexpr>ì  s0   øè è € ÐWÐWÀ•7Ô(¨°dÑ;Ô;ÐWÐWÐWÐWÐWÐWrg   )rp   )rQ   rì   s   ` re   Ú_is_fallback_importz"ImportsChecker._is_fallback_importç  s<   ø€ ð @Ð?°wÐ?Ñ?Ô?ˆÝÐWÐWÐWÐWÈwÐWÑWÔWÑWÔWÐWrg   Ú_module_nodeú_tuple[list[tuple[ImportNode, str]], list[tuple[ImportNode, str]], list[tuple[ImportNode, str]]]c                ó|  — g }g }g }g }g }g }g }g }	t          | j        j        ¦  «        }
| j        D �]\  }}|                     d¦  «        rd|                     d¦  «        d         z   }n|                     d¦  «        d         }t          |j        t          j	        ¦  «         }| j         
                    d|j        ¦  «         }|
                     |¦  «        }||f}|dv r€|                     |¦  «         |p|p|	}|                      ||¦  «        rŒå|rJ|sH|                      d|d|                      ||f¦  «        › d�|                      |||	¦  «        f¬¦  «         �Œ3|d	k    r·|                     |¦  «         |                     |¦  «         |s9|s|                     |¦  «         n!| j                             d|j        |¦  «         |p|	}|rJ|sH|                      d|d
|                      ||f¦  «        › d�|                      d||	¦  «        f¬¦  «         �Œð|dk    rµ|                     |¦  «         |                     |¦  «         |s9|s|                     |¦  «         n!| j                             d|j        |¦  «         |	}|rJ|sH|                      d|d|                      ||f¦  «        › d�|                      dd|	¦  «        f¬¦  «         �Œ«|dk    rU|                     ||f¦  «         |s<|s|	                     ||f¦  «         �Œå| j                             d|j        |¦  «         �Œ|||fS )z…Checks imports of module `node` are grouped by category.

        Imports must follow this order: standard, 3rd party, local
        r^   rˆ   r   rÞ   >   ÚFUTUREÚSTDLIBzstandard import "ú"rX  Ú
THIRDPARTYzthird party import "NÚ
FIRSTPARTYzfirst party import "ÚLOCALFOLDER)r    ró   r  rú   rk  r‰   rn   r€   r   rJ  r  rm   Úplace_moduler¤   r�  r  Ú_get_full_import_nameÚ_get_out_of_order_stringr†  )r  r�  r\  Úthird_party_importsÚfirst_party_importsÚexternal_importsÚlocal_importsÚthird_party_not_ignoredÚfirst_party_not_ignoredÚlocal_not_ignoredÚisort_driverrQ   rs   r9  ÚnestedÚignore_for_import_orderÚimport_categoryÚnode_and_package_importÚwrong_imports                      re   rY  z#ImportsChecker._check_imports_orderï  sN  € ð 57ˆØ<>ÐØ<>Ðà9;ÐØ68ˆØ@BÐØ@BÐØ:<ÐÝ" 4¤;Ô#5Ñ6Ô6ˆØ!Ô0ð V	ñ V	‰MˆD�'Ø×!Ò! #Ñ&Ô&ð 0Ø §¢¨cÑ 2Ô 2°1Ô 5Ñ5��à!Ÿ-š-¨Ñ,Ô,¨QÔ/�Ý# D¤Kµ´Ñ>Ô>Ð>ˆFØ*.¬+×*HÒ*HØ$ d¤oñ+ô +ð 'Ð#ð +×7Ò7¸Ñ@Ô@ˆOØ'+¨W oÐ#àÐ"6Ð6Ð6Ø×"Ò"Ð#:Ñ;Ô;Ð;à+ð )Ø.ð)à(ð ð
 ×+Ò+¨D°,Ñ?Ô?ð ØØð ¨ð Ø×$Ò$Ø,Ø!à^°×0JÒ0JÈDÐRYÈ?Ñ0[Ô0[Ð^Ð^Ð^Ø ×9Ò9Ø 7Ø 7Ø 1ñô ðð %ñ ô ð ùð ! LÒ0Ð0Ø#×*Ò*Ð+BÑCÔCÐCØ ×'Ò'Ð(?Ñ@Ô@Ð@Øð Ø2ð Ø/×6Ò6Ð7NÑOÔOÐOÐOàœ×7Ò7Ø0°$´/À4ñô ð ð  7ÐKÐ:K�Øð 
¨ð 
Ø×$Ò$Ø,Ø!àa°4×3MÒ3MÈtÐU\ÈoÑ3^Ô3^ÐaÐaÐaØ ×9Ò9Ø $Ð&=Ð?Pñô ðð %ñ 	ô 	ð 	ùð ! LÒ0Ð0Ø#×*Ò*Ð+BÑCÔCÐCØ ×'Ò'Ð(?Ñ@Ô@Ð@Øð Ø2ð Ø/×6Ò6Ð7NÑOÔOÐOÐOàœ×7Ò7Ø0°$´/À4ñô ð ð  1�Øð 
¨ð 
Ø×$Ò$Ø,Ø!àa°4×3MÒ3MÈtÐU\ÈoÑ3^Ô3^ÐaÐaÐaØ ×9Ò9Ø $ dÐ,=ñô ðð %ñ 	ô 	ð 	ùð ! MÒ1Ð1Ø×$Ò$ d¨G _Ñ5Ô5Ð5Øð Ø2ð Ø)×0Ò0°$¸°ÑAÔAÐAÑAàœ×7Ò7Ø0°$´/À4ñô ð ùð Ð,¨mÐ;Ð;rg   rœ  ú#list[tuple[ImportNode, str]] | Noner�  rŸ  rU   c           	     ó¾  ‡ — |rÛt          |¦  «        dk    rdnd}t          |¦  «        t          k    r‚d                     ˆ fd„|d t          t          dz  ¦  «        …         D ¦   «         ¦  «        dz   d                     ˆ fd„|t          t           dz  ¦  «        d …         D ¦   «         ¦  «        z   }n!d                     ˆ fd	„|D ¦   «         ¦  «        }d
|› d|› �}nd}|rÛt          |¦  «        dk    rdnd}t          |¦  «        t          k    r‚d                     ˆ fd„|d t          t          dz  ¦  «        …         D ¦   «         ¦  «        dz   d                     ˆ fd„|t          t           dz  ¦  «        d …         D ¦   «         ¦  «        z   }n!d                     ˆ fd„|D ¦   «         ¦  «        }d|› d|› �}nd}|rÛt          |¦  «        dk    rdnd}t          |¦  «        t          k    r‚d                     ˆ fd„|d t          t          dz  ¦  «        …         D ¦   «         ¦  «        dz   d                     ˆ fd„|t          t           dz  ¦  «        d …         D ¦   «         ¦  «        z   }n!d                     ˆ fd„|D ¦   «         ¦  «        }d|› d|› �}nd}|r|r|rdn	|s|rdndnd}	|r|r|rdndnd}
|r|rdndnd}|
› |› �}|› |	› |› |› |r|nd› �}|S )Nrˆ   Úsrš   rB  c                óB   •— g | ]}d ‰                      |¦  «        › d �‘ŒS ©r•  ©rš  ©rb   Útpir  s     €re   rA  z;ImportsChecker._get_out_of_order_string.<locals>.<listcomp>h  óC   ø€ ð ð ð à #ð C × :Ò :¸3Ñ ?Ô ?ÐBÐBÐBðð ð rg   rI   z (...) c                óB   •— g | ]}d ‰                      |¦  «        › d �‘ŒS r­  r®  r¯  s     €re   rA  z;ImportsChecker._get_out_of_order_string.<locals>.<listcomp>q  r±  rg   c                óB   •— g | ]}d ‰                      |¦  «        › d �‘ŒS r­  r®  r¯  s     €re   rA  z;ImportsChecker._get_out_of_order_string.<locals>.<listcomp>{  óB   ø€ ð ð ð àð ?˜D×6Ò6°sÑ;Ô;Ð>Ð>Ð>ðð ð rg   zthird party importrž   c                óB   •— g | ]}d ‰                      |¦  «        › d �‘ŒS r­  r®  r¯  s     €re   rA  z;ImportsChecker._get_out_of_order_string.<locals>.<listcomp>‰  r±  rg   c                óB   •— g | ]}d ‰                      |¦  «        › d �‘ŒS r­  r®  r¯  s     €re   rA  z;ImportsChecker._get_out_of_order_string.<locals>.<listcomp>’  r±  rg   c                óB   •— g | ]}d ‰                      |¦  «        › d �‘ŒS r­  r®  )rb   Úfpir  s     €re   rA  z;ImportsChecker._get_out_of_order_string.<locals>.<listcomp>œ  r´  rg   zfirst party importc                óB   •— g | ]}d ‰                      |¦  «        › d �‘ŒS r­  r®  r¯  s     €re   rA  z;ImportsChecker._get_out_of_order_string.<locals>.<listcomp>ª  r±  rg   c                óB   •— g | ]}d ‰                      |¦  «        › d �‘ŒS r­  r®  r¯  s     €re   rA  z;ImportsChecker._get_out_of_order_string.<locals>.<listcomp>³  r±  rg   c                óB   •— g | ]}d ‰                      |¦  «        › d �‘ŒS r­  r®  )rb   Úlir  s     €re   rA  z;ImportsChecker._get_out_of_order_string.<locals>.<listcomp>½  s3   ø€ ÐSÐSÐS¸rÐ:˜×3Ò3°BÑ7Ô7Ð:Ð:Ð:ÐSÐSÐSrg   zlocal importz and zand )r¥   r   r£   Úint)r  rœ  r�  rŸ  ÚpluralÚimports_listÚthird_partyÚfirst_partyÚlocalÚdelimiter_third_partyÚdelimiter_first_party1Údelimiter_first_party2Údelimiter_first_partyrx   s   `             re   r›  z'ImportsChecker._get_out_of_order_string[  sº  ø€ ð ð 	ÝÐ 3Ñ4Ô4°qÒ8Ð8�S�S¸bˆFÝÐ&Ñ'Ô'Õ*DÒDÐDà—I’Iðð ð ð à':Ø F¥#Õ&@ÀAÑ&EÑ"FÔ"FÐ Fô(ðñ ô ñô ð  ñ ð —i’iðð ð ð à':Ý #Õ%?Ð$?À1Ñ$DÑ EÔ EÐ GÐ Gô(ðñ ô ñô ñð �ð(  $Ÿyšyðð ð ð à#6ðñ ô ñ ô  �ð G¨vÐFÐF¸ÐFÐFˆKˆKàˆKàð 	ÝÐ 3Ñ4Ô4°qÒ8Ð8�S�S¸bˆFÝÐ&Ñ'Ô'Õ*DÒDÐDà—I’Iðð ð ð à':Ø F¥#Õ&@ÀAÑ&EÑ"FÔ"FÐ Fô(ðñ ô ñô ð  ñ ð —i’iðð ð ð à':Ý #Õ%?Ð$?À1Ñ$DÑ EÔ EÐ GÐ Gô(ðñ ô ñô ñð �ð(  $Ÿyšyðð ð ð à#6ðñ ô ñ ô  �ð G¨vÐFÐF¸ÐFÐFˆKˆKàˆKàð 	Ý Ñ.Ô.°Ò2Ð2�S�S¸ˆFÝ�=Ñ!Ô!Õ$>Ò>Ð>à—I’Iðð ð ð à'4Ø F¥#Õ&@ÀAÑ&EÑ"FÔ"FÐ Fô(ðñ ô ñô ð  ñ ð —i’iðð ð ð à'4Ý #Õ%?Ð$?À1Ñ$DÑ EÔ EÐ GÐ Gô(ðñ ô ñô ñð �ð(  $ŸyšyØSÐSÐSÐSÀ]ÐSÑSÔSñ ô  �ð ; 6Ð:Ð:¨LÐ:Ð:ˆEˆEàˆEð ðàðAØ$)ðA��à"-Ð?°Ð?�g�g¸R¸Rð ð 	ð ;FÐM�kÐ5 eÐ5ˆTˆT°#°#È2ð 	ð ?JÐ!Q¨EÐ"9 & &°r°rÈrÐØ#9Ð SÐ;QÐ SÐ SÐàð (Ð1ð (Øð(Ø1ð(àÐ%ˆuˆu 2ð(ð (ð 	ð ˆ
rg   Ú
importNodec                ó  — 	 |d         j         › d|d         j        d         d         › �S # t          $ rI |d         j        d         d         }|d         }|                     d¦  «        d         |k    r|cY S |cY S w xY w)Nr   r^   rˆ   )rs   rq   ÚAttributeErrorr‰   )r  rÇ  rQ   r9  s       re   rš  z$ImportsChecker._get_full_import_nameÙ  sŸ   € ð	ð ! ”mÔ+ÐIÐI¨j¸¬mÔ.AÀ!Ô.DÀQÔ.GÐIÐIÐIøÝð 	ð 	ð 	à" 1œÔ+¨AÔ.¨qÔ1ˆDØ% aœ=ˆGà�zŠz˜#‰Œ˜qÔ! WÒ,Ð,ð ���ð
 ˆNˆNˆNð	øøøs   ‚(+ «AA>Á9A>Á=A>Ú
importnoders   c                ó¾  — 	 |                      |¦  «        S # t          j        $ r4 t          ||| j        ¦  «        rY d S |                      d|¬¦  «         Y �nt          j        $ r;}d|›d|j        › d�}|                      d|j        |t          ¬¦  «         Y d }~nÀd }~wt          j
        $ r‘ | j                             d¦  «        sY d S t          ||| j        ¦  «        rY d S | j        j        j        st          |¦  «        rY d S t!          ||¦  «        }|                      dt#          |¦  «        |¬	¦  «         Y nt$          $ r}t          j        |‚d }~ww xY wd S )
NrÍ   r{  zCannot import z	 due to 'ú'zsyntax-error)Úliner  Ú
confidencerÉ   rC  )Údo_import_modulert   ÚTooManyLevelsErrorrƒ   r  r  ÚAstroidSyntaxErrorÚerrorÚlinenor   ÚAstroidBuildingErrorró   r  r  Úanalyse_fallback_blocksr   r   ÚreprÚ	ExceptionÚAstroidError)r  rÊ  rs   ÚexcÚmessageÚdotted_modnameÚes          re   rI  z#ImportsChecker._get_imported_moduleò  sÎ  € ð	.Ø×.Ò.¨wÑ7Ô7Ð7øÝÔ)ð 	Kð 	Kð 	KÝ% j°'¸4Ô;PÑQÔQð Ø�t�tØ×ÒÐ8¸zÐÑJÔJÐJÐJÑJÝÔ)ð 	ð 	ð 	ØG wÐGÐG¸3¼9ÐGÐGÐGˆGØ×ÒØ ZÔ%6¸WÕQUð ñ ô ð ð ð ð ð ð øøøøõ Ô+ð 	Yð 	Yð 	YØ”;×1Ò1°.ÑAÔAð Ø�t�tÝ% j°'¸4Ô;PÑQÔQð Ø�t�tà”KÔ&Ô>ðå*¨:Ñ6Ô6ðð �t�tå,¨Z¸ÑAÔAˆNØ×Ò˜^µ$°~Ñ2FÔ2FÈZÐÑXÔXÐXÐXÐXÝð 	.ð 	.ð 	.ÝÔ&¨AÐ-øøøøð	.øøøàˆtsD   ‚ —%E¿EÁEÁ'1BÂ,EÃEÃ% EÄ5EÄ?	EÅEÅEÚimportedmodnamec                ó´  — |                      ¦   «         j        }|                      ¦   «         j        }t          j                             t          j                             |¦  «        ¦  «        d         }	 t          j         	                    ||¦  «        }n# t          $ r Y nw xY w||k    r|                      d|¬¦  «         d	S t          j                             |¦  «        sñ|dk    r-|| j        vr$|                     dd¦  «        d         | j        |<   | j        j        j        }|                     |t'          ¦   «         ¦  «        }||vr|                     |¦  «         | j        |                              |¦  «         | j                             d|j        ¬¦  «        rt1          |¦  «        r$| j        |                              |¦  «         d	S d	S d	S )
z8Notify an imported module, used to analyze dependencies.r   rÖ   r{  r÷   r^   rˆ   rÏ   )rÍ  N)rw  ÚfilerT   r´   rµ   r¶   r·   rt   ÚmodutilsÚget_module_partr‚   r  Úis_stdlib_modulerü   Úrsplitró   r	  r¾   r‹   rø   r[  rù   r  rÓ  r   r  )r  rQ   rÝ  Úmodule_fileÚcontext_namerV   Údependencies_statÚimportedmodnamess           re   rM  z#ImportsChecker._add_imported_module  sð  € à—i’i‘k”kÔ&ˆØ—y’y‘{”{Ô'ˆÝŒw×Ò¥¤× 0Ò 0°Ñ =Ô =Ñ>Ô>¸qÔAˆð	Ý%Ô.×>Ò>Ø ñô ˆOˆOøõ ð 	ð 	ð 	ØˆDð	øøøð ˜?Ò*Ð*Ø×Ò˜]°ÐÑ6Ô6Ð6Ð6Ð6åÔ!×2Ò2°?ÑCÔCð 	Hà�zÒ!Ð! l¸$Ô:JÐ&JÐ&Jð 2>×1DÒ1DÀSÈ!Ñ1LÔ1LÈQÔ1O�Ô  Ñ.ð 6:´[Ô5FÔ5SÐØ0×;Ò;¸OÍSÉUÌUÑSÔSÐØÐ#3Ð3Ð3Ø ×$Ò$ \Ñ2Ô2Ð2ð Ô˜lÔ+×/Ò/°Ñ@Ô@Ð@Ø”;×1Ò1Ø d¤kð 2ñ ô ð Hå'¨Ñ-Ô-ðHð Ô$ \Ô2×6Ò6°ÑGÔGÐGÐGÐGð%	Hð 	HðHð Hs   Á6 B Â
B$Â#B$Úmod_pathc                ó  ‡‡— |gŠt          ‰t          j        j        j        ¦  «        rˆfd„‰j        D ¦   «         Šˆfd„| j        D ¦   «         }|r3|                      d‰| j        |d                  |d         f¬¦  «         dS dS )z0Check if the module has a preferred replacement.c                ó4   •— g | ]}‰j         › d |d         › �‘ŒS ©r^   r   )rs   ©rb   rT   rQ   s     €re   rA  z:ImportsChecker._check_preferred_module.<locals>.<listcomp><  s-   ø€ ÐNÐNÐN¸4˜dœlÐ6Ð6¨T°!¬WÐ6Ð6ÐNÐNÐNrg   c                ód   •— g | ],}‰D ]'}||k    s||                      d ¦  «        d         v ¯%|‘Œ(Œ-S rë  r  )rb   Úkr�   Úmod_compares      €re   rA  z:ImportsChecker._check_preferred_module.<locals>.<listcomp>?  s]   ø€ ð 
ð 
ð 
àØ"ð
ð 
ð à�CŠxˆxà�C—I’I˜c‘N”N 1Ô%Ð%Ð%ð ð &Ð%Ð%Ð%rg   rØ   r   rX  N)rn   rt   r   Únode_classesrr   rq   r  r  )r  rQ   rè  Úmatchesrï  s    `  @re   rH  z&ImportsChecker._check_preferred_module6  sÇ   øø€ ð  �jˆå�d�GœMÔ6ÔAÑBÔBð 	OØNÐNÐNÐNÀ4Ä:ÐNÑNÔNˆKð
ð 
ð 
ð 
àÔ+ð
ñ 
ô 
ˆð ð 	Ø×ÒØ"ØØÔ,¨W°Q¬ZÔ8¸'À!¼*ÐEð ñ ô ð ð ð ð	ð 	rg   c                ó–  — |j         }|D ]¾}t          |¦  «        s d S |d                              dd¬¦  «        }|d         }|d         }||k    rŒHt          |¦  «        dk    r0| j        du s	| j        du r|                      d|t          ¬¦  «         Œ‹t          |¦  «        d	k    r |                      d
||d         |f¬¦  «         Œ¿d S )Nr   r^   rˆ   )ÚmaxsplitéÿÿÿÿFrä   )rQ   rÎ  rI   rÑ   rX  )rq   rr  rã  r¥   r  r
  r  r   )r  rQ   rq   rT   Úsplitted_packagesrc  Úaliased_names          re   rE  z&ImportsChecker._check_import_as_renameQ  s  € Ø”
ˆØð 	ð 	ˆDÝ�t‘9”9ð Ø��à $ Q¤§¢¨s¸Q Ñ ?Ô ?ÐØ+¨BÔ/ˆKØ œ7ˆLØ˜lÒ*Ð*ØåÐ$Ñ%Ô%¨Ò*Ð*ØÔ,°Ð5Ð5ØÔ/°5Ð8Ð8à× Ò Ð!7¸dÍtÐ ÑTÔTÐTÐTÝÐ&Ñ'Ô'¨1Ò,Ð,Ø× Ò Ø0ØØ+¨AÔ.°Ð<ð !ñ ô ð øð!	ð 	rg   Nr·   rW   rX   rY   c           
     óÀ  — | j                              d¦  «        s| j                              d¦  «        sdS |                     ¦   «         }|                     ¦   «         }||fg}||ur|                     |df¦  «         |D ]\\  }}|j        D ]O\  }	}
t          |||	|||
¦  «        \  }}|�1|�/|dk    r|	n|
}	|                      |||	|j        ft          ¬¦  «         ŒPŒ]dS )zDCheck if a module with the same name is already imported or aliased.r_   rh   N)rQ   r  rÎ  )
ró   r  Úframerw  r¤   rq   r{   r  rm   r   )r  rQ   r·   rX   rø  rw  ÚcontextsÚknown_contextÚknown_levelrT   rZ   rv   rx   s                re   rD  zImportsChecker._check_reimporti  s/  € ð Œ{×-Ò-Øñ
ô 
ð 	à”+×0Ò0Ð1BÑCÔCð	ð ˆFà—
’
‘”ˆØ�yŠy‰{Œ{ˆØ˜E�NÐ#ˆØ�uÐÐØ�OŠO˜T 4˜LÑ)Ô)Ð)à*2ð 		ð 		Ñ&ˆM˜;Ø#œzð ð ‘��eÝ.Ø˜-¨¨x¸Àeñô ‘
��sð Ð$¨¨Ø#&¨,Ò#6Ð#6˜4˜4¸E�DØ×$Ò$Ø $¨d°EÔ4DÐ-EÕRVð %ñ ô ð øðð		ð 		rg   rÂ   r   r@  r!   Ú_dummyúLinterStats | Nonec                óÔ   — t          | j                             ¦   «         ¦  «        }|st          ¦   «         ‚t	          |¦  «        }|                     t          |¦  «        ¦  «         dS )z5Return a verbatim layout for displaying dependencies.N)r’   Ú_external_dependencies_infor    r   r¦   r¤   r   )r  rÂ   r@  rü  r®   Útree_strs         re   rþ   z,ImportsChecker._report_external_dependencies†  sa   € õ # 4Ô#C×#IÒ#IÑ#KÔ#KÑLÔLˆØð 	%Ý"Ñ$Ô$Ð$Ý" 8Ñ,Ô,ˆØ�Š•L Ñ*Ô*Ñ+Ô+Ð+Ð+Ð+rg   c                ó¤  — | j         j        j        }|r3| j         j        j        s0| j         j        j        s| j         j        j        st          ¦   «         ‚| j         j        j        }|rt          |||d¦  «         | j         j        j        }|rt          || j	        |d¦  «         | j         j        j        }|rt          || j
        |d¦  «         dS dS )r±   rš   z	external z	internal N)ró   r	  r¾   r  rù   Úext_import_graphÚint_import_graphr   rÇ   rÿ  Ú_internal_dependencies_info)r  rÂ   r@  rü  r®   r­   s         re   rÿ   z)ImportsChecker._report_dependencies_graph�  sî   € ð ”;Ô$Ô1ˆØð 	%ØŒKÔÔ+ð	%àŒ{Ô!Ô2ð	%ð Œ{Ô!Ô2ð	%õ
 #Ñ$Ô$Ð$Ø”;Ô%Ô2ˆØð 	6Ý˜ (¨D°"Ñ5Ô5Ð5Ø”;Ô%Ô6ˆØð 	WÝ˜ $Ô"BÀDÈ+ÑVÔVÐVØ”;Ô%Ô6ˆØð 	WÝ˜ $Ô"BÀDÈ+ÑVÔVÐVÐVÐVð	Wð 	Wrg   Úinternalc                ó0  — t          t          ¦  «        }| j        j        j                             ¦   «         D ]]\  }}|D ]U}| j                             ||¦  «        }|                     |¦  «        }|r|s|s|s||          	                    |¦  «         ŒVŒ^|S )z4Build the internal or the external dependency graph.)
r   rø   ró   r	  r¾   r    rü   Úgetrk  r[  )r  r  r   ÚimporteeÚ	importersÚimporterr9  Ú	is_insides           re   Ú_filter_dependencies_graphz)ImportsChecker._filter_dependencies_graph¥  s³   € å,7½Ñ,<Ô,<ˆØ#'¤;Ô#4Ô#A×#GÒ#GÑ#IÔ#Ið 	2ð 	2ÑˆH�iØ%ð 2ð 2�ØÔ*×.Ò.¨x¸ÑBÔB�Ø$×/Ò/°Ñ8Ô8�	Øð 2 ð 2°ð 2À8ð 2Ø˜(”O×'Ò'¨Ñ1Ô1Ð1øð	2ð
 ˆrg   c                ó.   — |                       d¬¦  «        S )zYReturn cached external dependencies information or build and
        cache them.
        F©r  ©r  r  s    re   rÿ  z*ImportsChecker._external_dependencies_info°  s   € ð
 ×.Ò.¸Ð.Ñ>Ô>Ð>rg   c                ó.   — |                       d¬¦  «        S )zYReturn cached internal dependencies information or build and
        cache them.
        Tr  r  r  s    re   r  z*ImportsChecker._internal_dependencies_info·  s   € ð
 ×.Ò.¸Ð.Ñ=Ô=Ð=rg   rN  c                óÊ   — |                      ¦   «         j        rd S |                      |¦  «        }|j        D ]*\  }}|dk    r|s|                      d|j        |¬¦  «         Œ+d S )Nri   rÓ   rC  )rw  r9  Ú_wildcard_import_is_allowedrq   r  rs   )r  rQ   rN  Úwildcard_import_is_allowedrT   r@  s         re   rS  z&ImportsChecker._check_wildcard_imports¾  s€   € ð �9Š9‰;Œ;Ôð 	àˆFà%)×%EÒ%EÀoÑ%VÔ%VÐ"Ø”zð 	Rð 	R‰GˆD�!Ø�sŠ{ˆ{Ð#=ˆ{Ø× Ò Ð!2¸¼ÈDÐ ÑQÔQÐQøð	Rð 	Rrg   c                ó>   — | j         j        j        o|d uod|j        v S )NÚ__all__)ró   r  Úallow_wildcard_with_allÚlocals)r  rN  s     re   r  z*ImportsChecker._wildcard_import_is_allowedÊ  s/   € àŒKÔÔ6ð 4Ø tÐ+ð4à˜_Ô3Ð3ð	
rg   c                ó  ‡ ‡— t          ‰                     ¦   «         t          j        ¦  «        rdS ˆfd„‰j        D ¦   «         }ˆ fd„|D ¦   «         }|r-‰                      dd                     |¦  «        ‰¬¦  «         dS dS )z=Check whether the import is made outside the module toplevel.Nc                óx   •— g | ]6}t          ‰t          j        ¦  «        r‰j        › d |d         › �n|d         ‘Œ7S rë  )rn   r   rr   rs   rì  s     €re   rA  z2ImportsChecker._check_toplevel.<locals>.<listcomp>Ø  s]   ø€ ð 
ð 
ð 
ð õ ˜d¥EÔ$4Ñ5Ô5ð�4”<Ð+Ð+ $ q¤'Ð+Ð+Ð+à˜!”Wð	
ð 
ð 
rg   c                ó&   •— g | ]}|‰j         v¯|‘ŒS ra   )rý   )rb   rT   r  s     €re   rA  z2ImportsChecker._check_toplevel.<locals>.<listcomp>â  s-   ø€ ð 
ð 
ð 
Ø¨T¸Ô9UÐ-UÐ-UˆDÐ-UÐ-UÐ-Urg   ræ   rB  rC  )rn   rl   r   rJ  rq   r  r£   )r  rQ   Úmodule_namesÚscoped_importss   ``  re   rF  zImportsChecker._check_toplevelÑ  sÊ   øø€ õ �d—j’j‘l”l¥E¤LÑ1Ô1ð 	ØˆFð
ð 
ð 
ð 
ð œ
ð
ñ 
ô 
ˆð
ð 
ð 
ð 
Ø)ð
ñ 
ô 
ˆð ð 	Ø×ÒØ)°·	²	¸.Ñ0IÔ0IÐPTð ñ ô ð ð ð ð	ð 	rg   ©ró   r"   r[   rÄ   )r[   rÄ   )r[   r  )r[   r#  )ró   r"   r“   r'  r[   rÄ   )r[   r-  )rQ   r7  r[   rÄ   )rQ   r<  r[   rÄ   )rQ   rP  r[   rÄ   )rQ   rf  r[   rÄ   )rQ   ru  r[   rÄ   )rQ   r   r[   rÄ   )rQ   r   r‡  rˆ  r[   rÄ   )rQ   r   rì   r‹  r[   r~   )r�  r7  r[   r‘  )rœ  r©  r�  r©  rŸ  r©  r[   rU   )rÇ  r   r[   rU   )rÊ  r   rs   rU   r[   rˆ  )rQ   r   rÝ  rU   r[   rÄ   )rQ   r   rè  rU   r[   rÄ   rj   )rQ   r   r·   rW   rX   rY   r[   rÄ   )rÂ   r   r@  r!   rü  rý  r[   rÄ   )r  r~   r[   r  )rQ   rP  rN  rˆ  r[   rÄ   )rN  rˆ  r[   r~   )<Ú__name__Ú
__module__Ú__qualname__Ú__doc__rT   r   ÚDEPRECATED_MODULE_MESSAGErè   ÚmsgsÚdefault_deprecated_modulesÚDEFAULT_PREFERRED_MODULESÚDEFAULT_STANDARD_LIBRARYÚDEFAULT_KNOWN_THIRD_PARTYÚoptionsr÷   r  r  r"  r&  r,  r/  r;  rO  rV  re  rt  Ú	visit_tryÚvisit_assignattrÚvisit_assignÚvisit_ifexpÚvisit_comprehensionÚ
visit_exprÚvisit_ifrx  Úvisit_classdefÚ	visit_forÚvisit_whilerR  rT  rK  rL  Ústaticmethodr�  rY  r›  rš  rI  rM  rH  rE  rD  rþ   rÿ   r  r   rÿ  r  rS  r  rF  ra   rg   re   rë   rë   E  sí  € € € € € ðð ð €DØ@ˆoÔ7Ð@¸4Ð@€DØ!#Ðð !à5ØØ&ð)ð	ð ð		
ð  à4ØØ6ð)ð	ð ð		
ð àØØ&ð9ð	ð ð
	
ð àØØ&ð9ð	ð ð
	
ð àØØ&ð9ð	ð ð
	
ð %à3ØØ&ð8ð	ð ð		
ð  à4ØØ&ð)ð	ð ð		
ð %àØØ&ð)ðð ð	
ð &à ØØ%ØRð	ð ð	
ð *à ØØ%ØTð	ð ð	
ðh€GðTLð Lð Lð LðVð Vð Vð Vð"ð ð ð ðKð Kð Kð Kð4ð 4ð 4ð 4ðð ð ð ð&ð &ð &ð &ð4ð 4ð 4ð 4ðBð Bð Bð Bð2Fð Fð Fð Fð8+ð +ð +ð +ð@#+ð #+ð #+ð #+ðN 1ð1€Ið 1Ð ð 1 <ð 1°+ð 1Ð@Sð 1ØØð+ð +ð +ð +ð, 0AÐ@€NÐ@�Y ðð ð ð ðXð Xð Xð Xðð ð ð ð&9ð 9ð 9ð 9ð2 ðXð Xð Xñ „\ðXðj<ð j<ð j<ð j<ðX|ð |ð |ð |ð|ð ð ð ð2ð ð ð ð@"Hð "Hð "Hð "HðHð ð ð ð6ð ð ð ð6  $Ø ð	ð ð ð ð ð:,ð ,ð ,ð ,ðWð Wð Wð Wð*	ð 	ð 	ð 	ð ð?ð ?ð ?ñ „_ð?ð ð>ð >ð >ñ „_ð>ð
Rð 
Rð 
Rð 
Rð
ð 
ð 
ð 
ðð ð ð ð ð rg   rë   ró   r"   c                óJ   — |                       t          | ¦  «        ¦  «         d S r  )Úregister_checkerrë   )ró   s    re   Úregisterr6  ì  s$   € Ø
×Ò�N¨6Ñ2Ô2Ñ3Ô3Ð3Ð3Ð3rg   )rQ   r   rR   rS   rT   rU   rV   rW   rX   rY   rZ   rW   r[   r\   )rQ   r   rs   rU   r|   r}   r[   r~   )r„   r…   r[   r†   r  )r“   r†   r”   rW   r[   rU   )r­   rU   r®   r¯   r[   rU   )
r­   rU   r®   r¯   rÂ   r   rÃ   rU   r[   rÄ   r  )Fr!  rz  r   r€  r  r´   r1  r   Úcollections.abcr   r   Ú	functoolsr   Útypingr   r	   r
   r   r   rt   r   Úastroid.nodes._base_nodesr   Úpylint.checkersr   r   Úpylint.checkers.utilsr   r   r   r   r   r   Úpylint.constantsr   Úpylint.exceptionsr   Úpylint.graphr   r   Úpylint.interfacesr   Úpylint.reporters.ureports.nodesr   r   r   Úpylint.typingr   Úpylint.utilsr    Úpylint.utils.linterstatsr!   Úpylint.lintr"   rU   r†   r0  r{   rƒ   r’   r¦   rÁ   rÇ   rè   Ú__annotations__r&  r'  r%  rë   r6  ra   rg   re   ú<module>rG     s»  ðð
 (Ð 'Ð 'à "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø #Ð #Ð #Ð #Ð #Ð #Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø %Ð %Ð %Ð %Ð %Ð %Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8à €€€Ø Ð Ð Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø .Ð .Ð .Ð .Ð .Ð .Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø "Ð "Ð "Ð "Ð "Ð "Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø $Ð $Ð $Ð $Ð $Ð $Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0àð %Ø$Ð$Ð$Ð$Ð$Ð$ð
 �3˜˜d 4¨¨S¨¤>Ô2°D¸´IÐ=Ô>Ð>Ô?€ð ˜xÐ(Øˆ|Ø(Ð)ØˆwØˆ}Ø0Ð0Ð0Øˆ{Ø8Ð8Ð8Ø7Ð7Ð7ðð ð ð"ð "Ð ðJ4ð 4ð 4ð 4ðn5ð 5ð 5ð 5ð*ð ð ð ðð ð ð ð ð(&ð &ð &ð &ð&Xð Xð Xð XðZ+ØØØØ>Ø	Ð4Ð5Ð6ð	ðZ+ð ð ðZ+ð ð ðZ+ð$ ð ð%Z+ð4 ð ð5Z+ð> ð ð?Z+ðH ð ðIZ+ðR ð ðSZ+ð\ ð ð]Z+ðh ð ðiZ+ðr ð ðsZ+ð~ ð ðZ+ðH ð ðIZ+ðR ð ðSZ+ð^ ð ð_Z+ðj ð ðkZ+€ð Zð Zð Zñ Zðz Ð Ø(Ð ØÐ ðdð dð dð dð d�_ kñ dô dð dðN4ð 4ð 4ð 4ð 4ð 4rg   