#eN0ndZddlZddlZddlZddlZddlZdZGddZdddZdZ ddd Z d Z d Z d Z d ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ d Z!d!Z"d"Z#d#Z$d$Z%d%Z&d&Z'd'Z(d(Z)d)Z*d*Z+d+Z,d,Z-d-Z.d.Z/d2d/Z0d0Z1e2d1k(re1yy)3zK Collect various information about Python to help debugging test failures. Ncl|yt|}tjdd|}|jS)Nz\s+ )strresubstrip)texts 6/opt/alt/python312/lib64/python3.12/test/pythoninfo.pynormalize_textr s1 | t9D 66&#t $D ::<ceZdZdZdZdZy) PythonInfoci|_yN)info)selfs r __init__zPythonInfo.__init__s  r c||jvrtd|z|yt|ts.t|ts t |}|j }|sy||j|<y)Nzduplicate key: %r)r ValueError isinstanceintrrrkeyvalues r addzPythonInfo.addsb $)) 0367 7 = %%eS)E KKME #r c||jjDcic]\}}|t|c}}Scc}}w)zU Get information as a key:value dictionary where values are strings. )ritemsrrs r get_infoszPythonInfo.get_infos)s537))//2CD2CJCSZ2CDDDs8N)__name__ __module__ __qualname__rrrr r rrs$Er r formattercd|D]+}t||d}|||z}| |||}|||-yr)getattr)info_addobjname_fmt attributesr$attrrnames r copy_attributesr-0sGT4( = $  dE*Eur cN t||}|||y#t$rYywxYwrr&AttributeError)r'r,mod attr_namers r copy_attrr3;s3Y' T5 s  $$cp t||}|}|||}|||y#t$rYywxYwrr/)r'r,r1 func_namer$funcrs r call_funcr7CsJsI& FE%  T5 s ) 55c<d}t|td|t|dtdt|dtdt|dtdtj}t td r|d tj }|d |d D]G}t t|}|t |d d}|s&t |dd}|r|d |}|d|z|It td}|rd}nd}|d|t td}|rd}nd}|d|y)N)_emscripten_info _frameworkabiflags api_versionbuiltin_module_names byteorderdont_write_bytecode executableflags float_infofloat_repr_style hash_info hexversionimplementationint_infomaxsize maxunicodepathplatform platlibdirprefix thread_infoversion version_infowinverzsys.%szsys.androidapilevelgetandroidapilevelzsys.windowsversiongetwindowsversionzsys.getrecursionlimitgetrecursionlimitgetfilesystemencodeerrors/zsys.filesystem_encoding)stdinstdoutstderrencodingerrorszsys.%s.encodinggettotalrefcountz$Yes (sys.gettotalrefcount() present)z#No (sys.gettotalrefcount() missing)zbuild.Py_DEBUG getobjectszYes (sys.getobjects() present)zNo (sys.getobjects() missing)zbuild.Py_TRACE_REFS)r-sysr7getfilesystemencodinghasattrrUr&) r'r*rZr,streamr[Py_DEBUGr Py_TRACE_REFSs r collect_sysrdNs*J6Hc8Z8 h-s4HI h,c3FG h/6IJ((*Hs/0&(E(E(GH &1-d# > 6:t4 40 "*F3H"T)84.s./H54 t$C.M/. "D)r cddl}|j}djtt|}|d||d|j |d|jdd|j zj}|r |d | |j}d D]}||vr|d |d ||y#t$rYywxYw) Nrrzplatform.architecturezplatform.python_implementationzplatform.platformT)aliasedz%s %szplatform.libc_ver)IDNAMEPRETTY_NAMEVARIANT VARIANT_IDVERSIONVERSION_CODENAME VERSION_IDz platform.freedesktop_os_release[]) rK architecturejoinfilterboolpython_implementationlibc_verrfreedesktop_os_releaseOSError)r'rKarchrt os_releasers r collect_platformrys  "D 88F4& 'D $d+ -  + + -/   t  ,.(++--446H$h/&446   C*$ 7uA>_ &      sC CCc:ddl}|d|jy)Nrzlocale.getencoding)locale getencoding)r'r{s r collect_localer}s !6#5#5#78r ct|dtjd|dtjdy)Nzbuiltins.float.float_formatfloatzbuiltins.float.double_formatdouble)r __getformat__)r's r collect_builtinsrs. *E,?,?,HI +U-@-@-JKr cddl}t|dr* |jd|jd}|d|yy#t$r}d|z}Yd}~d}~wwxYw#t $r(}|j t jk7rYd}~yd}~wwxYw)Nr getrandomzready (initialized)znot seeded yet (%s)z os.getrandom)osr`r GRND_NONBLOCKBlockingIOErrorrverrnoENOSYS)r'rstateexcs r collect_urandomrs r;  4 Q 0 01- ^U + # 4-3 4 yyELL() s8< A AA AAA B BBcpddl}d}d}t||d||dD]}t|d|z||d}t|d|d |t|d r |j }|d |t d }|jjD]Z\}} |j} | |vs5| jd s$| jds=| jdsO|d|z| \t|dr/|jd} |j| |dd| zyy#t $rYwxYw)NrcD|dvrttd|DS|S)N)supports_follow_symlinks supports_fdsupports_effective_idsc34K|]}|jywr)r).0r6s r z2collect_os..format_attr..s>dmms)rsortedr+rs r format_attrzcollect_os..format_attrs* . .v>>>? ?Lr )r,supports_bytes_environrrrzos.%sr#) cpu_countgetcwdgetegidgeteuidgetgid getloadavg getresgid getresuidgetuidprocess_cpu_countunamec@djtt|S)N, )rpmapr)groupss r format_groupsz!collect_os..format_groupssyyS&)**r z os.getgroups getgroupsgetloginzos.login)DAPPDATAAR ARCHFLAGSARFLAGSAUDIODEV BUILDPYTHONCCCFLAGSCOLUMNS COMPUTERNAMECOMSPECCPPCPPFLAGSDISPLAYDISTUTILS_DEBUGDISTUTILS_USE_SDKDYLD_LIBRARY_PATHENSUREPIP_OPTIONS HISTORY_FILEHOME HOMEDRIVEHOMEPATH IDLESTARTUPLANGLDFLAGSLDSHAREDLD_LIBRARY_PATHLINESMACOSX_DEPLOYMENT_TARGETMAILCAPS MAKEFLAGSMIXERDEVMSSDKPATHPATHEXTPIP_CONFIG_FILEPLATPOSIXLY_CORRECT PY_SAX_PARSER ProgramFileszProgramFiles(x86)RUNNING_ON_VALGRIND SDK_TOOLS_BINSERVER_SOFTWARESHELLSOURCE_DATE_EPOCH SYSTEMROOTTEMPTERM TILE_LIBRARYTMPTMPDIRTRAVISTZ USERPROFILE VIRTUAL_ENVWAYLAND_DISPLAYWINDIR_PYTHON_HOSTRUNNER_PYTHON_HOST_PLATFORM_PYTHON_PROJECT_BASE_PYTHON_SYSCONFIGDATA_NAME__PYVENV_LAUNCHER__ ASAN_OPTIONS LSAN_OPTIONS MSAN_OPTIONS TSAN_OPTIONS UBSAN_OPTIONS)PYTHONLC_VS COMNTOOLSzos.environ[%s]umaskzos.umaskz0o%03o) rr-r7r`rrv frozensetenvironrupper startswithendswithr) r'rrr*r6rloginENV_VARSr,rrmasks r collect_osrsL JHb':M  (GdNB5 +hK=Qr: (KKME Z ' GGHPzz'') e  X 01%%..*E %,e 4*r7xx{ X_-{   sD)) D54D5cv ddl}ddl}|j} |j |}|d|z||nd|yt |drO|j|j|j}djtt|}|d|yy#t$rYywxYw#t $rd}YwxYw)Nrzpwd.getpwuid(%s)z getgrouplistrzos.getgrouplist) pwd ImportErrorrrgetpwuidKeyErrorr`rpw_namepw_gidrprr)r'rruidentryrs r collect_pwdrbs ))+C S!  $'U\; } r>" =3sF+,"F+#%  s"BB* B'&B'* B87B8c ddl}d}d}t||d||t|ds*t |dd}d |vr |d d yd |vr |d d yyy#t$rYywxYw) Nrc0t|trd|zS|S)Nz%#x)rrrs r rz%collect_readline..format_attrs eS !5= Lr )_READLINE_VERSION_READLINE_RUNTIME_VERSION_READLINE_LIBRARY_VERSIONz readline.%sr#r __doc__zlibedit readlinezreadline.libraryz GNU readline)readlinerr-r`r&)r'rrr*docs r collect_readliner}s J Hh z)+ 88 9h 2.  $ '); < s " ' 8# :# sA AAcddl} |jgd|j|jd}|jd}|jry |j d}|d|y#t $rYywxYw)Nr)gdbz-nx --versionTrXrYuniversal_newlines gdb_version) subprocessPopenPIPE communicate returncoderv splitlines)r'rprocrOs r collect_gdbrs  ;'1'137 9""$Q' ??    "1%G ]G$ sA A// A;:A;c ddl}d}t||d| ddl}|j }|j dd}|d|y#t$rY&B >B B  BBcH ddl}t|d|dy#t$rYywxYw)Nrzcurses.ncurses_versionncurses_version)cursesrr3)r'r=s r collect_cursesr>s0h0&:KL s  !!cn ddl}|d|jjy#t$rYywxYw)Nrzdatetime.datetime.now)datetimernow)r'r@s r collect_datetimerBs: $h&7&7&;&;&=> s ( 44cPddl}|d|jdD]2}|j|}|dk(r|st|}|d|z|4|jd}|xrd|v}|rd}nd }|d |d D]&}|j|}|rd }nd }|d||(y)Nrzsysconfig.is_python_build)ABIFLAGSANDROID_API_LEVELrCCSHAREDrCFLAGSFORSHARED CONFIG_ARGS HOSTRUNNER HOST_GNU_TYPEMACHDEP MULTIARCHOPTPGO_PROF_USE_FLAG PY_CFLAGSPY_CFLAGS_NODISTPY_CORE_LDFLAGS PY_LDFLAGSPY_LDFLAGS_NODISTPY_STDMODULE_CFLAGSrbPy_ENABLE_SHAREDPy_NOGILrSOABI abs_builddir abs_srcdirrMsrcdirrEz sysconfig[%s]rOz-DNDEBUGz!ignore assertions (macro defined)z$build assertions (macro not defined)z build.NDEBUG)WITH_DOC_STRINGS WITH_DTRACEWITH_FREELISTS WITH_PYMALLOC WITH_VALGRINDYesNozbuild.) sysconfigis_python_buildget_config_varr )r'rbr,rrONDEBUGr s r collect_sysconfigrfs ()*C*C*EF<((. & &u u%4'/GJ((5I3J)3F 24 ^D!((. DD6$$'r cddl} ddl} ddl}d}d}t ||d||d|j |j fd|jfd|jffD]\}}d }t ||d |d |d d g}|5t|dr)|j} |j| d| df|D]} |j|} |d|z|  y#t$rYywxYw#t$rd}YwxYw#t$rYMwxYw)Nrc2|jdrd|zS|S)NOP_z%#8x)rrs r rz collect_ssl..format_attr:s ??5 !E> !Lr )OPENSSL_VERSIONOPENSSL_VERSION_INFOHAS_SNIOP_ALL OP_NO_TLSv1_1zssl.%sr# SSLContextdefault_https_contextstdlib_context)minimum_versionmaximum_versionprotocoloptions verify_modezssl.z.%s OPENSSL_CONF SSLKEYLOGFILEget_default_verify_pathszssl.environ[%s])rsslr_sslr-roPROTOCOL_TLS_CLIENT_create_default_https_context_create_stdlib_contextr`ryextendrr) r'rr{r|rr*r,ctx env_namespartsrs r collect_sslr/sP  JHc8Z;O s~~c&=&=>? #"C"C"EF 35578 c   #dV3'7D 1I GD*DE--/%(E!H-. JJt$E "T)51 S  P   s4CC.C? C+*C+. C<;C<? D  D c ddl} |j}|d|y#t$rYywxYw#ttf$rt j dk7rYywxYw)Nrzsocket.hostnamewasi)socketr gethostnamervr0r^rK)r'rhostnames r collect_socketrdsg.%%' "H-  ^ $ <<6 !  "s!0 --#AAcL ddl}d}t||d|y#t$rYywxYw)Nr)sqlite_versionz sqlite3.%s)sqlite3rr-)r'rr*s r collect_sqliterts3%JHg|Z@   ##cL ddl}d}t||d|y#t$rYywxYw)Nr) ZLIB_VERSIONZLIB_RUNTIME_VERSIONzzlib.%s)zlibrr-)r'rr*s r collect_zlibr~s3:JHdIz: rcP ddlm}d}t||d|y#t$rYywxYw)Nr)expat) EXPAT_VERSIONzexpat.%s) xml.parsersrrr-)r'rr*s r collect_expatrs3%$JHeZ<   %%cL ddl}d}t||d|y#t$rYywxYw)Nr)__libmpdec_version__z _decimal.%s)_decimalrr-)r'rr*s r collect_decimalrs3+JHh zB rc\ ddl}dD]}t|d|||y#t$rYywxYw)Nr)LONG_MAXPY_SSIZE_T_MAXPy_C_RECURSION_LIMIT SIZEOF_TIME_TSIZEOF_WCHAR_Tz _testcapi.) _testcapirr3)r'rr,s r collect_testcapirsA (j/DA s  ++cx ddl}t|d|ddD]}t|d|||y#t$rYywxYw)Nrzpymem.allocatorpymem_getallocatorsname)SIZEOF_PYGC_HEADSIZEOF_PYOBJECTz_testinternalcapi.)_testinternalcapirr7r3)r'rr,s r collect_testinternalcapirsV h)+<>WX (079JDQ  s - 99c ddl}t|Dcgc]}|jds|}}|D]+}t ||}|j |}|d|z|-t |d|dy#t$rYywxYwcc}w)NrRLIMIT_z resource.%szresource.pagesize getpagesize)resourcerdirrr& getrlimitr7)r'rr+limitsr,rrs r collect_resourcers #8} K}t 0Jd}F Kh%""3'%u- h+X}E LsA/A>A>/ A;:A;cddl} ddlm}t |Dcgc]}|j dr|}}t||d|y#t|jf$rYywxYwcc}w)Nr) test_socketHAVE_ztest_socket.%s)unittesttestrrSkipTestrrr-)r'rrr,r*s r collect_test_socketrso$ $'{#3/#34__W-#3J/Hk+;ZH ** +/sAAAAc ddlm}d}t||d|t |d|dt |d|d|d |j d |d |j d |d|j d y#t$rYywxYw)Nr)support) MS_WINDOWShas_fork_supporthas_socket_supporthas_strftime_extensionshas_subprocess_support is_android is_emscripten is_jythonis_wasiz support.%szsupport._is_gui_available_is_gui_availablezsupport.python_is_optimizedpython_is_optimizedz%support.check_sanitizer(address=True)T)addressz$support.check_sanitizer(memory=True))memoryz support.check_sanitizer(ub=True))ub)rrrr-r7check_sanitizer)r'rr*s r collect_supportrs  JHg|Z@ h3W>QR h5w@UV 4  $ $T $ 24 3  $ $D $ 13 /  $ $ $ -// sB B  B cx ddlm}dD]}t||}|d||!y#t$rYywxYw)Nr) os_helper) can_symlink can_xattr can_chmodcan_dac_overridezsupport_os_helper.) test.supportrrr&)r'rr,r6s r collect_support_os_helperrsL* y$'%dV,df5 s - 99c ddlm}d}t||d|dD]}t ||}|d||!y#t$rYywxYw)Nr) socket_helper) IPV6_ENABLEDhas_gethostnamezsupport_socket_helper.%s) tcp_blackholezsupport_socket_helper.)rrrr-r&)r'rr*r,r6s r collect_support_socket_helperrsd.JHm-GT}d+)$0$&9  s= A A cP ddlm}d}t||d|y#t$rYywxYw)Nr)threading_helper)can_start_threadzsupport_threading_helper.%s)rrrr-)r'rr*s r collect_support_threading_helperrs71JH.0MzZ rcddl}ddl}|jd}|sy ddl}|j |}|j d |j||j|jd}|jd}|jry|jd}t|}|d|y#t $r|j }YwxYw#t$rYywxYw)NrrrTrz CC.version)rrbrdshlexsplitrappendrrSTDOUTrvrrrr ) r'rrbrrargsrrXr s r collect_ccr$s  ! !$ 'B {{2 KK  '1'1'8'837 9    "F     q !D $ D \4 + xxz   s#B6)C6CC C! C!c | ddlm}|ddjt t |y#t$rYywxYw)Nr) _GDBM_VERSIONzgdbm.GDBM_VERSION.)_gdbmrrrprr)r'rs r collect_gdbmrGs;' #((3sM+B"CD  / ;;c  ddlm}|}t|D]2}||}t|D]}||d|dt ||4y#t$rYywxYw)Nr) get_configs[rn)rrrrrepr)r'r all_configs config_typeconfigrs r collect_get_configrPsf1-Kk* [)&>C c2D4E F"+ sA AAc(ddl}t||ddy)Nrz subprocess.%s)_USE_POSIX_SPAWN)rr-)r'rs r collect_subprocessr^sHj/;PQr ctjdk7ry ddl}t|dst |j d}|j } |j}||_d|_ t|}|d||jj}|j}||_d|_ |d| ddl}|j!tj"} |d | ddl} | j'gd | j(| j(d d } | j+\} } | j,rd} | j/D]}|j1}|j3dr,|j5dj1}|sF|d|P|j3dsb|j5dj1}|s|d| | j'dgd | j(| j(d } | j+d} | j,dk(ry| j,rd} | j1} | j/d}|r |d| ddl} |j;|j<d}d} |j?||\}}|jA| |d|rdydy#t$rd}Y^wxYw#t$rY'wxYw#ttf$rYwxYw#t6$rY.wxYw#t6$rYywxYw#|jA|wxYw#t6$rYywxYw)Nwin32rWinDLLntdllr"zzwindows.RtlAreLongPathsEnabledzwindows.is_adminzwindows.dll_path)wmicrgetzCaption,Versionz/valueoemT)rXrYrZr rzCaption=zwindows.version_captionzVersion=zwindows.versionver)shellrXrYr lBz windows.verz8SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock!AllowDevelopmentWithoutDevLicensezwindows.developer_modeenableddisabled)!r^rKctypesr`rrc_ubyteRtlAreLongPathsEnabledrestypeargtypesrrr0windllshell32 IsUserAnAdmin_winapiGetModuleFileName dllhandlerrrrrrrr removeprefixrvwinregOpenKeyHKEY_LOCAL_MACHINE QueryValueExCloseKey)r'rrBOOLEANrresr r r dll_pathrroutputrYlinerrsubkeyr value_types r collect_windowsrcs@ ||w6vx( )  g&.. 1%*%A%A ".5 " *.0 " +-/0C137--''-- ' !# #]_5 ,,S]];#X. 6 R'1'1).%)  + ))+ ??F%%'D::=L>c ddl}|t|d|d tdd5}|j j }dddr |d|yy#t$rd}Y_wxYw#1swY'xYw#t $rYywxYw)Nrzfips.openssl_fips_mode get_fips_modez/proc/sys/crypto/fips_enabledzutf-8)rZzfips.linux_crypto_fips_enabled)_hashlibrr7openrrstriprv)r'rfprs r collect_fipsr#s(4hP 1G D;;='')DE  5t <  E D    s9A A5A)A5 A&%A&)A2.A55 BBc:ddl}|d|jy)Nrztempfile.gettempdir)tempfile gettempdir)r'r%s r collect_tempfiler's "H$7$7$9:r c| ddlm}|ddj|j y#t$rYywxYw)Nr)utilszlibregrtests.build_infor)test.libregrtestr)rrpget_build_info)r'r)s r collect_libregrtest_utilsr,s=* &1E1E1G(HI rcd}|j}gttttt t tttttttttt t"t$t&t(t*t,t.t0t2t4t6t8t:t<t>t@tBtDtFtHD] } || |S#tJ$rd}tMd|jNztPjRtUjVtPjRtMtPjRtPjRjYYwxYw)NFTzERROR: %s() failedfile)-rrrrr>rBrrr#rrrr}rryrrrrrrrrdrfrrr'r:r)rrr,rrrrr Exceptionprintrr^rY traceback print_excflush)rerrorr' collect_funcs r collect_infor7s ExxH+  +  + + + + + + + + + + !+" #+$ %+& '+( )+* ++, -+. /+0 1+2 3+4 5+6 7+8 9+: !;+< =+> ?+@ A+B C+D E+F "G+L M+N O+P "Q+R &S+T )U+ X   "[+l L E &,*?*?@zz #   SZZ 0 szz " JJ     s.C::BF  F c d}t|tdt|zt|j}t|j }|D]'\}}|j dd}t|d|)y)NzPython debug information= rz: )r1lenrrrreplace)rr/titleinfosrrs r dump_infor?(sk &E %L #E  G NN E 5;;= !E U dC( #u%&r ct}t|}t||r;ttdtj t j dyy)Nz"Collection failed: exit with errorr.r)rr7r?r1r^rYexit)rr5s r mainrB5sA rBrfrrrrrrrrrrrrrrrrrrrr#r'r,r7r?rBrr"r r rDs9 EE:GK<@A*H"&J9 L &J.Z,69:%(8&H6M?>(B22j . A;=C B R F I/< 6 :& [ !FE GR cOL &; J:z ' zFr