e\SrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSr Sr Sr Sr Sr SrSr0rS r0rS rSS jr"S S 5r"SS5rSr\S:Xa \"5rgg!\a \"S5 gf=f)z3Find modules used by a script, using introspection.NcN[RU/5RU5 gN)packagePathMap setdefaultappend) packagenamepaths 2/opt/imh/python3.13/lib/python3.13/modulefinder.pyAddPackagePathrsk2.55d;cU[U'gr )replacePackageMap)oldnamenewnames rReplacePackager)s !(grct[RRR5 [RRR X5nUc[ SR US9US9eUR[RRLa SSSS[44$UR[RRLa SSSS[44$URnURRU5(a)S[RR!U5SS["44$[%UR[RR&5(a[(nO[%UR[RR*[RR,45(a[.nOF[%UR[RR05(a[2nO SSSS[444$[6R8"U5n[RR;U5SnXSUSU44$)zDAn importlib reimplementation of imp.find_module (for our purposes).NzNo module named {name!r})namerb) importlib machinery PathFinderinvalidate_caches find_spec ImportErrorformatloaderBuiltinImporter _C_BUILTINFrozenImporter _PY_FROZENorigin is_packageosrdirname_PKG_DIRECTORY isinstanceSourceFileLoader _PY_SOURCEExtensionFileLoaderAppleFrameworkLoader _C_EXTENSIONSourcelessFileLoader _PY_COMPILED _SEARCH_ERRORio open_codesplitext)rrspec file_pathkindfilesuffixs r _find_moduler?-s""446    ) ) 3 3D ?D |4;;;FTRR {{i))999TBJ/// {{i))888TBJ/// I {{d##RWW__Y/"b.1III$++y22CCDD     3 3    4 4     DKK!4!4!I!I J JTBM222 << "D WW  i ( ,F VT40 00rc$\rSrSrSSjrSrSrg)Module_NcRXlX lX0lSUl0Ul0Ulgr )__name____file____path____code__ globalnames starimports)selfrr=rs r__init__Module.__init__as,    rcSUR<3nURbUSUR<3-nURbUSUR<3-nUS-nU$)NzModule(, ))rDrErF)rJss r__repr__Module.__repr__nsR== * == $dmm--A == $dmm--A Gr)rGrErDrFrHrI)NN)rD __module__ __qualname____firstlineno__rKrQ__static_attributes__rrrArA_s  rrAc\rSrSrSSjrSrSrSrSrSr SS jr SS jr S r S r S S jrSrSrSrSrSSjrSrSrSrSrS!SjrSrSrSrSrSrg)" ModuleFinderwNcUc[RnXl0Ul0UlX lSUlUbUO/UlUbUO/Ul/Ulg)Nr) sysrmodules badmodulesdebugindentexcludes replace_pathsprocessed_paths)rJrr_rarbs rrKModuleFinder.__init__ysT <88D    $,$8b .;.G]R!rcXR::aW[UR5H n[SSS9 M [USS9 UHn[[ U5SS9 M [5 gg)N  end)r_ranger`printrepr)rJlevelstrargsiargs rmsgModuleFinder.msgsU JJ 4;;'e%( #3 d3iS) G rctUSnX R::a$URS-UlUR"U6 ggNrrr_r`rrrJrorms rmsginModuleFinder.msgin4Q JJ ++/DK HHdO rctUSnX R::a$URS- UlUR"U6 ggrurvrws rmsgoutModuleFinder.msgoutrzrcURSSU5 [R"U5nSS[4nUR SX!U5 SSS5 g!,(df  g=f)Nr run_scriptrr__main__)rrr7r8r0 load_module)rJpathnamefpstuffs rrModuleFinder.run_scriptsJ L(+ \\( #rz*E   Zu =$ # #s A Ac[RRU5up#[RRU5up4[R "U5nUS[ 4nURX5X5 SSS5 g!,(df  g=f)Nr)r+rsplitr9r7r8r0r)rJrdirrextrrs r load_fileModuleFinder.load_filesbGGMM(+ GG$$T*  \\( #r$ +E   Tx 7$ # #s A>> B cURSSXX45 URX$S9nURXQ5upgURXg5nU(dU$UR(aUR X5 g)Nr import_hookrm)rrdetermine_parentfind_head_package load_tailrFensure_fromlist) rJrcallerfromlistrmparentqtailms rrModuleFinder.import_hooksg M4A&&v&;((6 NN1 #H ::   -rc(URSSX5 U(aUS:XaURSS5 gURnUS:aUR(aUS-nUS:Xa*URUnXALdeURSSU5 U$UR S5U:a [ S5eSRURS5SU*5nURUnURSSU5 U$UR(a*URUnXLdeURSSU5 U$SU;aLURS5nUSUnURUnURU:XdeURSSU5 U$URSS5 g) Nrrzdetermine_parent -> Nonerzdetermine_parent ->.zrelative importpath too deep) rxr|rDrFr]countr"joinrrfind)rJrrmpnamerrps rrModuleFinder.determine_parents 1(&8! KK5 6 A: ze,''' A4f= {{3%'!"@AAHHU[[-gv67E\\%(F KK0& 9M ??\\%(F# ## KK0& 9M %< C A"1IE\\%(F??e+ ++ KK0& 9M A12rcURSSX5 SU;aURS5nUSUnX#S-SnOUnSnU(aUR<SU<3nOUnURXFU5nU(aUR SSXu45 Xu4$U(a4UnSnURXFU5nU(aUR SSXu45 Xu4$UR SSU5 [ SU-5e) Nrrrrrzfind_head_package ->"raise ImportError: No module namedNo module named )rxfindrD import_moduler|r")rJrrrpheadrqnamers rrModuleFinder.find_head_packages 1)68 $; #A8D!:DDD %5EE   tF 3 KK1A9 =7N EF""47A A5yAw A;UC,u455rcjURSSX5 UnU(aURS5nUS:a [U5nUSUX$S-Sp%UR<SU<3nUR XVU5nU(d!UR SSU5 [ SU-5eU(aMUR SSU5 U$) Nrrrrrrrz load_tail ->)rxrlenrDrr|r")rJrrrrprmnames rrModuleFinder.load_tails 1k1+  #A1u#d)abq4!:$ zz40E""42A ACUK!"4u"<==d A~q)rcPURSSXU5 UHnUS:Xa7U(d.URU5nU(aURXS5 M<M>M@[X5(aMRUR<SU<3nUR XFU5nU(aM[ SU-5e g)Nrr*rrr)rrfind_all_submodulesrhasattrrDrr")rJrr recursivesuballsubnamesubmods rrModuleFinder.ensure_fromlists %qI>Ccz 2215C,,QQ7!Q__%&ZZ5++C!<v%&87&BCCrc4UR(dg0n/nU[RRSS- nU[RRSS- nU[RR SS- nURH_n[ R"U5nUH?nSnUHn[U5n Xi*SU:XdMUSU *n O U(dM3US:wdM;XrU'MA Ma UR5$![a URSSU5 Mf=f)Nrzcan't list directoryrK) rFrrEXTENSION_SUFFIXESSOURCE_SUFFIXESBYTECODE_SUFFIXESr+listdirOSErrorrrrkeys) rJrr]suffixesrnamesrmodsuffns rr ModuleFinder.find_all_submodules szz I''::1==I''77::I''99!<<::C  3$DD ABCyD("3QBi % 33*,#&CL ||~ 2C8 sC66DDcURSSXU5 URUnURSSU5 U$![a Of=fX R;aURSS5 gU(a UR cURSS5 gUR UU=(a UR U5upVnO#![a URSSS5 gf=fURX%Xg5nU(aUR5 O!U(aUR5 ff=fU(a [X1U5 URSSU5 U$)Nrrzimport_module ->zimport_module -> None) rxr]r|KeyErrorr^rF find_moduler"rclosesetattr)rJpartnamefqnamerrrrrs rrModuleFinder.import_module)s8 1ox@  V$A KK-q 1H     __ $ KK2 3 foo- KK2 3 "&"2"28393Mfoov#W B%  KK-t 4    X=A    Fa ( A)1-s-: AA)B>>CC"D D&cUupVnURSSX=(a SU5 U[:Xa&URX5nURSSU5 U$U[:Xa[ UR 5US5n O`U[:XaTUR 5n [RRX05 [R"[U 5SS5n OSn UR!U5nX8lU (a9UR$(aUR'U 5n XlUR+X5 URSSU5 U$![a%n URSS[U 5-U5 eSn A ff=f)Nrrrzload_module ->execzraise ImportError: )rxr- load_packager|r0compilereadr5r_bootstrap_external _classify_pycr"rnmarshalloads memoryview add_modulerErbreplace_paths_in_coderG scan_code) rJrrr file_infor>modetypercodataexcs rrModuleFinder.load_moduleIs@&d 1mV[D(C > !!!&3A KK+Q /H : Hf5B \ ! wwy--;;D"Mz$/45BB OOF # !!//3J NN2 ! A'+  A4s3x?J s0E E4 E//E4cXR;a0URU'U(aSURUUR'gSURUS'g)Nr-)r^rD)rJrrs r_add_badmoduleModuleFinder._add_badmodulefsG  &$&DOOD ! 56DOOD !&// 2)*DOOD !# &rc XR;aURX5 gURXUS9 U(aGUH@nUS-U-nX`R;aURXb5 M-URXU/US9 MB gg![a8nUR SS[ U55 URXb5 SnAMSnAff=f![a7nUR SS[ U55 URX5 SnAgSnAf[ a7nUR SS[ U55 URX5 SnAgSnAff=f)Nrrrz ImportError:z SyntaxError:)r^rrr"rrrn SyntaxError)rJrrrrmrfullnamerrs r_safe_import_hookModuleFinder._safe_import_hookns) ?? "    -  >   T  7#C#czC/H??2++H= >((uE(J $'>NCH=++H==> . HHQC 1    - - . HHQC 1    - - .s;C*B C -B??C E-D E-EEc## [R"U5H nSU44v M [R"U5Hup#nUS:Xa SXB44v MSX4U44v M g7f)Nstorerabsolute_importrelative_import)dis_find_store_names _find_imports)rJrrrmrs r scan_opcodesModuleFinder.scan_opcodessf))"-DD7" ".%(%6%6r%: !Dz'()999'%4)@@@ &;sAAc"URnURnU"U5GHupVUS:XaUunSURU'M!US:XGa"UupSn Ub!SU;aSn UV s/sH oS:wdM U PM nn URXrUSS9 U (aSn UR(a+UR R URS-U-5n U cUR R U5n U blURRU R5 URRU R5 U RcSURU'GM2GM5SURU'GMGGMJUS:XaMUupnU(aURXrXS9 GMoURX,S9n URU RSUSS9 GM[U5e URH0n[U[U55(dMUR!X5 M2 gs sn f) Nrrrrrrrr)co_coderrHrrFr]getrDupdaterIrGr RuntimeError co_constsr.rr)rJrrcodescannerwhatrorr have_starfmmrmrcs rrModuleFinder.scan_codeszz##!"+JDw&' d#**!% 'h$% +3@8aCx8H@&&t&BBzz"\\--ajj3.>.EFz!\\--d3~ ,,R^^< ,,R^^<;;.23AMM$///0 d+%&**(,%**4H*J!2212BF**6??D(RS*T#4((Q&TA!T"X&&q$A As  H +H cURSSX5 [RU5nU(aUnURU5nX$lU/UlUR [ RU/5-UlURSUR 5upVnURXXg5 URSSU5 UU(aUR5 $$!U(aUR5 ff=f)NrrrKzload_package ->) rxrrrrErFr rrr|r)rJrrrrrbufrs rrModuleFinder.load_packages 1nf7#''/ F OOF # Z ZZ."4"4VR"@@ ))*ajjA    V 4 KK,a 0 r s &CC2cvXR;aURU$[U5=URU'nU$r )r]rA)rJrrs rrModuleFinder.add_modules7 \\ !<<' '#)&>1 VqrcUbURS-U-nOUnX@R;aURSSU5 [U5eUc,U[R ;a SSSS[ 44$URn[X5$)Nrrzfind_module -> Excludedr) rDrar|r"r\builtin_module_namesr&rr?)rJrrrrs rrModuleFinder.find_modules  s*4/HH }} $ KK4h ?d# # <s///dRZ$89999DD''rc 0[5 [SS-5 [SS-5 [URR55nUHZnURUnUR(a [SSS9 O [SSS9 [SU-UR =(d S 5 M\ UR 5upEU(aa[5 [S 5 UHFn[URUR55n[S US S RU55 MH U(al[5 [SSS9 [S5 UHFn[URUR55n[S US S RU55 MH gg)zPrint a report to stdout, listing the found modules with their paths, as well as modules that are missing, or seem to be missing. z %-25s %s)NameFile)----r Prgrhrz%-25srzMissing modules:?z imported fromrNz7Submodules that appear to be missing, but could also bez#global names in the parent package:N) rksortedr]rrFrEany_missing_mayber^r)rJrkeyrmissingmaybermodss rreportModuleFinder.reportsE  l--. l--.dll'')*C S!Azzcs#cs# 'C-!1r 2 //1  G $ %dood388:;c4$))D/B   G KQT U 7 8dood388:;c4$))D/B rc.UR5upX-$)zReturn a list of modules that appear to be missing. Use any_missing_maybe() if you want to know which modules are certain to be missing, and which *may* be missing. )r)rJrrs r any_missingModuleFinder.any_missings //1rc</n/nURHnX0R;aMURS5nUS:aURU5 M>X4S-SnUSUnURR U5nUbmX`RU;aURU5 MXWR ;aMUR(aURU5 MURU5 MURU5 M UR5 UR5 X4$)a~Return two lists, one with modules that are certainly missing and one with modules that *may* be missing. The latter names could either be submodules *or* just global names in the package. The reason it can't always be determined is that it's impossible to tell which names are imported when "from module import *" is done with an extension module, short of actually importing it. rrrN) r^rarr r]rrHrIsort)rJrrrrprpkgnamepkgs rrModuleFinder.any_missing_maybesOOD}}$ 3A1ut$Q34jG2AhG,,""7+Cood33NN4(/__LL&NN4(t$=$>   ~rc[RRUR5=p#URH-upEUR U5(dMXS[ U5S-n O UR(aaX0R;aRX#:waURSSU<SU<35 OURSSU<S35 URRU5 [UR5n[[ U55H6n[Xg[U55(dM!UR!Xg5Xg'M8 UR#[%U5US9$)Nrz co_filename z changed to z remains unchanged)r co_filename)r+rnormpathr!rb startswithrr_rcr|r listrrjr.rrreplacetuple)rJr new_filenameoriginal_filenamerrconstsrps rr"ModuleFinder.replace_paths_in_codeHs+-77+;+;BNN+KK &&DA ++A.. SVW#== ' ::+3G3GG0 A'8 HI A'8 ;<  ' '(9 :bll#s6{#A&)T"X.. 66vyA $zzE&M|zLLr)r^r_rar`r]rrcrb)NrNN)NNr)r)rr )rDrSrTrUrKrrrxr|rrrrrrrrrrrrrrrrrrrrrrVrWrrrYrYws "  > 8 !F66  D8@:+>4A/%b* ($ CD,\MrrYcSSKnUR[RSSS5upSnSn/n/nUH`upUS:XaUS-nUS:XaSnUS:Xa!XiR [ R5-nUS:XaSnUS:XdMOURU 5 Mb U(dS n OUSn [RSSn [ RRU 5U S'Xk-n US:a)[ S 5 U Hn [ S [U 55 M [XU5n USSHZnUS:XaSnM U(a5US SS :XaU RUSS SS/5 M6U RU5 MIU RU5 M\ U RU 5 U R!5 U $!URan[ U5 SnAgSnAff=f)Nrrzdmp:qx:z-dz-mz-pz-qz-xzhello.pyzpath:rfz.*r)getoptr\argverrorrkrr+pathsepr rr,rlrYrrrr)r.optsrorrr_domodsaddpathexcludeoascriptritemmfrqs rtestr;`s]]388AB<;  E FGG 9AIE 9F 9 33G 9E 9 NN1  a 88A;Dggoof%DG >D qy gD %d $ d7 +BABx $;F  23x4s3Bxu5s# LL MM&IIK Ig << c s%F""G2 GGrz [interrupted]r )__doc__rimportlib._bootstrap_externalrimportlib.machineryrr+r7r\r6r0r5r3r-r&r(r rrrr?rArYr;rDr:KeyboardInterruptrkrWrrr@s9 $        <)/1d0fMfMR8v z! V !  !sA##A43A4