B O&`@shdZddlmZddlZddlZddlZddlZddlZddZGdddZ 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&dHdCdDZ'dEdFZ(e)dGkrde(dS)IzK Collect various information about Python to help debugging test failures. )print_functionNcCs*|dkr dSt|}tdd|}|S)Nz\s+ )strresubstrip)textr 4/opt/alt/python37/lib64/python3.7/test/pythoninfo.pynormalize_text s r c@s$eZdZddZddZddZdS) PythonInfocCs i|_dS)N)info)selfr 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..)r items)rr r r get_infos*szPythonInfo.get_infosN)__name__ __module__ __qualname__rrrr r r r r sr ) formattercCsLxF|D]>}t||d}|dkr q||}|dk r:|||}|||qWdS)N)getattr)info_addobjZname_fmt attributesrattrrnamer r r copy_attributes1s   r$cCs2yt||}Wntk r"dSX|||dS)N)rAttributeError)rr#modZ attr_namerr r r copy_attr<s r'cCsHyt||}Wntk r"dSX|}|dk r:||}|||dS)N)rr%)rr#r&Z func_namerfuncrr r r call_funcDsr)cCsd}t|td|t|dtdt|dtdt}ttdrPd|tf}|d |x\d D]T}tt|}|dkrxq`t|d d}|sq`t|d d}|rd||f}|d ||q`Wttd}|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)getfilesystemencodinghasattrr@r)rr!rDr#streamrErFrr r r collect_sysOs0        rKcCslddl}|}dtt|}|d||d||d|jddd|}|rh|d |dS) Nrrzplatform.architecturezplatform.python_implementationzplatform.platformT)Zaliasedz%s %szplatform.libc_ver)r;Z architecturejoinfilterboolZpython_implementationlibc_verr)rr;ZarchrOr r r collect_platforms  rPcCsddl}|d|ddS)Nrzlocale.encodingF)localeZgetpreferredencoding)rrQr r r collect_localesrRcCs$|dtd|dtddS)Nzbuiltins.float.float_formatfloatzbuiltins.float.double_formatZdouble)rS __getformat__)rr r r collect_builtinssrUc Csddl}dd}d}t||d||dt|d|dt|d |d t|d |d t|d |ddd}t|d|d|dt|dry |}Wntk rYn X|d|t|d|dt|d|dtd}xV|jD]H\}}| } | |ks| ds| dr| dr|d||qWt|drX| d} | | |dd | t|d!ryRy| d"|jd#} Wn,tk r} z d$| } Wdd} ~ XYnX|d%| Wn4tk r} z| jtjkrڂWdd} ~ XYnXdS)&NrcSs&|dkrttdd|DS|SdS)N)supports_follow_symlinks supports_fdsupports_effective_idscss|] }|jVqdS)N)r)rr(r r r sz2collect_os..format_attr..)rsorted)r"rr r r format_attrszcollect_os..format_attr)r#supports_bytes_environrXrWrVzos.%s)rzos.cwdgetcwdzos.uidgetuidzos.gidgetgidzos.unameunamecSsdtt|S)Nz, )rLmapr)groupsr r r format_groupssz!collect_os..format_groupsz os.groups getgroupsgetloginzos.loginz os.cpu_count cpu_countz os.loadavg 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 getrandomzready (initialized)znot seeded yet (%s)z os.getrandom)osr$r)rIreOSError frozensetenvironrupper startswithendswithrprq GRND_NONBLOCKBlockingIOErrorerrnoZENOSYS) rrsr[r!rcZloginZENV_VARSr#rr`maskstateexcr r r collect_ossR   ?      rcCsy ddl}Wntk r dSXdd}d}t||d||dt|ds|t|dd }d |krj|d d nd |kr||d d dS) NrcSst|trd|S|SdS)Nz%#x)rr)r"rr r r r[7s z%collect_readline..format_attr)Z_READLINE_VERSIONZ_READLINE_RUNTIME_VERSION_READLINE_LIBRARY_VERSIONz readline.%s)rr__doc__zlibedit readlinezreadline.libraryz GNU readline)readline ImportErrorr$rIr)rrr[r!docr r r collect_readline1s     rcCsnddl}y6|jdddg|j|jdd}|d}|jrr r r collect_gdbNs   rcCsxy ddl}Wntk r YnXd}t||d|y ddl}Wntk rTYn X|}|dd}|d|dS)Nr)Z TK_VERSIONZ TCL_VERSIONz tkinter.%sr patchlevelztkinter.info_patchlevel)_tkinterrr$tkinterZTclZcall)rrr!rZtclrr r r collect_tkinterbs   rc Csddl}|d|d}t||d|t|drxVdD]N}y&tjdd||}WdQRXWntk rvYq8X|d ||q8WdS) Nrz time.time)ZaltzoneZdaylightZtimezoneZtznameztime.%sget_clock_info)clockZ monotonicZ perf_counterZ process_timeZ thread_timetimeT)recordztime.get_clock_info(%s))rr$rIwarningscatch_warningsrr)rrr!rZ clock_infor r r collect_timeus  rcCs6y ddl}Wntk r dSX|d|jdS)Nrzdatetime.datetime.now)datetimerZnow)rrr r r collect_datetimes  rcCsHddl}x:dD]2}||}|dkr*|s*qt|}|d||qWdS)Nr)ZABIFLAGSANDROID_API_LEVELriZCCSHAREDrjZCFLAGSFORSHAREDZ CONFIG_ARGSZ HOST_GNU_TYPEZMACHDEPZ MULTIARCHZOPTZ PY_CFLAGSZPY_CFLAGS_NODISTZPY_CORE_LDFLAGSZ PY_LDFLAGSZPY_LDFLAGS_NODISTZPY_STDMODULE_CFLAGSrFZPy_ENABLE_SHAREDrmZSOABIr<rz sysconfig[%s]) sysconfigget_config_varr )rrr#rr r r collect_sysconfigs  rc Cs8ddl}y ddl}Wntk r(dSXy ddl}Wntk rNd}YnXdd}d}t||d||dxHd|fd|fd |ffD]"\}}d }t||d |d |qWd dg}|dk rt|dr| } | | d| dfxB|D]:}y|j |} Wnt k r wYnX|d|| qWdS)NrcSs|drd|S|SdS)NZOP_z%#8x)rx)r"rr r r r[s z collect_ssl..format_attr)ZOPENSSL_VERSIONZOPENSSL_VERSION_INFOZHAS_SNIZOP_ALLZ OP_NO_TLSv1_1zssl.%s)r SSLContextZdefault_https_contextZstdlib_context)Zminimum_versionZmaximum_versionZprotocolZoptionsZ verify_modezssl.z.%sZ OPENSSL_CONFZ SSLKEYLOGFILEget_default_verify_pathszssl.environ[%s]) rssslr_sslr$rZ_create_default_https_contextZ_create_stdlib_contextrIrextendrvKeyError) rrsrrr[r!r#ZctxZ env_namespartsrr r r collect_ssls8      rcCsddl}|}|d|dS)Nrzsocket.hostname)socketZ gethostname)rrZhostnamer r r collect_socketsrcCs8y ddl}Wntk r dSXd}t||d|dS)Nr)r>Zsqlite_versionz sqlite3.%s)sqlite3rr$)rrr!r r r collect_sqlites  rcCs8y ddl}Wntk r dSXd}t||d|dS)Nr)Z ZLIB_VERSIONZZLIB_RUNTIME_VERSIONzzlib.%s)zlibrr$)rrr!r r r collect_zlibs  rcCs<yddlm}Wntk r$dSXd}t||d|dS)Nr)expat)Z EXPAT_VERSIONzexpat.%s)Z xml.parsersrrr$)rrr!r r r collect_expat s rcCs8y ddl}Wntk r dSXd}t||d|dS)Nr)Z__libmpdec_version__z _decimal.%s)_decimalrr$)rrr!r r r collect_decimals  rcCsBy ddl}Wntk r dSXt|d|dt|d|ddS)Nrzpymem.allocatorZpymem_getallocatorsnamezpymem.with_pymallocZ WITH_PYMALLOC) _testcapirr)r')rrr r r collect_testcapi s  rcCsvy ddl}Wntk r dSXddt|D}x.|D]&}t||}||}|d||q:Wt|d|ddS)NrcSsg|]}|dr|qS)ZRLIMIT_)rx)rr"r r r 0sz$collect_resource..z resource.%szresource.pagesizeZ getpagesize)resourcerdirrZ getrlimitr))rrZlimitsr#rrr r r collect_resource*s    rcCsJyddlm}Wntk r$dSXddt|D}t||d|dS)Nr) test_socketcSsg|]}|dr|qS)ZHAVE_)rx)rr#r r r r@sz'collect_test_socket..ztest_socket.%s)testrrrr$)rrr!r r r collect_test_socket9s rcCsXyddlm}Wntk r$dSXd}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))rrr!r r r collect_test_supportEsrc Csddl}ddl}|d}|s"dSyddl}||}Wntk rT|}YnX|dy|j||j|j dd}Wnt k rdSX| d}|j rdS| d}t|}|d|dS)Nrriz --versionT)rBrCrz CC.version)rrrshlexsplitrappendrrZSTDOUTrtrrrr ) rrrrirargsrrBrr r r collect_ccRs0     rcCs@yddlm}Wntk r$dSX|ddtt|dS)Nr) _GDBM_VERSIONzgdbm.GDBM_VERSION.)Z_gdbmrrrLrar)rrr r r collect_gdbmus rcCsvyddlm}Wntk r$dSX|}xDt|D]8}||}x*t|D]}|d||ft||qLWq6WdS)Nr) get_configsz%s[%s])Z_testinternalcapirrrZrepr)rrZ all_configsZ config_typeZconfigrr r r collect_get_config~srcCsddl}t||dddS)Nrz subprocess.%s)Z_USE_POSIX_SPAWN)rr$)rrr r r collect_subprocesssrcCsd}|j}xttttttttt t t t t ttttttttttttfD]p}y ||WqBtk r}z@d}td|jtjdtj tjdttjdtj!Wdd}~XYqBXqBW|S)NFTzERROR: %s() failed)file)"rrrUrrRrPrrrrrKrrrrrrrrrrrrrrr ExceptionprintrrGrC traceback print_excflush)r errorrZ collect_funcrr r r collect_infosL      rcCsnd}t|tdt|t|}t|}x,|D]$\}}|dd}td||fqsT   9 #5       # 0