a XC?hX@sdZddlmZddlZddlZddlZddlZddlZddZGdddZ ddd d Z d d Z ddd dZ ddZ ddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Z d7d8Z!d9d:Z"d;d<Z#d=d>Z$d?d@Z%dAdBZ&dCdDZ'dEdFZ(dGdHZ)dIdJZ*dPdKdLZ+dMdNZ,e-dOkre,dS)QzK Collect various information about Python to help debugging test failures. )print_functionNcCs*|dur dSt|}tdd|}|S)Nz\s+ )strresubstrip)textr 4/opt/alt/python39/lib64/python3.9/test/pythoninfo.pynormalize_text s r c@s$eZdZddZddZddZdS) PythonInfocCs i|_dSN)infoselfr r r __init__szPythonInfo.__init__cCs\||jvrtd||dur"dSt|tsNt|ts>t|}|}|sNdS||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 .z(PythonInfo.get_infos..)ritemsrr r r get_infos*szPythonInfo.get_infosN)__name__ __module__ __qualname__rrrr r r r r sr  formattercCsH|D]>}t||d}|durq||}|dur8|||}|||qdSr )getattr)info_addobjZname_fmt attributesr!attrrnamer r r copy_attributes1s  r(cCs2zt||}Wnty"YdS0|||dSr r"AttributeError)r#r'modZ attr_namerr r r copy_attr<s  r,cCsHzt||}Wnty"YdS0|}|dur:||}|||dSr r))r#r'r+Z func_namer!funcrr r r call_funcDs r.cCsd}t|td|t|dtdt|dtdt}ttdrPd|tf}|d |d D]T}tt|}|durvq^t|d d}|sq^t|d d}|rd||f}|d ||q^ttd}|rd}nd}|d|dS)N) _frameworkabiflags api_versionbuiltin_module_names byteorderdont_write_bytecode executableflags float_infofloat_repr_style hash_info hexversionimplementationint_infomaxsize maxunicodepathplatformprefix thread_infoversion version_infoZwinverzsys.%szsys.androidapilevelZgetandroidapilevelzsys.windowsversionZgetwindowsversiongetfilesystemencodeerrorsz%s/%szsys.filesystem_encoding)stdinstdoutstderrencodingerrorszsys.%s.encodingZgettotalrefcountz$Yes (sys.gettotalrefcount() present)z#No (sys.gettotalrefcount() missing)Py_DEBUG)r(sysr.getfilesystemencodinghasattrrEr")r#r%rIr'streamrJrKrr r r collect_sysOs0       rPcCslddl}|}dtt|}|d||d||d|jddd|}|rh|d |dS) Nrrzplatform.architecturezplatform.python_implementationzplatform.platformT)Zaliasedz%s %szplatform.libc_ver)r@Z architecturejoinfilterboolZpython_implementationlibc_verr)r#r@ZarchrTr r r collect_platforms  rUcCsddl}|d|ddS)Nrzlocale.encodingF)localeZgetpreferredencoding)r#rVr r r collect_localesrWcCs$|dtd|dtddS)Nzbuiltins.float.float_formatfloatzbuiltins.float.double_formatZdouble)rX __getformat__)r#r r r collect_builtinssrZc Csddl}t|drzRz|d|jd}Wn,tyV}zd|}WYd}~n d}~00|d|Wn2ty}z|jtjkrWYd}~n d}~00dS)Nr getrandomzready (initialized)znot seeded yet (%s)z os.getrandom)osrNr[ GRND_NONBLOCKBlockingIOErrorOSErrorerrnoZENOSYS)r#r]stateexcr r r collect_urandoms  rdc Csddl}dd}d}t||d||ddD]}t|d|||q*dd }t|d |d |dt|d rz |}WntyYn 0|d |td}|jD]D\}} | } | |vs| ds| dr| dr|d|| qt|dr| d} | | |dd| dS)NrcSs&|dvrttdd|DS|SdS)N)supports_follow_symlinks supports_fdsupports_effective_idscss|] }|jVqdSr )r)rr-r r r rz2collect_os..format_attr..)rsortedr&rr r r format_attrszcollect_os..format_attr)r'supports_bytes_environrgrfrezos.%sr ) cpu_countgetcwdgetegidgeteuidgetgid getloadavg getresgid getresuidgetuidunamecSsdtt|S)N, )rQmapr)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.rNr|r` frozensetenvironrupper startswithendswithr) r#r]rkr%r-rzZloginZENV_VARSr'rrvmaskr r r collect_oss:     @   rcCsz ddl}Wnty YdS0ddl}|}z||}WntyVd}Yn0|d||durl|nd|dur~dSt|dr||j|j }d t t |}|d|dS)Nrzpwd.getpwuid(%s)z getgrouplistrwzos.getgrouplist) pwd ImportErrorr]rugetpwuidKeyErrorrNrZpw_nameZpw_gidrQrxr)r#rr]Zuidentryryr r r collect_pwd:s&     rcCsz ddl}Wnty YdS0dd}d}t||d||dt|ds|t|dd }d |vrj|d d nd |vr||d d dS) NrcSst|trd|S|SdS)Nz%#x)rrrjr r r rk[s z%collect_readline..format_attr)Z_READLINE_VERSIONZ_READLINE_RUNTIME_VERSION_READLINE_LIBRARY_VERSIONz readline.%sr r__doc__zlibedit readlinezreadline.libraryz GNU readline)readlinerr(rNr")r#rrkr%docr r r collect_readlineUs      rcCsnddl}z6|jgd|j|jdd}|d}|jr.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(rZ_create_default_https_contextZ_create_stdlib_contextrNrextendrr) r#r]rrrkr%r'ctxZ env_namespartsrr r r collect_ssls8         rcCsddl}|}|d|dS)Nrzsocket.hostname)socketZ gethostname)r#rZhostnamer r r collect_socketsrcCs8z ddl}Wnty YdS0d}t||d|dS)Nr)rCZsqlite_versionz sqlite3.%s)sqlite3rr()r#rr%r r r collect_sqlites   rcCs8z ddl}Wnty YdS0d}t||d|dS)Nr)Z ZLIB_VERSIONZZLIB_RUNTIME_VERSIONzzlib.%s)zlibrr()r#rr%r r r collect_zlib&s   rcCs<zddlm}Wnty$YdS0d}t||d|dS)Nr)expat)Z EXPAT_VERSIONzexpat.%s)Z xml.parsersrrr()r#rr%r r r collect_expat0s  rcCs8z ddl}Wnty YdS0d}t||d|dS)Nr)Z__libmpdec_version__z _decimal.%s)_decimalrr()r#rr%r r r collect_decimal:s   rcCsBz ddl}Wnty YdS0t|d|dt|d|ddS)Nrzpymem.allocatorZpymem_getallocatorsnamezpymem.with_pymallocZ WITH_PYMALLOC) _testcapirr.r,)r#rr r r collect_testcapiDs   rcCsrz ddl}Wnty YdS0ddt|D}|D]&}t||}||}|d||q8t|d|ddS)NrcSsg|]}|dr|qS)ZRLIMIT_r)rr&r r r Trz$collect_resource..z resource.%szresource.pagesizeZ getpagesize)resourcerdirr"Z getrlimitr.)r#rZlimitsr'rrr r r collect_resourceNs    rcCsJzddlm}Wnty$YdS0ddt|D}t||d|dS)Nr) test_socketcSsg|]}|dr|qS)ZHAVE_r)rr'r r r rds z'collect_test_socket..ztest_socket.%s)testrrrr()r#rr%r r r collect_test_socket]s  rcCsXzddlm}Wnty$YdS0d}t||d|t|d|dt|d|ddS) Nr)support)Z IPV6_ENABLEDztest_support.%sztest_support._is_gui_availableZ_is_gui_availablez test_support.python_is_optimizedZpython_is_optimized)rrrr(r.)r#rr%r r r collect_test_supportis rc Csddl}ddl}|d}|s"dSzddl}||}WntyR|}Yn0|dz|j||j|j dd}Wnt yYdS0| d}|j rdS| d}t|}|d|dS)Nrr~rTrz CC.version)rrrshlexsplitrappendrrZSTDOUTr`rrrr ) r#rrr~rargsrrGrr r r collect_ccvs2       rcCs@zddlm}Wnty$YdS0|ddtt|dS)Nr) _GDBM_VERSIONzgdbm.GDBM_VERSION.)Z_gdbmrrrQrxr)r#rr r r collect_gdbms  rcCsnzddlm}Wnty$YdS0|}t|D]4}||}t|D]}|d||ft||qHq4dS)Nr) get_configsz%s[%s])Z_testinternalcapirrrirepr)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 Csz ddl}Wnty YdS0t|ds0dS|d}|j}z |j}Wnty`d}Yn0||_d|_t |}|d|z"ddl }| t j }|d|WnttfyYn0ddl}z6|jgd|j|jd d d } | \} } | jrd } WntyYnp0| D]d} | } | d rP| d } | rz|d| n*| dr| d} | r|d| qz6|jdgd |j|jd d} | d} | jrd } WntyYdS0| } | d} | r|d| dS)NrWinDLLntdllzr zwindows.RtlAreLongPathsEnabledzwindows.dll_path)Zwmicr]getzCaption,Versionz/valueZoemT)rGrHrIrrzCaption=zwindows.version_captionzVersion=zwindows.versionZver)shellrGrHrz windows.ver)ctypesrrNrZc_ubyteRtlAreLongPathsEnabledr*ZrestypeargtypesrS_winapiZGetModuleFileNamerLZ dllhandlerrrrrr`rrr removeprefix) r#rrZBOOLEANrresrZdll_pathrroutputrHliner r r collect_windowssx                   rcCsz ddl}Wnty"d}Yn0|dur:t|d|dzJtddd}|}Wdn1sj0Y|r|d|WntyYn0dS)Nrzfips.openssl_fips_modeZ get_fips_modez/proc/sys/crypto/fips_enabledzutf-8)rIzfips.linux_crypto_fips_enabled)_hashlibrr.openrrstripr`)r#rfprr r r collect_fipss   * rcCsd}|j}ttttttttt t t t t ttttttttttttttttfD]`}z ||WqHtyd}td|j t!j"dt#j$t!j"dtt!j"dt!j"%YqH0qH|S)NFTzERROR: %s() failedfile)&rrdrZrrrrrrrrrWrrUrrrrrrrrPrrrrrrrr ExceptionprintrrLrH traceback print_excflush)rerrorr#Z collect_funcr r r collect_infosV%    rcCsjd}t|tdt|t|}t|}|D]$\}}|dd}td||fq:tdS)NzPython debug information= rz%s: %s)rlenrrirreplace)rrtitleZinfosrrr r r dump_infoFs   rcCs6t}t|}t||r2tdtjdtddS)Nz"Collection failed: exit with errorrr\)r rrrrLrHexit)rrr r r mainTs r __main__)N).rZ __future__rrarrLrrr r r(r,r.rPrUrWrZrdrrrrrrrrrrrrrrrrrrrrrrrrrrr rr r r r s\   9 #5       # H6