o =?h^@sdZddlmZddlZddlZddlZddlZddlZejdkZ ddZ GdddZ dd d d Z d d Z dd ddZddZddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Z d4d5Z!d6d7Z"d8d9Z#d:d;Z$dd?Z&d@dAZ'dBdCZ(dDdEZ)dFdGZ*dHdIZ+dJdKZ,dQdLdMZ-dNdOZ.e/dPkre.dSdS)RzK Collect various information about Python to help debugging test failures. )print_functionNZwin32cCs*|durdSt|}tdd|}|S)Nz\s+ )strresubstrip)textr 6/opt/alt/python310/lib64/python3.10/test/pythoninfo.pynormalize_texts r c@s$eZdZddZddZddZdS) PythonInfocCs i|_dSN)infoselfr r r __init__s zPythonInfo.__init__cCs\||jvr td||durdSt|ts't|tst|}|}|s'dS||j|<dS)Nzduplicate key: %r)r ValueError isinstanceintrr)rkeyvaluer r r adds    zPythonInfo.addcCsdd|jDS)zU Get information as a key:value dictionary where values are strings. cSsi|] \}}|t|qSr )r).0rrr r r 1z(PythonInfo.get_infos..)ritemsrr r r get_infos-szPythonInfo.get_infosN)__name__ __module__ __qualname__rrrr r r r r s r  formattercCsH|D]}t||d}|durq||}|dur|||}|||qdSr )getattr)info_addobjZname_fmt attributesr!attrrnamer r r copy_attributes4s   r(cCs2zt||}Wn tyYdSw|||dSr r"AttributeError)r#r'modZ attr_namerr r r copy_attr?s  r,cCsHzt||}Wn tyYdSw|}|dur||}|||dSr r))r#r'r+Z func_namer!funcrr r r call_funcGs r.c Csd}t|td|t|dtdt|dtdt}ttdr(d|tf}|d |d D]*}tt|}|dur;q/t|d d}|sDq/t|d d}|rRd||f}|d ||q/ttd}|rdd}nd}|d|ttd}|rud}nd}|d|dS)N) _frameworkabiflags api_versionbuiltin_module_names byteorderdont_write_bytecode executableflags float_infofloat_repr_style hash_info hexversionimplementationint_infomaxsize maxunicodepathplatform platlibdirprefix thread_infoversion version_infowinverzsys.%szsys.androidapilevelZgetandroidapilevelzsys.windowsversionZgetwindowsversiongetfilesystemencodeerrorsz%s/%szsys.filesystem_encoding)stdinstdoutstderrencodingerrorszsys.%s.encodingZgettotalrefcountz$Yes (sys.gettotalrefcount() present)z#No (sys.gettotalrefcount() missing)zbuild.Py_DEBUGZ getobjectszYes (sys.getobjects() present)zNo (sys.getobjects() missing)zbuild.Py_TRACE_REFS)r(sysr.getfilesystemencodinghasattrrGr") r#r%rKr'streamrLPy_DEBUGrZ Py_TRACE_REFSr r r collect_sysRs:         rRcCspddl}|}dtt|}|d||d||d|jddd|}|r6|d |dSdS) Nrrzplatform.architecturezplatform.python_implementationzplatform.platformT)Zaliasedz%s %szplatform.libc_ver)r@Z architecturejoinfilterboolZpython_implementationlibc_verr)r#r@ZarchrVr r r collect_platforms  rWcCsddl}|d|ddS)Nrzlocale.encodingF)localeZgetpreferredencoding)r#rXr r r collect_localesrYcCs$|dtd|dtddS)Nzbuiltins.float.float_formatfloatzbuiltins.float.double_formatZdouble)rZ __getformat__)r#r r r collect_builtinssr\c Csddl}t|drNz*z |d|jd}Wnty+}z d|}WYd}~nd}~ww|d|WdStyM}z|jtjkrBWYd}~dSd}~wwdS)Nr getrandomzready (initialized)znot seeded yet (%s)z os.getrandom)osrOr] GRND_NONBLOCKBlockingIOErrorOSErrorerrnoZENOSYS)r#r_stateexcr r r collect_urandoms$  rfc Csddl}dd}d}t||d||ddD] }t|d|||qdd }t|d |d |dt|d rHz|}Wn tyBYnw|d |td}|jD]"\}} | } | |vsl| dsl| drs| drs|d|| qQt|dr| d} | | |dd| dSdS)NrcSs"|dvrttdd|DS|S)N)supports_follow_symlinks supports_fdsupports_effective_idscss|]}|jVqdSr )r)rr-r r r sz2collect_os..format_attr..)rsortedr&rr r r format_attrszcollect_os..format_attr)r'supports_bytes_environrirhrgzos.%sr ) cpu_countgetcwdgetegidgeteuidgetgid getloadavg getresgid getresuidgetuidunamecSsdtt|S)N, )rSmapr)groupsr r r format_groupssz!collect_os..format_groupsz os.getgroups getgroupsgetloginzos.login)>APPDATAZARZ ARCHFLAGSZARFLAGSZAUDIODEVCCCFLAGSZCOLUMNSZ COMPUTERNAMEZCOMSPECZCPPZCPPFLAGSZDISPLAYZDISTUTILS_DEBUGZDISTUTILS_USE_SDKZDYLD_LIBRARY_PATHZENSUREPIP_OPTIONSZ HISTORY_FILEHOMEZ HOMEDRIVEZHOMEPATHZ IDLESTARTUPZLANGZLDFLAGSZLDSHAREDZLD_LIBRARY_PATHZLINESZMACOSX_DEPLOYMENT_TARGETZMAILCAPSZ MAKEFLAGSZMIXERDEVZMSSDKPATHZPATHEXTZPIP_CONFIG_FILEZPLATZPOSIXLY_CORRECTZ PY_SAX_PARSERZ ProgramFileszProgramFiles(x86)ZRUNNING_ON_VALGRINDZ SDK_TOOLS_BINZSERVER_SOFTWARESHELLSOURCE_DATE_EPOCHZ SYSTEMROOTZTEMPZTERMZ TILE_LIBRARYZ TIX_LIBRARYZTMPZTMPDIRZTRAVISZTZZ USERPROFILEZ VIRTUAL_ENVZWAYLAND_DISPLAYZWINDIRZ_PYTHON_HOST_PLATFORMZ_PYTHON_PROJECT_BASEZ_PYTHON_SYSCONFIGDATA_NAME__PYVENV_LAUNCHER__)ZPYTHONZLC_ZVSZ COMNTOOLSzos.environ[%s]umaskzos.umaskz0o%03o) r_r(r.rOr~rb frozensetenvironrupper startswithendswithr) r#r_rmr%r-r|ZloginZENV_VARSr'rrxmaskr r r collect_oss@     @   rcCszddl}Wn tyYdSwddl}|}z||}Wn ty+d}Ynw|d||dur6|nd|dur?dSt|dr[||j|j }d t t |}|d|dSdS)Nrzpwd.getpwuid(%s)z getgrouplistryzos.getgrouplist) pwd ImportErrorr_rwgetpwuidKeyErrorrOrZpw_nameZpw_gidrSrzr)r#rr_Zuidentryr{r r r collect_pwdFs,    rcCszddl}Wn tyYdSwdd}d}t||d||dt|dsAt|dd }d |vr6|d d dSd |vrC|d d dSdSdS) NrcSst|tr d|S|S)Nz%#x)rrrlr r r rmg z%collect_readline..format_attr)Z_READLINE_VERSIONZ_READLINE_RUNTIME_VERSION_READLINE_LIBRARY_VERSIONz readline.%sr r__doc__zlibedit readlinezreadline.libraryz GNU readline)readlinerr(rOr")r#rrmr%docr r r collect_readlineas$     rcCsnddl}z|jgd|j|jdd}|d}|jrWdSWn ty)YdSw|d}|d|dS)Nr)Zgdbz-nx --versionTrIrJZuniversal_newlinesZ gdb_version) subprocessPopenPIPE communicate returncoderb splitlines)r#rprocrDr r r collect_gdb~s     rcCsvzddl}Wn tyYn wd}t||d|zddl}Wn ty)YdSw|}|dd}|d|dS)Nr)Z TK_VERSIONZ TCL_VERSIONz tkinter.%sr patchlevelztkinter.info_patchlevel)_tkinterrr(tkinterZTclZcall)r#rr%rZtclrr r r collect_tkinters     rc Csddl}|d|d}t||d|t|drLdD]2}ztjdd ||}Wdn1s4wYWn tyCYqw|d ||qdSdS) Nrz time.time)altzonedaylighttimezonetznameztime.%sget_clock_info)clock monotonic perf_counter process_time thread_timetimeT)recordztime.get_clock_info(%s))rr(rOwarningscatch_warningsrr)r#rr%rZ clock_infor r r collect_times"   rcCs6zddl}Wn tyYdSw|d|jdS)Nrzdatetime.datetime.now)datetimerZnow)r#rr r r collect_datetimes   rcCstrdSddl}dD]}||}|dkr|sq t|}|d||q |d}|o.d|v}|r4d}nd}|d |d D]}||}|rId }nd }|d ||q=dS)Nr)ZABIFLAGSANDROID_API_LEVELrZCCSHAREDrZCFLAGSFORSHAREDZ CONFIG_ARGSZ HOST_GNU_TYPEZMACHDEPZ MULTIARCHZOPT PY_CFLAGSZPY_CFLAGS_NODISTZPY_CORE_LDFLAGSZ PY_LDFLAGSZPY_LDFLAGS_NODISTZPY_STDMODULE_CFLAGSrQZPy_ENABLE_SHAREDrZSOABIrBrz sysconfig[%s]rz-DNDEBUGz!ignore assertions (macro defined)z$build assertions (macro not defined)z build.NDEBUG)ZWITH_DOC_STRINGSZ WITH_DTRACEZWITH_FREELISTSZ WITH_PYMALLOCZ WITH_VALGRINDZYesZNozbuild.) MS_WINDOWS sysconfigget_config_varr )r#rr'rrZNDEBUGrr r r collect_sysconfigs,      rc Cs,ddl}zddl}Wn tyYdSwzddl}Wn ty&d}Ynwdd}d}t||d||dd||jfd|fd |ffD]\}}d }t||d |d |qId dg}|durwt |drw| } | | d| df|D]}z|j |} Wn t yYqyw|d|| qydS)NrcSs|dr d|S|S)NZOP_z%#8xrrlr r r rmrz collect_ssl..format_attr)ZOPENSSL_VERSIONZOPENSSL_VERSION_INFOZHAS_SNIZOP_ALLZ OP_NO_TLSv1_1zssl.%sr SSLContextZdefault_https_contextZstdlib_context)Zminimum_versionZmaximum_versionZprotocolZoptionsZ verify_modezssl.z.%sZ OPENSSL_CONFZ SSLKEYLOGFILEget_default_verify_pathszssl.environ[%s])r_sslr_sslr(rZPROTOCOL_TLS_CLIENTZ_create_default_https_contextZ_create_stdlib_contextrOrextendrr) r#r_rrrmr%r'ctxZ env_namespartsrr r r collect_ssls@        rcCs8zddl}Wn tyYdSw|}|d|dS)Nrzsocket.hostname)socketrZ gethostname)r#rZhostnamer r r collect_socket<s  rcC8zddl}Wn tyYdSwd}t||d|dS)Nr)rDZsqlite_versionz sqlite3.%s)sqlite3rr()r#rr%r r r collect_sqliteF  rcCr)Nr)Z ZLIB_VERSIONZZLIB_RUNTIME_VERSIONzzlib.%s)zlibrr()r#rr%r r r collect_zlibPrrcCs<zddlm}Wn tyYdSwd}t||d|dS)Nr)expat)Z EXPAT_VERSIONzexpat.%s)Z xml.parsersrrr()r#rr%r r r collect_expatZs rcCr)Nr)Z__libmpdec_version__z _decimal.%s)_decimalrr()r#rr%r r r collect_decimaldrrcCs4zddl}Wn tyYdSwt|d|ddS)Nrzpymem.allocatorZpymem_getallocatorsname) _testcapirr.)r#rr r r collect_testcapins   rcCsrzddl}Wn tyYdSwddt|D}|D]}t||}||}|d||qt|d|ddS)NrcSg|] }|dr|qS)ZRLIMIT_r)rr&r r r }rz$collect_resource..z resource.%szresource.pagesizeZ getpagesize)resourcerdirr"Z getrlimitr.)r#rZlimitsr'rrr r r collect_resourcews    rcCsJzddlm}Wn tyYdSwddt|D}t||d|dS)Nr) test_socketcSr)ZHAVE_r)rr'r r r rs z'collect_test_socket..ztest_socket.%s)testrrrr()r#rr%r r r collect_test_sockets rcCszddlm}Wn tyYdSwd}t||d|t|d|dt|d|d|d |jd d |d |jd d |d|jd ddS)Nr)support)Z IPV6_ENABLEDztest_support.%sztest_support._is_gui_availableZ_is_gui_availablez test_support.python_is_optimizedZpython_is_optimizedz*test_support.check_sanitizer(address=True)T)Zaddressz)test_support.check_sanitizer(memory=True))Zmemoryz%test_support.check_sanitizer(ub=True))Zub)rrrr(r.Zcheck_sanitizer)r#rr%r r r collect_test_supports$    rc Csddl}ddl}|d}|sdSz ddl}||}Wn ty)|}Ynw|dz |j||j|j dd}Wn t yFYdSw| d}|j rRdS| d}t|}|d|dS)NrrrTrz CC.version)rrrshlexsplitrappendrrZSTDOUTrbrrrr ) r#rrrrargsrrIrr r r collect_ccs6       rcCs@zddlm}Wn tyYdSw|ddtt|dS)Nr) _GDBM_VERSIONzgdbm.GDBM_VERSION.)Z_gdbmrrrSrzr)r#rr r r collect_gdbms  rcCsnzddlm}Wn tyYdSw|}t|D]}||}t|D]}|d||ft||q$qdS)Nr) get_configsz%s[%s])Z_testinternalcapirrrkrepr)r#rZ all_configsZ config_typeZconfigrr r r collect_get_configs   rcCsddl}t||dddS)Nrz subprocess.%s)Z_USE_POSIX_SPAWN)rr()r#rr r r collect_subprocesssrc Cszddl}Wn tyYdSwt|dsdS|d}|j}z|j}Wn ty0d}Yn w||_d|_t |}|d|zddl }| t j }|d|Wn ttfy]Ynwddl}z|jgd|j|jd d d } | \} } | jr|d } Wn tyYn3w| D]-} | } | d r| d } | r|d| q| dr| d} | r|d| qz|jdgd |j|jd d} | d} | jrd } Wn tyYdSw| } | d} | r|d| dSdS)NrWinDLLntdllzr zwindows.RtlAreLongPathsEnabledzwindows.dll_path)Zwmicr_getzCaption,Versionz/valueZoemT)rIrJrKrrzCaption=zwindows.version_captionzVersion=zwindows.versionZver)shellrIrJrz windows.ver)ctypesrrOrZc_ubyteRtlAreLongPathsEnabledr*ZrestypeargtypesrU_winapiZGetModuleFileNamerMZ dllhandlerrrrrrbrrr removeprefix) r#rrZBOOLEANrresrZdll_pathrroutputrJliner r r collect_windowss                     rcCszddl}Wn tyd}Ynw|durt|d|dz)tddd}|}Wdn1s5wY|rD|d|WdSWdStyPYdSw)Nrzfips.openssl_fips_modeZ get_fips_modez/proc/sys/crypto/fips_enabledzutf-8)rKzfips.linux_crypto_fips_enabled)_hashlibrr.openrrstriprb)r#rfprr r r collect_fips-s"   rcCsd}|j}ttttttttt t t t t ttttttttttttttttfD]/}z||Wq$tySd}td|j t!j"dt#j$t!j"dtt!j"dt!j"%Yq$w|S)NFTzERROR: %s() failedfile)&rrfr\rrrrrrrrrYrrWrrrrrrrrRrrrrrrrr ExceptionprintrrMrJ traceback print_excflush)rerrorr#Z collect_funcr r r collect_info@sX%    r cCsjd}t|tdt|t|}t|}|D]\}}|dd}td||fqtdS)NzPython debug information= rz%s: %s)rlenrrkrreplace)rrtitleZinfosrrr r r dump_infovs    rcCs:t}t|}t||rtdtjdtddSdS)Nz"Collection failed: exit with errorrr^)r r rrrMrJexit)rr r r r mainsr__main__r )0rZ __future__rrcrrMrrr@rr r r(r,r.rRrWrYr\rfrrrrrrrrrrrrrrrrrrrrrrrrr rrrr r r r sb    B >5       # H 6