U .c_Q@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)dNdIdJZ*dKdLZ+e,dMkr|e+dS)OzK Collect various information about Python to help debugging test failures. )print_functionNcCs*|dkr dSt|}tdd|}|S)Nz\s+ )strresubstrip)textr 4/opt/alt/python38/lib64/python3.8/test/pythoninfo.pynormalize_text s r c@s$eZdZddZddZddZdS) PythonInfocCs i|_dSN)infoselfr r r __init__szPythonInfo.__init__cCs\||jkrtd||dkr"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 .sz(PythonInfo.get_infos..)ritemsrr r r get_infos*szPythonInfo.get_infosN)__name__ __module__ __qualname__rrrr r r r r sr  formattercCsH|D]>}t||d}|dkrq||}|dk r8|||}|||qdSr )getattr)info_addobjZname_fmt attributesr attrrnamer r r copy_attributes1s  r'cCs4zt||}Wntk r$YdSX|||dSr r!AttributeError)r"r&modZ attr_namerr r r copy_attr<s r+cCsJzt||}Wntk r$YdSX|}|dk r<||}|||dSr r()r"r&r*Z func_namer funcrr r r call_funcDsr-cCsd}t|td|t|dtdt|dtdt}ttdrPd|tf}|d |d D]T}tt|}|dkrvq^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-getfilesystemencodinghasattrrDr!)r"r$rHr&streamrIrJrr r r collect_sysOs0       rOcCslddl}|}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?ZarchrSr r r collect_platforms  rTcCsddl}|d|ddS)Nrzlocale.encodingF)localeZgetpreferredencoding)r"rUr r r collect_localesrVcCs$|dtd|dtddS)Nzbuiltins.float.float_formatfloatzbuiltins.float.double_formatZdouble)rW __getformat__)r"r r r collect_builtinssrYc Csddl}t|drzPz|d|jd}Wn*tk rT}z d|}W5d}~XYnX|d|Wn0tk r}z|jtjkrW5d}~XYnXdS)Nr getrandomzready (initialized)znot seeded yet (%s)z os.getrandom)osrMrZ GRND_NONBLOCKBlockingIOErrorOSErrorerrnoZENOSYS)r"r\stateexcr r r collect_urandoms  rcc CsXddl}dd}d}t||d||dt|d|dt|d |d t|d |d t|d |ddd}t|d|d|dt|drz |}Wntk rYn X|d|t|d|dt|d|dtd}|jD]H\}}| } | |ks| ds| dr| dr|d||qt|drT| d} | | |dd | dS)!NrcSs&|dkrttdd|DS|SdS)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_environrfrerdzos.%srz os.getcwdgetcwdz os.getuidgetuidz os.getgidgetgidzos.unameunamecSsdtt|S)N, )rPmapr)groupsr r r format_groupssz!collect_os..format_groupsz os.getgroups getgroupsgetloginzos.loginz os.cpu_count cpu_countz os.getloadavg getloadavg)>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.umaskz%03o) r\r'r-rMrur_ frozensetenvironrupper startswithendswithr) r"r\rjr$rsZloginZENV_VARSr&rromaskr r r collect_ossB   @    rcCsz ddl}Wntk r"YdSXddl}|}z||}Wntk rZd}YnX|d||dk rp|nd|dkrdSt|dr||j|j }d t t |}|d|dS)Nrzpwd.getpwuid(%s)z getgrouplistrpzos.getgrouplist) pwd ImportErrorr\rmgetpwuidKeyErrorrMrZpw_nameZpw_gidrPrqr)r"rr\Zuidentryrrr r r collect_pwd5s&   rcCsz ddl}Wntk r"YdSXdd}d}t||d||dt|ds~t|dd }d |krl|d d nd |kr~|d d dS) NrcSst|trd|S|SdS)Nz%#x)rrrir r r rjVs z%collect_readline..format_attr)Z_READLINE_VERSIONZ_READLINE_RUNTIME_VERSION_READLINE_LIBRARY_VERSIONz readline.%srr__doc__zlibedit readlinezreadline.libraryz GNU readline)readlinerr'rMr!)r"rrjr$docr r r collect_readlinePs     rcCsrddl}z8|jdddg|j|jdd}|d}|jr>WdSWntk rVYdSX|d}|d|dS)NrZgdbz-nx --versionTrFrGZuniversal_newlinesZ gdb_version) subprocessPopenPIPE communicate returncoder_ splitlines)r"rprocrBr r r collect_gdbms    rcCsxz ddl}Wntk r YnXd}t||d|z ddl}Wntk rTYn X|}|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|drdD]N}z&tjdd||}W5QRXWntk rtYq6X|d ||q6dS) Nrz time.time)altzonedaylighttimezonetznameztime.%sget_clock_info)clock monotonic perf_counter process_time thread_timetimeT)recordztime.get_clock_info(%s))rr'rMwarningscatch_warningsrr)r"rr$rZ clock_infor r r collect_times rcCs8z ddl}Wntk r"YdSX|d|jdS)Nrzdatetime.datetime.now)datetimerZnow)r"rr r r collect_datetimes  rcCsDddl}dD]2}||}|dkr(|s(q t|}|d||q dS)Nr)ZABIFLAGSANDROID_API_LEVELryZCCSHAREDrzZCFLAGSFORSHAREDZ CONFIG_ARGSZ HOST_GNU_TYPEZMACHDEPZ MULTIARCHZOPTZ PY_CFLAGSZPY_CFLAGS_NODISTZPY_CORE_LDFLAGSZ PY_LDFLAGSZPY_LDFLAGS_NODISTZPY_STDMODULE_CFLAGSrJZPy_ENABLE_SHAREDr}ZSOABIr@rz sysconfig[%s]) sysconfigget_config_varr )r"rr&rr r r collect_sysconfigs  rc Cs4ddl}z ddl}Wntk r*YdSXz ddl}Wntk rPd}YnXdd}d}t||d||dd|fd|fd |ffD]"\}}d }t||d |d |qd dg}|dk rt|dr| } | | d| df|D]<}z|j |} Wnt k rYqYnX|d|| qdS)NrcSs|drd|S|SdS)NZOP_z%#8xrrir r r rjs z 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'rZ_create_default_https_contextZ_create_stdlib_contextrMrextendrr) r"r\rrrjr$r&ZctxZ env_namespartsrr r r collect_ssls8       rcCsddl}|}|d|dS)Nrzsocket.hostname)socketZ gethostname)r"rZhostnamer r r collect_socketsrcCs:z ddl}Wntk r"YdSXd}t||d|dS)Nr)rBZsqlite_versionz sqlite3.%s)sqlite3rr')r"rr$r r r collect_sqlites  rcCs:z ddl}Wntk r"YdSXd}t||d|dS)Nr)Z ZLIB_VERSIONZZLIB_RUNTIME_VERSIONzzlib.%s)zlibrr')r"rr$r r r collect_zlib!s  rcCs>zddlm}Wntk r&YdSXd}t||d|dS)Nr)expat)Z EXPAT_VERSIONzexpat.%s)Z xml.parsersrrr')r"rr$r r r collect_expat+s rcCs:z ddl}Wntk r"YdSXd}t||d|dS)Nr)Z__libmpdec_version__z _decimal.%s)_decimalrr')r"rr$r r r collect_decimal5s  rcCsDz ddl}Wntk r"YdSXt|d|dt|d|ddS)Nrzpymem.allocatorZpymem_getallocatorsnamezpymem.with_pymallocZ WITH_PYMALLOC) _testcapirr-r+)r"rr r r collect_testcapi?s  rcCstz ddl}Wntk r"YdSXddt|D}|D]&}t||}||}|d||q:t|d|ddS)NrcSsg|]}|dr|qS)ZRLIMIT_r)rr%r r r Os z$collect_resource..z resource.%szresource.pagesizeZ getpagesize)resourcerdirr!Z getrlimitr-)r"rZlimitsr&rrr r r collect_resourceIs   rcCsLzddlm}Wntk r&YdSXddt|D}t||d|dS)Nr) test_socketcSsg|]}|dr|qS)ZHAVE_r)rr&r r r r_s z'collect_test_socket..ztest_socket.%s)testrrrr')r"rr$r r r collect_test_socketXs rcCsZzddlm}Wntk r&YdSXd}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_supportdsrc Csddl}ddl}|d}|s"dSzddl}||}Wntk rT|}YnX|dz|j||j|j dd}Wnt k rYdSX| d}|j rdS| d}t|}|d|dS)NrryrTrz CC.version)rrrshlexsplitrappendrrZSTDOUTr_rrrr ) r"rrryrargsrrFrr r r collect_ccqs2     rcCsBzddlm}Wntk r&YdSX|ddtt|dS)Nr) _GDBM_VERSIONzgdbm.GDBM_VERSION.)Z_gdbmrrrPrqr)r"rr r r collect_gdbms rcCspzddlm}Wntk r&YdSX|}t|D]4}||}t|D]}|d||ft||qJq6dS)Nr) get_configsz%s[%s])Z_testinternalcapirrrhrepr)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}Wntk r"YdSXt|ds2dS|d}|j}z |j}Wntk rdd}YnX||_d|_t |}|d|z"ddl }| t j }|d|Wnttfk rYnXdS)NrWinDLLntdllzr zwindows.RtlAreLongPathsEnabledzwindows.dll_path)ctypesrrMrZc_ubyteRtlAreLongPathsEnabledr)ZrestypeZargtypesrR_winapiZGetModuleFileNamerKZ dllhandle)r"rrZBOOLEANrresrZdll_pathr r r collect_windowss,        rcCsd}|j}ttttttttt t t t t tttttttttttttttfD]p}z ||WqFtk r}z@d}td|jt j!dt"j#t j!dtt j!dt j!$W5d}~XYqFXqF|S)NFTzERROR: %s() failedfile)%rrcrYrrrrrrrrVrrTrrrrrrrrOrrrrrrrr ExceptionprintrrKrG traceback print_excflush)rerrorr"Z collect_funcrbr r r collect_infosT$   rcCsjd}t|tdt|t|}t|}|D]$\}}|dd}td||fq:tdS)NzPython debug information= rz%s: %s)rlenrrhrreplace)rrtitleZinfosrrr r r dump_infos   rcCs6t}t|}t||r2tdtjdtddS)Nz"Collection failed: exit with errorrr[)r rrrrKrGexit)rrr r r mains r__main__)N)-rZ __future__rr`rrKrrr r r'r+r-rOrTrVrYrcrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r sX   9~ #5       # 5