bg> UdZddlmZddlZddlZddlZddlZddlmZddlm Z m Z ddl m Z m Z mZmZmZddlZddlmZddlmZdd lmZmZdd lmZmZmZmZmZdd lmZdd l m!Z!m"Z"dd l#m$Z$ddl%m&Z&m'Z'm(Z(ddl)m*Z*ddl+m,Z,ddl-m.Z.e rddl/m0Z0ej1dkrddl2m3Z3nddl4m5Z3ee6eeee6e fee6ffZ7ddhdhdhdhdhhddhhdhdhd d! Z8dtd&Z9dud2Z:dvd6Z;dwd:Zd{dFZ?idGdHdIdJdKdLgifdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjZ@dkeAdl<dmZBdnZCdmZDGdodpeeZEd|dsZFdS)}z!Imports checkers for Python code.) annotationsN) defaultdict) ItemsViewSequence) TYPE_CHECKINGAnyDictListUnion)nodes) ImportNode) BaseCheckerDeprecatedMixin)get_import_namein_type_checking_blockis_from_fallback_block is_sys_guardnode_ignores_exception)EmptyReportError) DotBackend get_cycles)HIGH) ParagraphSection VerbatimText)MessageDefinitionTuple) IsortDriver) LinterStats)PyLinter))cached_property)cachedpropertyz tkinter.tixfpectloptparsezxml.etree.cElementTreeimp formatter>smtpdasynchatasyncoremacpath>binhexparsersymbollib2to3> typing.io typing.re distutils>uucginisaifcspwdcgitbchunkcryptpipessunauimghdrmsilibsndhdrxdrlibaudioopmailcapnntplib sre_parse telnetlib ossaudiodev sre_compile sre_constants) )rrr)r r)r r r)r r)r r)r r)r r)r r)r r)r rmodname str | Nonereturn list[str]c||dndfdttDS)zSplit the names of the given module into subparts. For example, _qualified_names('pylint.checkers.ImportsChecker') returns ['pylint', 'pylint.checkers', 'pylint.checkers.ImportsChecker'] N.cPg|]"}dd|dz#S)rVr)join).0inamess h/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/pylint/checkers/imports.py z$_qualified_names..`s2 B B B1CHHU1q1u9% & & B B B)splitrangelen)rQr]s @r^_qualified_namesrdWsH#*"5GMM#   2E B B B Bc%jj0A0A B B BBr`noder contextnodes.LocalsDictNodeNGnamestrbaselevel int | Nonealias9tuple[nodes.Import | nodes.ImportFrom | None, str | None]c |r|d|n| d}d}d}|jD] }||ur||ur|j|jkrAt|tjrDt fd|jDrd}n|jD]\} } | s | |krd}d}n|rnot|tjrR||j krG|jD];\} } |j d| krd}n#|dkr|| kr|s| sd}n| s | |krd}d}n<|rn |rtj ||s||fSd S) zEReturn the node where [base.] is imported or None if not found.rVNF reimportedc30K|]}|dkVdS)rN)r[inamefullnames r^ z$_get_first_import..xs,AAE8uQx'AAAAAAr`Tshadowed-import*NN) bodyscope fromlineno isinstancer Importanyr] ImportFromrkrQastroid are_exclusive) rerfrhrjrkrmfirstfoundmsg imported_nameimported_aliasrts @r^_get_first_importrcs$(1$TH E E C"" D==  ;;==DJJLL ( (U-=-O-O  eU\ * * AAAAU[AAAAA 16  - ~%-5*@*@ E+CE   u/ 0 0  ##5:[1M>em#E#Em#E#EEE $  M11!&2*82!%)mu.D.D $/E W*5$77cz :r`ignored_modules Sequence[str]boolct|D] }||vrdS t|rdSt|jtjrt |jrdSt|tS)NT) rdrr|parentr Ifrr ImportError)rerQr submodules r^_ignore_import_failurers &g..  ' '44 ( d##t$+ux((\$+-F-Ft !$ 4 44r`mod_files_listItemsView[str, set[str]] _ImportTreec8i}|D]\}}|gg}|dD]=}t|dtsJ|d|igf}>t|dtsJ|d||S)zGet a list of 2-uple (module, list_of_files_which_import_this_module), it will return a dictionary to represent this as a tree. rVrrY)rar|dict setdefaultlistextend)r tree_defsmodfilesreprefixs r^_make_tree_defsrs I$ U/8"oiinn 8 8Fd1gt,, , ,,7%%fr2h77DD$q'4((((( Qu r`data indent_strc0g}|}tt|dD]\}\}\}}|sdn%ddt|d}|||d|d } n>||d |d||t |d z kr|d } n|d } |r8t |tr#|t|| d |S)z3Return a string which represents imports as a tree.c|dS)Nrrr)xs r^z!_repr_tree_defs..s aPQdr`)keyrW(,)N z z\-rYz|  ) items enumeratesortedrZappendrcr|r_repr_tree_defs) rrlines nodes_itemsr\rsubr files_listsub_indent_strs r^rrsG E**,,K"+F;NN,S,S,S"T"T ? ? C#u$HRR*Hchhve}}.E.E*H*H*H   LLC..*.. / / /!NN LLZ==3==== > > >C $$q((($.!2!2!2$.!2!2!2  ?:c4(( ? LLn== > > > 99U  r`filenamedep_infodict[str, set[str]]ci}ttjtj|dd}|dt |D]Q\}}t |}d||<|||D] }||vrd||<||!Rt |D]-\}}t |D]}| ||.| |S),Write dependencies as a dot (graphviz) file.rLR)rankdirzURL="." node[shape="box"]rY) rospathsplitextbasenameemitrr emit_node emit_edgegenerate)rrdoneprinterrQ dependenciessorted_dependencies depmodnames r^_dependencies_graphrsR D))"'*:*:8*D*DEEaHRVWWWG LL,---!'(8(8!9!9..$\22W '"""- . .J%%#$Z !!*--- .%+8>>+;+;$<$<33 Ll++ 3 3G   gz 2 2 2 2 3   H % %%r`sectrgtypeNonecvt||}|t|d|fdS)zaGenerate a dependencies graph and add some information about it in the report's section. z"imports graph has been written to N)rrr)rrrr outputfiles r^ _make_graphrsD %Xx88JKK eSSzSSUVVWWWWWr`E0401zUnable to import %s import-errorz4Used when pylint has been unable to import a module. old_names)F0401zold-import-errorE0402)z2Attempted relative import beyond top-level packagerelative-beyond-top-levelzSUsed when a relative import tries to access too many levels in the current package.R0401)zCyclic import (%s) cyclic-importzBUsed when a cyclic import between two or more modules is detected.R0402)zUse 'from %s import %s' insteadconsider-using-from-importzEmitted 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)zWildcard import %swildcard-importz-Used when `from module import *` is detected.W0404)zReimport %r (imported line %s)rpz.Used when a module is imported more than once.W0406)zModule import itself import-selfz'Used when a module is importing itself.W0407)z!Prefer importing %r instead of %rpreferred-modulez?Used when a module imported has a preferred replacement module.W0410)z:__future__ import is not the first non docstring statementmisplaced-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 %swrong-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 groupedungrouped-importsz.Used when imports are not grouped by packages.C0413)z5Import "%s" should be placed at the top of the modulewrong-import-positionz%Used when code and imports are mixed.C0414)z-Import alias does not rename original packageuseless-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)zImport 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)zShadowed %r (imported line %s)rvzFUsed when a module is aliased with a name that shadows another import.z!dict[str, MessageDefinitionTuple]MSGSrr)enchantc&eZdZdZdZiejeZdZ de ddddfd e dd d dfd d ddddfdd ddddfdd ddddfde ddddfde ddddfddddddfddddddfd dddd!dff Z ded&Zdfd'Zdgd)Zdfd*Zdhd,Zdid/Zdjd1Zdkd3Zdid4Zdld6ZexZxZxZxZxZxZxZZdmd8Z e xZ!xZ"Z#dkd9Z$dkd:Z%dnd<Z&dod?Z'e(dpdBZ)dqdEZ*drdIZ+dsdLZ,dtdNZ-dndOZ. dudvdTZ/dwd[Z0dwd\Z1dxd^Z2e3dgd_Z4e3dgd`Z5dydbZ6dzdcZ7dnddZ8dPS){ImportsCheckerzBaseChecker for import statements. Checks for * external modules dependencies * relative / wildcard imports * cyclic imports * uses of deprecated modules * uses of modules instead of preferred modules importsrrzdeprecated-modulescsvz zBDeprecated modules which should not be used, separated by a comma.)defaulttypemetavarhelpzpreferred-moduleszz?Couples of modules and preferred modules, separated by a comma.z import-graphrWrz zOutput 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).zext-import-graphzOutput a graph (.gv or any supported image format) of external dependencies to the given file (report RP0402 must not be disabled).zint-import-graphzOutput a graph (.gv or any supported image format) of internal dependencies to the given file (report RP0402 must not be disabled).zknown-standard-libraryzYForce import order to recognize a module as part of the standard compatibility libraries.zknown-third-partyzJForce import order to recognize a module as part of a third party library.zallow-any-import-levelzNList of modules that can be imported at any level, not just the top level one.zallow-wildcard-with-allFynzz8Allow wildcard imports from modules that define __all__.zallow-reexport-from-packagez:Allow explicit reexports by alias from a package __init__.linterrrSrctj||tt|_g|_d|_i|_t|_dd|j fdd|j ff|_ dS)NRP0401zExternal dependenciesRP0402zModules dependencies graph) r__init__rset import_graph_imports_stack_first_non_import_node _module_pkg_allow_any_import_level_report_external_dependencies_report_dependencies_graphreports)selfrs r^rzImportsChecker.__init__syT6***8CC8H8H<>&*#  25$ .0R S 3T5T U  r`ci|jj_|jj|j_tt|_i|_d|_tt|_|jj j |_ td|jj j D|_ t |jj j|_|jj j|_dS)4Called before visiting project (i.e set of modules).Fc3HK|]}d|v|dVdS):Nra)r[modules r^ruz&ImportsChecker.open..s@& & f}} LL  }}}& & r`N)rstatsrrrrr_current_module_package_excluded_edgesconfigr_ignored_modulesrpreferred_modulesallow_any_import_levelrallow_reexport_from_package_allow_reexport_packagers r^openzImportsChecker.opens)+ & K- ',,',$;Fs;K;K/3{/A/Q!%& & +,>& & & " "  (+4;+=+T'U'U$'+{'9'U$$$r`defaultdict[str, set[str]]ctj|j}|D](}|||j|)|SN)copydeepcopyrdifference_updater)rfiltered_graphres r^#_import_graph_without_ignored_edgesz2ImportsChecker._import_graph_without_ignored_edgessOt'899" O OD 4 2 243G3M N N N Nr`c|jdra|}t|}t ||D].}|dd|-dSdS)r r)verticesz -> )argsN)ris_message_enabledr!rr add_messagerZ)rgraphr#cycles r^closezImportsChecker.closes ; ) )/ : : K<<>>EE{{H#EH=== K K  v{{57I7I JJJJ  K K K Kr`set[str]ct|jjj}tD]*\}}|t jkr||}+|S)z*Callback returning the deprecated modules.) rrrdeprecated_modulesDEPRECATED_MODULESrsys version_infounion)rall_deprecated_modules since_versmod_sets r^r,z!ImportsChecker.deprecated_modulesse"%T[%7%J!K!K#5#;#;#=#= O O JS---)?)E)Eg)N)N&%%r`re nodes.Modulec|j|_dS)z.s000'$000r`rIr, r$reN)_check_reimport_check_import_as_rename_check_toplevelr]rcr&rZcheck_deprecated_module_check_preferred_module_get_imported_moduler|rr Module_check_positionrz_record_import_add_imported_modulerh)rrer]rhimported_modules r^ visit_importzImportsChecker.visit_import si T""" $$T*** T"""00TZ000 u::??   /dii6F6FT  R R R B BD  ( (t 4 4 4  ( (t 4 4 4"77dCCO$+u|44 +$$T***$**,, 55 ;##D/:::&  % %dO,@ A A A A B Br`nodes.ImportFromcX|j}|||}t||}|||||||||||||||| |||j | |t|j tjr||t|tjr||||dS|jD]G\}}|dkr!|||jd|,|||jHdS)z(Triggered when a from statement is seen.)rrkNrwrV)rQrErrA_check_misplaced_futurerCrD_check_wildcard_imports_check_same_line_importsr@rkrBr|rr rFrGrzrHr]rIrh)rrerrJ absolute_namerhr=s r^visit_importfromzImportsChecker.visit_importfrom"s<33D(CC'h77  $$T*** $$T*** $$T=999 $$T8444 $$T?;;; %%d+++ THDJGGG T""" dk5< 0 0 '   & & & djjllEL 1 1 7   o 6 6 6  " Fz F FGD!s{{))$?3G0P0P$0P0PQQQQ))$0DEEEE  F Fr`cV||\}}}t}t}d}||z|zD]\}} t|tjr|n|} | d\} } } |rd|| kr^| | vrZt |sKt|jtjrt|js| d|| | }|j d|j s| | g|_d|_dS)NrVrrer$)_check_imports_orderrr|r r partitionrrrrr&rr%r{addrr) rre std_imports ext_imports loc_imports met_importmet_fromcurrent_package import_node import_namemetr6r=s r^ leave_modulezImportsChecker.leave_module>sW040I0I$0O0O- [+ #uu  UU(3k(AK(O   $K(e6FGGW((ZC'11#66MGQ V#w..sNN.{;;#{158<<#%[%788 #  !4;W UUU%O;11#[%;  GGG     &*###r`nodes.If | nodes.Expr | nodes.Comprehension | nodes.IfExp | nodes.Assign | nodes.AssignAttr | nodes.TryExcept | nodes.TryFinallyc|jrdStjtjsdStjtjg}fd|D}|r:ttj tj frdSttj r"dj D}t|rdS|_dS)Nc4g|]}t||Srr)r|)r[allowedres r^r_z@ImportsChecker.compute_first_non_import_node..rs8   Zg5N5N    r`cg|]P}t|tjo3|jdo|jdQS)__)r|r AssignNamerh startswithendswith)r[targets r^r_z@ImportsChecker.compute_first_non_import_node..|sg65#344/K**400/K((..r`)rr|rr rF TryExcept TryFinallyr~nodes_of_classr}rAssigntargetsall)rrenested_allowedis_nested_allowed valid_targetss ` r^compute_first_non_import_nodez,ImportsChecker.compute_first_non_import_node^s  &  F$+u|44  F/5+;<    #1        u/? @ A A" "   F dEL ) ) #l M =!! &*###r`.s&00'$000000r`rYrprT)r] collectionsCounterrr&r{)rrer]counterrhcounts r^rPz'ImportsChecker._check_same_line_importss|00TZ000%e,,"==?? X XKD%qyy  Ddo?V WWW X Xr`r c|jrt|jd|jjr,|d||dS|jd|j|dSdS)zCheck `node` import or importfrom node position is correct. Send a message if `node` comes before another instruction rrTN)rrr%r{r& as_stringadd_ignored_messager7s r^rGzImportsChecker._check_positions  & {--')D)O   +$T^^=M=M! //+T_d  r`importedmodnodenodes.Module | NonecLt|tjr|j}n |r|jnd}|s,|jdddd}t|tjr|jpddkrd|z}|j ||fdS)z'Record the package `node` imports from.NrrVrY) r|r rrQrhr]rarkrr)rrer importednames r^rHzImportsChecker._record_imports dE, - - M.s???#3K;???r`c3BK|]}tj|VdSr)rr)r[r^res r^ruz5ImportsChecker._is_fallback_import..s0WW 7(d;;WWWWWWr`)r~)rers` r^_is_fallback_importz"ImportsChecker._is_fallback_imports<@?w???WWWWwWWWWWWr` _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|jj} |jD]$\} } | drd| ddz} n| dd} t | jtj  }|j d| j  }| | }| | f}|dvr| ||p|p| }|| |r|rT|sR|d| d| dd|dddf=|d kr| || ||s9|s| |n!|jd| j | |p| }|rT|sR|d| d | dd|dddf|d kr| || ||s9|s| |n!|jd| j | | }|rT|sR|d| d | dd|dddf|d krU| | | f|s<|s| | | f|jd| j | &|||fS)zChecks imports of module `node` are grouped by category. Imports must follow this order: standard, 3rd party, local rVrYrr>FUTURESTDLIBzstandard import ""rT THIRDPARTYzthird party import " FIRSTPARTYzfirst party import " LOCALFOLDER)rrrrrirar|rr rFr%r{ place_modulerrr&rr)rrrXthird_party_importsfirst_party_importsexternal_imports local_importsthird_party_not_ignoredfirst_party_not_ignoredlocal_not_ignored isort_driverrerQr6nestedignore_for_import_orderimport_categorynode_and_package_import wrong_imports r^rUz#ImportsChecker._check_imports_ordersI57 <><>9;68 @B@B:<"4;#566 !0M M MD'!!#&& 0 c 2 21 55!--,,Q/#DK>>>F*.+*H*H$do++' #+77@@O'+Wo #"666""#:;;;+).)( ++D,??$$,!C0@0@CCCA Q 2 < < > >AAA%!L00#**+BCCC ''(?@@@2/667NOOOO 770$/4 7K:K $$,!F4>>3C3CFFFA Q 2 < < > >AAA%!L00#**+BCCC ''(?@@@2/667NOOOO 770$/4 1 $$,!F4>>3C3CFFFA Q 2 < < > >AAA%!M11$$dG_5552)00$AAAA 770$/4,m;;r` importnoderQrRc ||S#tj$r4t|||jrYdS|d|Yntj$r;}d|d|jd}|d|j|tYd}~nd}~wtj $r|j dsYdSt|||jrYdS|j j jst|rYdSt!||}|dt#|| Ynt$$r}tj|d}~wwxYwdS) Nrr|zCannot import z due to ''z syntax-error)liner$ confidencerr?)do_import_modulerTooManyLevelsErrorrrr&AstroidSyntaxErrorerrorlinenorAstroidBuildingErrorrr%ranalyse_fallback_blocksrrrepr Exception AstroidError)rrrQexcmessagedotted_modnamees r^rEz#ImportsChecker._get_imported_moduleVs ...w77 7) K K K%j'4;PQQ tt   8z  J J J J J)   GwGG39GGGG   Z%6WQU         + Y Y Y;11.AA tt%j'4;PQQ ttK&> *:66 tt,ZAAN   ^$~2F2FZ  X X X X X . . .&A - .tsD%EEE'1B,E E% E5E? E EEimportedmodnameric|j}|j}tjtj|d} tj ||}n#t$rYnwxYw||kr| d|d Stj |s|dkr-||j vr$|ddd|j |<|jjj}||t'}||vr|||j|||jd|jrt1|r$|j||d Sd Sd S) z8Notify an imported module, used to analyze dependencies.rrr|rrVrYr)rN)rxfilerhrrrrrmodutilsget_module_partrr&is_stdlib_modulerrsplitrrrrrrWrr%rrr)rrer module_file context_namerjdependencies_statimportedmodnamess r^rIz#ImportsChecker._add_imported_modulevsiikk& yy{{' w 0 0 = =>>qA %.>>OO    D  ? * *   ]  6 6 6 6 6!22?CC Hz!!l$:J&J&J2>1D1DS!1L1LQ1O .6:[5F5S 0;;OSUUSS #333 $$\222  l + / / @ @ @;11dk2 H'-- H$\266GGGGG% H H H Hs6 B B$#B$mod_pathc|gttjjjrfdjDfd|jD}|r3|d|j|d|dfdSdS)z0Check if the module has a preferred replacement.c4g|]}jd|dSrVr)rQr[rhres r^r_z:ImportsChecker._check_preferred_module..s-NNN4dl66T!W66NNNr`cdg|],}D]'}||ks||ddv%|(-Srr )r[kr mod_compares r^r_z:ImportsChecker._check_preferred_module..s]   "  CxxCIIcNN1%%%  &%%%r`rrrTN)r|rr node_classesrr]rr&)rrermatchesrs ` @r^rDz&ImportsChecker._check_preferred_modules j dGM6A B B ONNNN4:NNNK    +        ",WQZ8'!*E        r`c|j}|D]}t|sdS|ddd}|d}|d}||krHt|dkr0|jdus |jdur|d|tt|d kr |d ||d|f dS) NrrVrY)maxsplitFr)rerrIrrT)r]rqrrcrrr&r)rrer]rhsplitted_packagesr_ aliased_names r^rAz&ImportsChecker._check_import_as_renames   Dt99  $QsQ ? ? +B/K7Ll**$%%**,55/588  !7dt TTTT&''1,,  0+A. <!!  r`Nrrkrlc |jds|jdsdS|d}|}||fg}||ur||df|D]\\}}|jD]O\} } t ||| ||| \} } | 1| /| dkr| n| } || || | jftP]dS)zDCheck if a module with the same name is already imported or aliased.rprvNT)future)rer$r) rr%framerxrr]rr&r{r) rrerrkrrxcontexts known_context known_levelrhrmrrs r^r@zImportsChecker._check_reimports5{--    +001BCC  F $ ''yy{{EN# u   OOT4L ) ) )*2   &M;#z   e.-xe s$#&,#6#644ED$$$dE4D-ERV%    r`rrr=r_dummyLinterStats | Nonect|j}|stt |}|t |dS)z5Return a verbatim layout for displaying dependencies.N)r_external_dependencies_inforrrrr)rrr=rrtree_strs r^rz,ImportsChecker._report_external_dependenciessa#4#C#I#I#K#KLL %"$$ $"8,, L**+++++r`c|jjj}|r3|jjjs0|jjjs|jjjst|jjj}|rt|||d|jjj}|rt||j |d|jjj}|rt||j |ddSdS)rrWz external z internal N) rrrrrext_import_graphint_import_graphrrr_internal_dependencies_info)rrr=rrrs r^rz)ImportsChecker._report_dependencies_graphs;$1 % K  + %{!2 %{!2 % #$$ $;%2  6 (D" 5 5 5;%6  W $"BD+ V V V;%6  W $"BD+ V V V V V W Wr`internalc0tt}|jjjD]]\}}|D]U}|j||}||}|r|s|s|s|| |V^|S)z4Build the internal or the external dependency graph.) rrrrrrrgetrirW)rrr'importee importersimporterr6 is_insides r^_filter_dependencies_graphz)ImportsChecker._filter_dependencies_graph s,7,<,<#';#4#A#G#G#I#I 2 2 Hi% 2 2*..xBB$//88 22282(O''111  2  r`c.|dS)zYReturn cached external dependencies information or build and cache them. Frrrs r^rz*ImportsChecker._external_dependencies_infos ...>>>r`c.|dS)zYReturn cached internal dependencies information or build and cache them. Trrrs r^rz*ImportsChecker._internal_dependencies_infos ...===r`rJc|jrdS||}|jD]*\}}|dkr|s|d|j|+dS)Nrwrr?)rxr6_wildcard_import_is_allowedr]r&rQ)rrerJwildcard_import_is_allowedrhr=s r^rOz&ImportsChecker._check_wildcard_imports"s 99;;   F%)%E%Eo%V%V"z R RGD!s{{#={  !2D QQQ R Rr`c>|jjjo |duod|jvS)N__all__)rrallow_wildcard_with_alllocals)rrJs r^rz*ImportsChecker._wildcard_import_is_allowed.s/ K  6 4t+ 4_33 r`cttjrdSfdjD}fd|D}|r-dd|dSdS)z=Check whether the import is made outside the module toplevel.Ncxg|]6}ttjrjd|dn|d7Sr)r|r rrQrs r^r_z2ImportsChecker._check_toplevel..<s]   $ 011 t| ' 'd1g ' ' 'a   r`c&g|] }|jv |Srr)r)r[rhrs r^r_z2ImportsChecker._check_toplevel..Ds-   T9U-U-UD-U-U-Ur`rr>r?)r|rzr rFr]r&rZ)rre module_namesscoped_importss`` r^rBzImportsChecker._check_toplevel5s djjllEL 1 1  F            )        ) .0I0IPT        r`rrrSr)rSr)rSr)rSr*)rer4rSr)rer9rSr)rerLrSr)rerbrSr)rervrSr)rer rSr)rer rrrSr)rer rrrSr)rr4rSr)rr rQrRrSr)rer rrirSr)rer rrirSrrx)rer rrRrkrlrSr)rrr=rrrrSr)rrrSr)rerLrJrrSr)rJrrSr)9__name__ __module__ __qualname____doc__rhrDEPRECATED_MODULE_MESSAGErmsgsdefault_deprecated_modulesDEFAULT_PREFERRED_MODULESDEFAULT_STANDARD_LIBRARYDEFAULT_KNOWN_THIRD_PARTYoptionsrrr!r)r,r8rKrRraruvisit_tryfinallyvisit_tryexceptvisit_assignattr visit_assign visit_ifexpvisit_comprehension visit_exprvisit_ifryvisit_classdef visit_for visit_whilerNrPrGrH staticmethodrrUrErIrDrAr@rrrr"rrrOrrBrrr`r^rrTs D @o7 @4 @D!# !5&)     46)     &9     &9     &9     %3&8     4&)     %&)     & %R     * %T    hGT     VVVV$ KKKK&&&&4444BBBB2FFFF8++++@&+&+&+&+`7TTTT T  T T T)8++++,0A@N@Y    XXXX&99992XXX\Xc<c<c<c>>_> R R R R    r`rrrcJ|t|dSr)register_checkerr)rs r^registerrNs$ N62233333r`)rQrRrSrT)rer rfrgrhrirjrRrkrlrmrRrSrn)rer rQrRrrrSr)rrrSrr)rrrrRrSri)rrirrrSri) rrirrrrrrirSrr)Grr{rrrrr.rcollections.abcrrtypingrrr r r rr astroid.nodes._base_nodesr pylint.checkersrrpylint.checkers.utilsrrrrrpylint.exceptionsr pylint.graphrrpylint.interfacesrpylint.reporters.ureports.nodesrrr pylint.typingr pylint.utilsrpylint.utils.linterstatsr pylint.lintrr/ functoolsr"astroid.decoratorsr#rirr-rdrrrrrrr__annotations__rrrrrrrr`r^r's (''"""""" ######////////8888888888888800000088888888/.....////////""""""LLLLLLLLLL000000$$$$$$000000%$$$$$$v)))))))DDDDDD 3d4S>2DI=>>? x(|()w}000{888777""J C C C C4444n5555,    (&&&&&XXXXZ+ > 456 Z+ Z+ Z+$ %Z+4 5Z+> ?Z+H IZ+R SZ+\ ]Z+h iZ+r sZ+~ Z+H IZ+R SZ+^ _Z+j kZ+ZZZZz(w w w w w _kw w w t444444r`