
    5\hJq                        d Z ddlZddlZddlZddlZddlZd Z G d d          ZdddZd Z	dd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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'd' Z(d( Z)d) Z*d* Z+d+ Z,d, Z-d- Z.d. Z/d2d/Z0d0 Z1e2d1k    r e1             dS dS )3zK
Collect various information about Python to help debugging test failures.
    Nc                 |    | d S t          |           } t          j        dd|           } |                                 S )Nz\s+ )strresubstrip)texts    9/opt/python-3.11.14/usr/lib/python3.11/test/pythoninfo.pynormalize_textr      s8    |tt99D6&#t$$D::<<    c                        e Zd Zd Zd Zd ZdS )
PythonInfoc                     i | _         d S N)infoselfs    r
   __init__zPythonInfo.__init__   s    			r   c                     || j         v rt          d|z            |d S t          |t                    s<t          |t                    st	          |          }|                                }|sd S || j         |<   d S )Nzduplicate key: %r)r   
ValueError
isinstanceintr   r   )r   keyvalues      r
   addzPythonInfo.add   s    $)036777=F%%% 	eS)) #E

KKMME 	#r   c                 H    d | j                                         D             S )zU
        Get information as a key:value dictionary where values are strings.
        c                 4    i | ]\  }}|t          |          S  )r   ).0r   r   s      r
   
<dictcomp>z(PythonInfo.get_infos.<locals>.<dictcomp>-   s$    DDDJCSZZDDDr   )r   itemsr   s    r
   	get_infoszPythonInfo.get_infos)   s%     ED$)//2C2CDDDDr   N)__name__
__module____qualname__r   r   r"   r   r   r
   r   r      sF            $E E E E Er   r   	formatterc                v    |D ]5}t          ||d           }|||z  }| |||          } | ||           6d S r   )getattr)info_addobjname_fmt
attributesr'   attrr   names           r
   copy_attributesr0   0   si      T4((=$ IdE**Eu r   c                 d    	 t          ||          }n# t          $ r Y d S w xY w | ||           d S r   r)   AttributeError)r*   r/   mod	attr_namer   s        r
   	copy_attrr6   ;   sR    Y''   HT5    
!!c                    	 t          ||          }n# t          $ r Y d S w xY w |            }| ||          } | ||           d S r   r2   )r*   r/   r4   	func_namer'   funcr   s          r
   	call_funcr;   C   sr    sI&&   DFFE	%  HT5r7   c                    d}t          | t          d|           t          | dt          d           t          | dt          d           t          | dt          d           t          j                    }t	          t          d	          r|d
t          j                    } | d|           dD ]W}t          t          |          }|t          |dd           }|s.t          |dd           }|r|d
|} | d|z  |           Xt	          t          d          }|rd}nd} | d|           t	          t          d          }|rd}nd} | d|           d S )N)_emscripten_info
_frameworkabiflagsapi_versionbuiltin_module_names	byteorderdont_write_bytecode
executableflags
float_infofloat_repr_style	hash_info
hexversionimplementationint_infomaxsize
maxunicodepathplatform
platlibdirprefixthread_infoversionversion_infowinverzsys.%szsys.androidapilevelgetandroidapilevelzsys.windowsversiongetwindowsversionzsys.getrecursionlimitgetrecursionlimitgetfilesystemencodeerrors/zsys.filesystem_encoding)stdinstdoutstderrencodingerrorszsys.%s.encodinggettotalrefcountz$Yes (sys.gettotalrefcount() present)z#No (sys.gettotalrefcount() missing)zbuild.Py_DEBUG
getobjectszYes (sys.getobjects() present)zNo (sys.getobjects() missing)zbuild.Py_TRACE_REFS)r0   sysr;   getfilesystemencodinghasattrrY   r)   )	r*   r-   r^   r/   streamr_   Py_DEBUGr	   Py_TRACE_REFSs	            r
   collect_sysrh   N   s   J6 Hc8Z888h-s4HIIIh,c3FGGGh/6IJJJ(**Hs/00 I&hh(E(G(G(GHH&111- 
5 
5d##>6:t44 	400 	4"*((FF3H"T)84444 s.//H 554Ht$$$ C..M //.H"D)))))r   c                    dd l }|                                }d                    t          t          |                    } | d|            | d|                                            | d|                     d                     d|                                z                                  }|r | d	|           	 |                                }d
D ]}||vr | d| d||                    d S # t          $ r Y d S w xY w)Nr   r   zplatform.architecturezplatform.python_implementationzplatform.platformT)aliasedz%s %szplatform.libc_ver)IDNAMEPRETTY_NAMEVARIANT
VARIANT_IDVERSIONVERSION_CODENAME
VERSION_IDz platform.freedesktop_os_release[])
rO   architecturejoinfilterboolpython_implementationlibc_verr   freedesktop_os_releaseOSError)r*   rO   archrx   
os_releaser   s         r
   collect_platformr}      sm   OOO  ""D88F4&&''DH$d+++H-++--/ / /H t,,. . . (++---4466H 0$h///&4466
	
 	& 	&C *$$H>>>>_& & & &	& 	&    s   C9 9
DDc                 J    dd l } | d|                                           d S )Nr   zlocale.getencoding)localegetencoding)r*   r   s     r
   collect_localer      s0    MMMH!6#5#5#7#788888r   c                      | dt                               d                      | dt                               d                     d S )Nzbuiltins.float.float_formatfloatzbuiltins.float.double_formatdouble)r   __getformat__)r*   s    r
   collect_builtinsr      sJ    H*E,?,?,H,HIIIH+U-@-@-J-JKKKKKr   c                    dd l }t          |d          rx	 	 |                    d|j                   d}n# t          $ r}d|z  }Y d }~nd }~ww xY w | d|           d S # t
          $ r!}|j        t          j        k    r Y d }~d S d }~ww xY wd S )Nr   	getrandom   zready (initialized)znot seeded yet (%s)zos.getrandom)osrd   r   GRND_NONBLOCKBlockingIOErrorrz   errnoENOSYS)r*   r   stateexcs       r
   collect_urandomr      s    IIIr; 	4Q 0111-" 4 4 4-34H^U+++++ 	 	 	 yEL(( )(((((	 s7   5 A 
AA	A 	AA 
B
)BB
c                    dd l }d }d}t          | |d||           dD ]}t          | d|z  ||           d }t          | d|d	|           t          |d
          r2	 |                                } | d|           n# t
          $ r Y nw xY wt          d          }|j                                        D ]k\  }}	|	                                }
|
|v s?|

                    d          s*|

                    d          r$|
                    d          r | d|z  |	           lt          |d          r;|                    d          }|                    |            | dd|z             d S d S )Nr   c                 Z    | dv r&t          t          d |D                                 S |S )N)supports_follow_symlinkssupports_fdsupports_effective_idsc              3   $   K   | ]}|j         V  d S r   )r#   )r   r:   s     r
   	<genexpr>z2collect_os.<locals>.format_attr.<locals>.<genexpr>   s$      >>dm>>>>>>r   )r   sortedr.   r   s     r
   format_attrzcollect_os.<locals>.format_attr   s>     . . .v>>>>>>>???Lr   )r/   supports_bytes_environr   r   r   zos.%sr&   )	cpu_countgetcwdgetegidgeteuidgetgid
getloadavg	getresgid	getresuidgetuidprocess_cpu_countunamec                 R    d                     t          t          |                     S )N, )rt   mapr   )groupss    r
   format_groupsz!collect_os.<locals>.format_groups   s    yyS&))***r   zos.getgroups	getgroupsgetloginzos.login)DAPPDATAAR	ARCHFLAGSARFLAGSAUDIODEVBUILDPYTHONCCCFLAGSCOLUMNSCOMPUTERNAMECOMSPECCPPCPPFLAGSDISPLAYDISTUTILS_DEBUGDISTUTILS_USE_SDKDYLD_LIBRARY_PATHENSUREPIP_OPTIONSHISTORY_FILEHOME	HOMEDRIVEHOMEPATHIDLESTARTUPLANGLDFLAGSLDSHAREDLD_LIBRARY_PATHLINESMACOSX_DEPLOYMENT_TARGETMAILCAPS	MAKEFLAGSMIXERDEVMSSDKPATHPATHEXTPIP_CONFIG_FILEPLATPOSIXLY_CORRECTPY_SAX_PARSERProgramFileszProgramFiles(x86)RUNNING_ON_VALGRINDSDK_TOOLS_BINSERVER_SOFTWARESHELLSOURCE_DATE_EPOCH
SYSTEMROOTTEMPTERMTILE_LIBRARYTMPTMPDIRTRAVISTZUSERPROFILEVIRTUAL_ENVWAYLAND_DISPLAYWINDIR_PYTHON_HOSTRUNNER_PYTHON_HOST_PLATFORM_PYTHON_PROJECT_BASE_PYTHON_SYSCONFIGDATA_NAME__PYVENV_LAUNCHER__ASAN_OPTIONSLSAN_OPTIONSMSAN_OPTIONSTSAN_OPTIONSUBSAN_OPTIONS)PYTHONLC_VS	COMNTOOLSzos.environ[%s]umaskzos.umaskz0o%03o)r   r0   r;   rd   r   rz   	frozensetenvironr!   upper
startswithendswithr   )r*   r   r   r-   r:   r   loginENV_VARSr/   r   r   masks               r
   
collect_osr      s    III  J Hb':MMMM 6 6 	(GdNB5555+ + + hK=QQQQr: (	(KKMME HZ''''  	 	 	 D	  G G GHP z'')) 5 5e

X 011 
 %% 
 +0..*E*E  H%,e444r7 .xx{{
X_-----. .s    B 
BBc                    	 dd l }n# t          $ r Y d S w xY wdd l}|                                }	 |                    |          }n# t
          $ r d }Y nw xY w | d|z  ||nd           |d S t          |d          rV|                    |j        |j	                  }d
                    t          t          |                    } | d|           d S d S )Nr   zpwd.getpwuid(%s)z
<KeyError>getgrouplistr   zos.getgrouplist)pwdImportErrorr   r   getpwuidKeyErrorrd   r  pw_namepw_gidrt   r   r   )r*   r  r   uidentryr   s         r
   collect_pwdr
  b  s%   



   III
))++CS!!    H$'UU\; ; ; } 	r>"" ,==3sF++,,"F+++++, ,s    
A AAc                     	 dd l }n# t          $ r Y d S w xY wd }d}t          | |d||           t          |d          s5t	          |dd          }d	|v r | d
d	           d S d|v r | d
d           d S d S d S )Nr   c                 :    t          |t                    rd|z  S |S )Nz%#x)r   r   r   s     r
   r   z%collect_readline.<locals>.format_attr  s#    eS!! 	5= Lr   )_READLINE_VERSION_READLINE_RUNTIME_VERSION_READLINE_LIBRARY_VERSIONzreadline.%sr&   r  __doc__ zlibedit readlinezreadline.libraryzGNU readline)readliner  r0   rd   r)   )r*   r  r   r-   docs        r
   collect_readliner  }  s         J
 Hhz)+ + + + 8899 9h	2..$$H');<<<<<s""H'888889 9
 #"    
c                    dd l }	 |                    g d|j        |j        d          }|                                d         }|j        rd S n# t
          $ r Y d S w xY w|                                d         } | d|           d S )Nr   )gdbz-nx	--versionTr\   r]   universal_newlinesgdb_version)
subprocessPopenPIPEcommunicate
returncoderz   
splitlines)r*   r  procrS   s       r
   collect_gdbr#    s    
 ; ; ;'1'137   9 9 ""$$Q'? 	F	       ""1%GH]G$$$$$s   AA 
AAc                     	 dd l }d}t          | |d|           n# t          $ r Y nw xY w	 dd l}|                                }|                    dd          } | d|           d S # t          $ r Y d S w xY w)Nr   )
TK_VERSIONTCL_VERSIONz
tkinter.%sr   
patchlevelztkinter.info_patchlevel)_tkinterr0   r  tkinterTclcall)r*   r(  r-   r)  tclr'  s         r
   collect_tkinterr-    s    F 3
(L*EEEE	    8 kkmmXXfl33
*J77777    s    
((A( (
A65A6c                 d   dd l } | d|                                            d}t          | |d|           t          |d          rgdD ]f}	 t          j        d          5  |                    |          }d d d            n# 1 swxY w Y    | d	|z  |           U# t          $ r Y aw xY wd S d S )
Nr   z	time.time)altzonedaylighttimezonetznameztime.%sget_clock_info)clock	monotonicperf_counterprocess_timethread_timetimeT)recordztime.get_clock_info(%s))r9  r0   rd   warningscatch_warningsr3  r   )r*   r9  r-   r4  
clock_infos        r
   collect_timer>    sB   KKKH[$))++&&&J HdIz:::t%&& H= 
	H 
	HEH,D999 < <!%!4!4U!;!;J< < < < < < < < < < < < < < < 2U:JGGGG	    H H
	H 
	Hs6   B!B7BB	B
B	B
B+*B+c                 X    	 dd l }n# t          $ r Y d S w xY wt          | d|d           d S )Nr   zcurses.ncurses_versionncurses_version)cursesr  r6   )r*   rA  s     r
   collect_cursesrB    sR        h0&:KLLLLLr  c                 z    	 dd l }n# t          $ r Y d S w xY w | d|j                                                    d S )Nr   zdatetime.datetime.now)datetimer  now)r*   rD  s     r
   collect_datetimerF    s^        H$h&7&;&;&=&=>>>>>r  c                    dd l } | d|                                           dD ]>}|                    |          }|dk    r|s t          |          } | d|z  |           ?|                    d          }|od|v }|rd}nd	} | d
|           dD ]-}|                    |          }|rd}nd} | d| |           .d S )Nr   zsysconfig.is_python_build)ABIFLAGSANDROID_API_LEVELr   CCSHAREDr   CFLAGSFORSHAREDCONFIG_ARGS
HOSTRUNNERHOST_GNU_TYPEMACHDEP	MULTIARCHOPT	PY_CFLAGSPY_CFLAGS_NODISTPY_CORE_LDFLAGS
PY_LDFLAGSPY_LDFLAGS_NODISTPY_STDMODULE_CFLAGSrf   Py_ENABLE_SHAREDPy_NOGILr   SOABIabs_builddir
abs_srcdirrQ   srcdirrI  zsysconfig[%s]rR  z-DNDEBUGz!ignore assertions (macro defined)z$build assertions (macro not defined)zbuild.NDEBUG)WITH_DOC_STRINGSWITH_DTRACEWITH_FREELISTSWITH_PYMALLOCWITH_VALGRINDYesNozbuild.)	sysconfigis_python_buildget_config_varr   )r*   re  r/   r   rR  NDEBUGr	   s          r
   collect_sysconfigri    s5   H()*C*C*E*EFFF "0 "0: ((..&&&u&u%%4'////((55I3J)3F 524H^D!!! ( ( ((.. 	DDD$$''''( (r   c                 h   dd l }	 dd l}n# t          $ r Y d S w xY w	 dd l}n# t          $ r d }Y nw xY wd }d}t	          | |d||           d|                    |j                  fd|                                fd|                                ffD ]\  }}d	}t	          | |d
| d|           ddg}|Gt          |d          r7|
                                }	|                    |	d         |	d         f           |D ]0}	 |j        |         }
n# t          $ r Y w xY w | d|z  |
           1d S )Nr   c                 :    |                      d          rd|z  S |S )NOP_z%#8xr   r   s     r
   r   z collect_ssl.<locals>.format_attr9  s%    ??5!! 	E>!Lr   )OPENSSL_VERSIONOPENSSL_VERSION_INFOHAS_SNIOP_ALLOP_NO_TLSv1_1zssl.%sr&   
SSLContextdefault_https_contextstdlib_context)minimum_versionmaximum_versionprotocoloptionsverify_modezssl.z.%sOPENSSL_CONFSSLKEYLOGFILEget_default_verify_paths   zssl.environ[%s])r   sslr  _sslr0   rs  PROTOCOL_TLS_CLIENT_create_default_https_context_create_stdlib_contextrd   r}  extendr   r  )r*   r   r  r  r   r-   r/   ctx	env_namespartsr   s              r
   collect_sslr  .  s   III



        J Hc8Z;OOOO 
s~~c&=>>?	 #"C"C"E"EF	355778 E E	c


 	#'7d'7'7'7DDDD1IGD*DEE--//%(E!H-... 2 2	Jt$EE 	 	 	H	"T)511112 2s*    
" 11D
DDc                     	 dd l }n# t          $ r Y d S w xY w	 |                                } | d|           d S # t          t          f$ r t
          j        dk    r Y d S w xY w)Nr   zsocket.hostnamewasi)socketr  gethostnamerz   r3   rb   rO   )r*   r  hostnames      r
   collect_socketr  c  s       .%%'' 	"H----- ^$   <6!! "!!s    
; "A! A!c                 \    	 dd l }n# t          $ r Y d S w xY wd}t          | |d|           d S )Nr   )sqlite_versionz
sqlite3.%s)sqlite3r  r0   )r*   r  r-   s      r
   collect_sqliter  s  sU        %JHg|Z@@@@@r  c                 \    	 dd l }n# t          $ r Y d S w xY wd}t          | |d|           d S )Nr   )ZLIB_VERSIONZLIB_RUNTIME_VERSIONzzlib.%s)zlibr  r0   )r*   r  r-   s      r
   collect_zlibr  }  sU        :JHdIz:::::r  c                 `    	 ddl m} n# t          $ r Y d S w xY wd}t          | |d|           d S )Nr   )expat)EXPAT_VERSIONzexpat.%s)xml.parsersr  r  r0   )r*   r  r-   s      r
   collect_expatr    s_    %%%%%%%    $JHeZ<<<<<   	 
c                 \    	 dd l }n# t          $ r Y d S w xY wd}t          | |d|           d S )Nr   )__libmpdec_version__z_decimal.%s)_decimalr  r0   )r*   r  r-   s      r
   collect_decimalr    sU        +JHhzBBBBBr  c                 h    	 dd l }n# t          $ r Y d S w xY wdD ]}t          | d| ||           d S )Nr   )LONG_MAXPY_SSIZE_T_MAXPy_C_RECURSION_LIMITSIZEOF_TIME_TSIZEOF_WCHAR_Tz
_testcapi.)	_testcapir  r6   )r*   r  r/   s      r
   collect_testcapir    sy        B B 	(///DAAAAB Br  c                     	 dd l }n# t          $ r Y d S w xY wt          | d|d           dD ]}t          | d| ||           d S )Nr   zpymem.allocatorpymem_getallocatorsname)SIZEOF_PYGC_HEADSIZEOF_PYOBJECTz_testinternalcapi.)_testinternalcapir  r;   r6   )r*   r  r/   s      r
   collect_testinternalcapir    s             h)+<>WXXX R R 	(7779JDQQQQ	R Rr  c                     	 dd l }n# t          $ r Y d S w xY wd t          |          D             }|D ]6}t          ||          }|                    |          } | d|z  |           7t          | d|d           d S )Nr   c                 <    g | ]}|                     d           |S )RLIMIT_rm  )r   r.   s     r
   
<listcomp>z$collect_resource.<locals>.<listcomp>  s)    KKKt	0J0JKdKKKr   zresource.%szresource.pagesizegetpagesize)resourcer  dirr)   	getrlimitr;   )r*   r  limitsr/   r   r   s         r
   collect_resourcer    s        LKs8}}KKKF . .h%%""3''%u----h+X}EEEEEr  c                     dd l }	 ddlm} n# t          |j        f$ r Y d S w xY wd t          |          D             }t          | |d|           d S )Nr   )test_socketc                 <    g | ]}|                     d           |S )HAVE_rm  )r   r/   s     r
   r  z'collect_test_socket.<locals>.<listcomp>  s8     / / /4__W--/$ / / /r   ztest_socket.%s)unittesttestr  r  SkipTestr  r0   )r*   r  r  r-   s       r
   collect_test_socketr    s    OOO$$$$$$$*+   / /3{#3#3 / / /JHk+;ZHHHHHs    ""c                 h   	 ddl m} n# t          $ r Y d S w xY wd}t          | |d|           t	          | d|d           t	          | d|d            | d	|                    d
                      | d|                    d
                      | d|                    d
                     d S )Nr   )support)	
MS_WINDOWShas_fork_supporthas_socket_supporthas_strftime_extensionshas_subprocess_support
is_androidis_emscripten	is_jythonis_wasiz
support.%szsupport._is_gui_available_is_gui_availablezsupport.python_is_optimizedpython_is_optimizedz%support.check_sanitizer(address=True)T)addressz$support.check_sanitizer(memory=True))memoryz support.check_sanitizer(ub=True))ub)r  r  r  r0   r;   check_sanitizer)r*   r  r-   s      r
   collect_supportr    s             
J Hg|Z@@@h3W>QRRRh5w@UVVVH4$$T$224 4 4H3$$D$113 3 3H/$$$--/ / / / /r  c                     	 ddl m} n# t          $ r Y d S w xY wdD ])}t          ||          } | d|  |                       *d S )Nr   )	os_helper)can_symlink	can_xattr	can_chmodcan_dac_overridezsupport_os_helper.)test.supportr  r  r)   )r*   r  r/   r:   s       r
   collect_support_os_helperr    s    *******    6 6 y$'',d,,ddff55556 6r  c                     	 ddl m} n# t          $ r Y d S w xY wd}t          | |d|           dD ])}t	          ||          } | d|  |                       *d S )Nr   )socket_helper)IPV6_ENABLEDhas_gethostnamezsupport_socket_helper.%s)tcp_blackholezsupport_socket_helper.)r  r  r  r0   r)   )r*   r  r-   r/   r:   s        r
   collect_support_socket_helperr    s    .......   J Hm-GTTT : : }d++0$00$$&&9999	: :r  c                 `    	 ddl m} n# t          $ r Y d S w xY wd}t          | |d|           d S )Nr   )threading_helper)can_start_threadzsupport_threading_helper.%s)r  r  r  r0   )r*   r  r-   s      r
    collect_support_threading_helperr    sc    1111111   J H.0MzZZZZZr  c                    dd l }dd l}|                    d          }|sd S 	 dd l}|                    |          }n$# t
          $ r |                                }Y nw xY w|                    d           	 |                    ||j        |j	        d          }n# t          $ r Y d S w xY w|                                d         }|j        rd S |                                d         }t          |          } | d|           d S )Nr   r   r  Tr  z
CC.version)r  re  rg  shlexsplitr  appendr  r  STDOUTrz   r  r   r!  r   )	r*   r  re  r   r  argsr"  r\   r	   s	            r
   
collect_ccr  #  sP   		!	!$	'	'B {{2   xxzzKK	'1'1'837   9 9     		 "F q!D$DH\4     s!   = AA7#B 
B)(B)c           	          	 ddl m} n# t          $ r Y d S w xY w | dd                    t	          t
          |                               d S )Nr   )_GDBM_VERSIONzgdbm.GDBM_VERSION.)_gdbmr  r  rt   r   r   )r*   r  s     r
   collect_gdbmr  F  so    '''''''    H #((3sM+B+B"C"CDDDDDr  c           	          	 ddl m} n# t          $ r Y d S w xY w |            }t          |          D ]A}||         }t          |          D ]'} | |d|dt	          ||                              (Bd S )Nr   )get_configs[rr   )r  r  r  r   repr)r*   r  all_configsconfig_typeconfigr   s         r
   collect_get_configr  O  s    1111111    +--Kk** G G[)&>> 	G 	GCHccc2D4E4EFFFF	GG Gr  c                 2    dd l }t          | |dd           d S )Nr   zsubprocess.%s)_USE_POSIX_SPAWN)r  r0   )r*   r  s     r
   collect_subprocessr  ]  s)    Hj/;PQQQQQr   c                    t           j        dk    rd S 	 dd l}t          |d          st          	 |                    d          }|j        }	 |j        }||_        d|_	        t           |                      }n# t          $ r d}Y nw xY w | d|           |j        j        }|j        }||_        d|_	         | d |                       n# t          $ r Y nw xY w	 dd l}|                    t           j                  }	 | d	|	           n# t          t          f$ r Y nw xY wdd l}
	 |
                    g d
|
j        |
j        dd          }|                                \  }}|j        rd}|                                D ]}|                                }|                    d          r6|                    d                                          }|r | d|           a|                    d          r5|                    d                                          }|r | d|           n# t6          $ r Y nw xY w	 |
                    dgd|
j        |
j        d          }|                                d         }|j        dk    rd S |j        rd}|                                }|                                d         }|r | d|           n# t6          $ r Y d S w xY wdd l}	 |                    |j        d          }d}	 |                    ||          \  }}|                     |           n# |                     |           w xY w	  | d|rdnd           d S # t6          $ r Y d S w xY w)Nwin32r   WinDLLntdllr   z<function not available>zwindows.RtlAreLongPathsEnabledzwindows.is_adminzwindows.dll_path)wmicr   getzCaption,Versionz/valueoemT)r\   r]   r^   r	   r  zCaption=zwindows.version_captionzVersion=zwindows.versionver)shellr\   r]   r	   l   B   zwindows.verz8SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock!AllowDevelopmentWithoutDevLicensezwindows.developer_modeenableddisabled)!rb   rO   ctypesrd   r  r  c_ubyteRtlAreLongPathsEnabledrestypeargtypesrv   r3   windllshell32IsUserAnAdmin_winapiGetModuleFileName	dllhandler  r  r  r  r   r!  r   r   removeprefixrz   winregOpenKeyHKEY_LOCAL_MACHINEQueryValueExCloseKey)r*   r	  r   BOOLEANr  resr  r  r  dll_pathr  r"  outputr]   liner  r   subkeyr   
value_types                       r
   collect_windowsr!  b  s   
|w6vx(( 		
 g&&.	1%*%A" .5"*.0"+--//00CC  	- 	- 	-,CCC	- 	13777-'- '!##]]__5555'    *,,S];;#X....(    6  R R R'1'1).%)	   + +
 ))++? 	F %%'' 		6 		6D::<<Dz** 6((44::<< >H6===,, 6((44::<< 6H.555		6    *t'1'1%)   + + !!##A&?j((F? 	F   ""1% 	*H]D)))     MMMOnn%GI I 5	! & 3 3C @ @E:OOC    FOOC      	)+M99:NNNNN    s   C A: :B	B	
CC/D D#"D#+AH2 2
H?>H?A
K 	K 
K#"K#+M% 	L8 "M% 8MM% %
M32M3c                 @   	 dd l }n# t          $ r d }Y nw xY w|t          | d|d           	 t          dd          5 }|                                                                }d d d            n# 1 swxY w Y   |r | d|           d S d S # t          $ r Y d S w xY w)Nr   zfips.openssl_fips_modeget_fips_modez/proc/sys/crypto/fips_enabledzutf-8)r^   zfips.linux_crypto_fips_enabled)_hashlibr  r;   openr  rstriprz   )r*   r$  fpr  s       r
   collect_fipsr(    s&       (4hPPP1GDDD 	*;;==''))D	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*  	=H5t<<<<<	= 	=   s@    B 'A2&B 2A66B 9A6:B 
BBc                 J    dd l } | d|                                           d S )Nr   ztempfile.gettempdir)tempfile
gettempdir)r*   r*  s     r
   collect_tempfiler,    s0    OOOH"H$7$7$9$9:::::r   c                     	 ddl m} n# t          $ r Y d S w xY w | dd                    |                                                     d S )Nr   )utilszlibregrtests.build_infor   )test.libregrtestr.  r  rt   get_build_info)r*   r.  s     r
   collect_libregrtest_utilsr1    sq    *******    H&1E1E1G1G(H(HIIIIIr  c                 L   d}| j         }g t          t          t          t          t
          t          t          t          t          t          t          t          t          t          t          t           t"          t$          t&          t(          t*          t,          t.          t0          t2          t4          t6          t8          t:          t<          t>          t@          tB          tD          tF          tH          R D ]}	  ||           # tJ          $ r d}tM          d|j'        z  tP          j)                   tU          j+        tP          j)                   tM          tP          j)                   tP          j)        ,                                 Y w xY w|S )NFTzERROR: %s() failedfile)-r   r   r   r  rB  rF  r  r  r(  r#  r  r  r   r   r}   r
  r  r  r  r  r  r  rh   ri  r  r  r,  r>  r-  r!  r  r1  r  r  r  r  r  	Exceptionprintr#   rb   r]   	traceback	print_excflush)r   errorr*   collect_funcs       r
   collect_infor<    sH   ExH+ 		+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+  	!+" 	#+$ 	%+& 	'+( 	)+* 	++, 	-+. 	/+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+ + 4 4X	L"""" 	 	 	E&,*?@z# # # #SZ0000sz""""J	 Ls   DBF! F!c                 P   d}t          |           t          dt          |          z             t                       |                                 }t          |                                          }|D ]/\  }}|                    dd          }t          |d|           0d S )NzPython debug information=
r   z: )r6  lenr"   r   r!   replace)r   r4  titleinfosr   r   s         r
   	dump_inforD  '  s    &E	%LLL	#E


	GGGNNE5;;==!!E ' '
UdC((###uu%&&&&' 'r   c                      t                      } t          |           }t          |            |r?t                       t          dt          j                   t	          j        d           d S d S )Nz"Collection failed: exit with errorr3  r   )r   r<  rD  r6  rb   r]   exit)r   r:  s     r
   mainrG  4  se    <<DEdOOO 2DDDD r   __main__r   )3r  r   r   rb   r7  r;  r   r   r0   r6   r;   rh   r}   r   r   r   r   r
  r  r#  r-  r>  rB  rF  ri  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r(  r,  r1  r<  rD  rG  r#   r   r   r
   <module>rI     s~     				 



       E E E E E E E E: GK        <@     A* A* A*H"& "& "&J9 9 9L L L
  &J. J. J.Z, , ,69 9 9:% % %(8 8 8&H H H6M M M? ? ?=( =( =(@22 22 22j. . . A A A; ; ;= = =C C CB B B R R RF F F
I 
I 
I/ / /<6 6 6 : : :&	[ 	[ 	[ !  !  !FE E EG G GR R R
cO cO cOL  &; ; ;J J J: : :z
' 
' 
' 
'   zDFFFFF r   