
    z%ia                     z   	 d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZej                  dk(  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-d*Z.d+ Z/e0d,k(  r e/        yy).    )print_functionNwin32c                 l    | y t        |       } t        j                  dd|       } | j                         S )Nz\s+ )strresubstrip)texts    C/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/pythoninfo.pynormalize_textr      s1    |t9D66&#t$D::<    c                       e Zd Zd Zd Zd Zy)
PythonInfoc                     i | _         y N)info)selfs    r   __init__zPythonInfo.__init__   s	    	r   c                     || j                   v rt        d|z        |y t        |t              s.t        |t              st	        |      }|j                         }|sy || j                   |<   y )Nzduplicate key: %r)r   
ValueError
isinstanceintr   r
   r   keyvalues      r   addzPythonInfo.add   sb    $))03677=%%eS)E
KKME		#r   c                 ~    	 | j                   j                         D ci c]  \  }}|t        |       c}}S c c}}w r   )r   itemsr   r   s      r   	get_infoszPythonInfo.get_infos.   s4    	 37))//2CDJCSZDDDs   9N)__name__
__module____qualname__r   r   r     r   r   r   r      s    $Er   r   	formatterc                d    |D ]+  }t        ||d       }|||z  }|	 |||      } | ||       - y r   )getattr)info_addobjname_fmt
attributesr&   attrr   names           r   copy_attributesr/   5   sL     T4(=$ dE*Eur   c                 N    	 t        ||      } | ||       y # t        $ r Y y w xY wr   r(   AttributeError)r)   r.   mod	attr_namer   s        r   	copy_attrr5   @   s3    Y' T5  s    	$$c                p    	 t        ||      } |       }| ||      } | ||       y # t        $ r Y y w xY wr   r1   )r)   r.   r3   	func_namer&   funcr   s          r   	call_funcr9   H   sJ    sI& FE% T5  s   ) 	55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 ]G  }t        t        |      }|t        |dd       }|s&t        |dd       }|r|d
|} | d|z  |       I t	        t        d      }|rd}nd} | d|       t	        t        d      }|rd}nd} | d|       y )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)r/   sysr9   getfilesystemencodinghasattrrW   r(   )	r)   r,   r\   r.   streamr]   Py_DEBUGr   Py_TRACE_REFSs	            r   collect_sysrf   S   s/   J6 Hc8Z8h-s4HIh,c3FGh/6IJ((*Hs/0&(E(E(GH&1- 
5d#>6:t440"*F3H"T)84
5 s./H54t$ C.M/."D)r   c                    dd l }|j                         }dj                  t        t        |            } | d|        | d|j                                 | d|j                  d             d|j                         z  j                         }|r	 | d	|       	 |j                         }d
D ]  }||vr | d| d||           y # t        $ r Y y 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[])
rM   architecturejoinfilterboolpython_implementationlibc_verr
   freedesktop_os_releaseOSError)r)   rM   archrv   
os_releaser   s         r   collect_platformr{      s      "D88F4&'D$d+-++-/ t,. (++--446H$h/&446
	
 	&C *$7uA>_&	&  s   C 	CCc                 :    dd l } | d|j                                y )Nr   zlocale.getencoding)localegetencoding)r)   r}   s     r   collect_localer      s    !6#5#5#78r   c                 t     | dt         j                  d              | dt         j                  d             y )Nzbuiltins.float.float_formatfloatzbuiltins.float.double_formatdouble)r   __getformat__)r)   s    r   collect_builtinsr      s.    *E,?,?,HI+U-@-@-JKr   c                    dd l }t        |d      r*	 	 |j                  d|j                         d} | d|       y y # t        $ r}d|z  }Y d }~d }~ww xY w# t
        $ r(}|j                  t        j                  k7  r Y d }~y d }~ww xY w)Nr   	getrandom   zready (initialized)znot seeded yet (%s)zos.getrandom)osrb   r   GRND_NONBLOCKBlockingIOErrorrx   errnoENOSYS)r)   r   stateexcs       r   collect_urandomr      s    r;	4Q 0 01- ^U+   # 4-34  	 yyELL( )	s8   < 	A 	AA
A AA 	B BBc                 p   dd l }d }d}t        | |d||       dD ]  }t        | d|z  ||        d }t        | d|d	|       t        |d
      r	 |j	                         } | d|       t        d      }|j                  j                         D ]Z  \  }}	|j                         }
|
|v s5|
j                  d      s$|
j                  d      s=|
j                  d      sO | d|z  |	       \ t        |d      r/|j                  d      }|j                  |        | dd|z         y y # t
        $ r Y w xY w)Nr   c                 D    | dv rt        t        d |D                    S |S )N)supports_follow_symlinkssupports_fdsupports_effective_idsc              3   4   K   | ]  }|j                     y wr   )r!   ).0r8   s     r   	<genexpr>z2collect_os.<locals>.format_attr.<locals>.<genexpr>   s     >dmm>s   )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unamec                 @    dj                  t        t        |             S )N, )rr   mapr   )groupss    r   format_groupsz!collect_os.<locals>.format_groups   s    yyS&)**r   zos.getgroups	getgroupsgetloginzos.login)>APPDATAAR	ARCHFLAGSARFLAGSAUDIODEV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TIX_LIBRARYTMPTMPDIRTRAVISTZUSERPROFILEVIRTUAL_ENVWAYLAND_DISPLAYWINDIR_PYTHON_HOST_PLATFORM_PYTHON_PROJECT_BASE_PYTHON_SYSCONFIGDATA_NAME__PYVENV_LAUNCHER__)PYTHONLC_VS	COMNTOOLSzos.environ[%s]umaskzos.umaskz0o%03o)r   r/   r9   rb   r   rx   	frozensetenvironr   upper
startswithendswithr   )r)   r   r   r,   r8   r   loginENV_VARSr.   r   r   masks               r   
collect_osr      sR   J Hb':M 6 	(GdNB56+ hK=Qr:	(KKME Z'  ? ?H@ zz'') 5e

X01%%..*E%,e45 r7xx{
X_- i  	 	s   D) )	D54D5c                 v   	 dd l }dd l}|j                         }	 |j	                  |      } | d|z  ||nd       |y t        |d      rO|j                  |j                  |j                        }dj                  t        t        |            } | d|       y y # t        $ r Y y w xY w# t
        $ r d }Y w xY w)Nr   zpwd.getpwuid(%s)z
<KeyError>getgrouplistr   zos.getgrouplist)pwdImportErrorr   r   getpwuidKeyErrorrb   r   pw_namepw_gidrr   r   r   )r)   r   r   uidentryr   s         r   collect_pwdr  ]  s     
))+CS! $'U\; } 	r>"=3sF+,"F+ #%    s"   B B* 	B'&B'*B87B8c                     	 dd l }d }d}t        | |d||       t        |d      s*t	        |dd      }d	|v r
 | d
d	       y d|v r
 | d
d       y y y # t        $ r Y y w xY w)Nr   c                 0    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   r/   rb   r(   )r)   r
  r   r,   docs        r   collect_readliner  x  s    J
 Hhz)+ 889h	2.$');<s"'8 # :#  s   A 	AAc                     dd l }	 |j                  g d|j                  |j                  d      }|j                         d   }|j                  ry 	 |j                         d   } | d|       y # t
        $ r Y y w xY w)Nr   )gdbz-nx	--versionTrZ   r[   universal_newlinesgdb_version)
subprocessPopenPIPEcommunicate
returncoderx   
splitlines)r)   r  procrQ   s       r   collect_gdbr    s    
 ;'1'137   9 ""$Q'??    "1%G]G$  s   A
A/ /	A;:A;c                     	 dd l }d}t        | |d|       	 dd l}|j	                         }|j                  dd      } | d|       y # t        $ r Y <w xY w# t        $ r Y y w xY w)Nr   )
TK_VERSIONTCL_VERSIONz
tkinter.%sr   
patchlevelztkinter.info_patchlevel)_tkinterr/   r   tkinterTclcall)r)   r  r,   r   tclr  s         r   collect_tkinterr$    sw    F 3
(L*E8 kkmXXfl3
*J7    s"   A A 	AA	A"!A"c                 2   dd l } | d|j                                d}t        | |d|       t        |d      rEdD ]?  }	 t        j                  d      5  |j                  |      }d d d         | d	|z         A y y # 1 sw Y   xY w# t        $ r Y [w xY w)
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))r0  r/   rb   warningscatch_warningsr*  r   )r)   r0  r,   r+  
clock_infos        r   collect_timer5    s    [$))+&J HdIz:t%&= 
	HEH,,D9 <!%!4!4U!;J< 2U:JG
	H '
< < s)   B
A>&B
>B	B

	BBc                 H    	 dd l }t        | d|d       y # t        $ r Y y w xY w)Nr   zcurses.ncurses_versionncurses_version)cursesr   r5   )r)   r8  s     r   collect_cursesr9    s0     h0&:KL      	!!c                 n    	 dd l } | d|j                   j                                y # t        $ r Y y w xY w)Nr   zdatetime.datetime.now)datetimer   now)r)   r<  s     r   collect_datetimer>    s:     $h&7&7&;&;&=>  s   ( 	44c                 0   t         ry dd l}dD ]2  }|j                  |      }|dk(  r|st        |      } | d|z  |       4 |j                  d      }|xr d|v }|rd}nd} | d	|       d
D ]&  }|j                  |      }|rd}nd} | d| |       ( y )Nr   )ABIFLAGSANDROID_API_LEVELr   CCSHAREDr   CFLAGSFORSHAREDCONFIG_ARGSHOST_GNU_TYPEMACHDEP	MULTIARCHOPT	PY_CFLAGSPY_CFLAGS_NODISTPY_CORE_LDFLAGS
PY_LDFLAGSPY_LDFLAGS_NODISTPY_STDMODULE_CFLAGSrd   Py_ENABLE_SHAREDr   SOABIrO   rA  zsysconfig[%s]rI  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.)
MS_WINDOWS	sysconfigget_config_varr   )r)   rY  r.   r   rI  NDEBUGr   s          r   collect_sysconfigr\    s      00 ((.&&uu%4'/;0> ((5I3J)3F24^D! ( ((.DD6$$'(r   c                    dd l }	 dd l}	 dd l}d }d}t	        | |d||       d|j                  |j                        fd|j                         fd|j                         ffD ]  \  }}d	}t	        | |d
| d|        ddg}|5t        |d      r)|j                         }	|j                  |	d   |	d   f       |D ]  }	 |j                  |   }
 | d|z  |
         y # t        $ r Y y w xY w# t        $ r d }Y w xY w# t        $ r Y Mw xY w)Nr   c                 2    | j                  d      rd|z  S |S )NOP_z%#8x)r   r   s     r   r   z collect_ssl.<locals>.format_attr2  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   _sslr/   re  PROTOCOL_TLS_CLIENT_create_default_https_context_create_stdlib_contextrb   ro  extendr   r   )r)   r   rq  rr  r   r,   r.   ctx	env_namespartsr   s              r   collect_sslrz  '  s\   J Hc8Z;O 
s~~c&=&=>?	 #"C"C"EF	35578 E	c


 	#dV3'7DE  1IGD*DE--/%(E!H-. 2	JJt$E 	"T)512S    P  		s4   C C. C?	C+*C+.C<;C<?	D
Dc                     	 dd l }	 |j                         } | d|       y # t        $ r Y y w xY w# t        t        f$ r t
        j                  dk7  r Y y w xY w)Nr   zsocket.hostnamewasi)socketr   gethostnamerx   r2   r`   rM   )r)   r}  hostnames      r   collect_socketr  \  sg    .%%' 	"H-  
 ^$ <<6! "s   ! 0 	--#AAc                 L    	 dd l }d}t        | |d|       y # t        $ r Y y w xY w)Nr   )sqlite_versionz
sqlite3.%s)sqlite3r   r/   )r)   r  r,   s      r   collect_sqliter  l  s3     %JHg|Z@	      	##c                 L    	 dd l }d}t        | |d|       y # t        $ r Y y w xY w)Nr   )ZLIB_VERSIONZLIB_RUNTIME_VERSIONzzlib.%s)zlibr   r/   )r)   r  r,   s      r   collect_zlibr  v  s3     :JHdIz:	  r  c                 P    	 ddl m} d}t        | |d|       y # t        $ r Y y w xY w)Nr   )expat)EXPAT_VERSIONzexpat.%s)xml.parsersr  r   r/   )r)   r  r,   s      r   collect_expatr    s3    % $JHeZ<	  s    	%%c                 L    	 dd l }d}t        | |d|       y # t        $ r Y y w xY w)Nr   )__libmpdec_version__z_decimal.%s)_decimalr   r/   )r)   r  r,   s      r   collect_decimalr    s3     +JHhzB	  r  c                 H    	 dd l }t        | d|d       y # t        $ r Y y w xY w)Nr   zpymem.allocatorpymem_getallocatorsname)	_testcapir   r9   )r)   r  s     r   collect_testcapir    s0     h)96OP  r:  c                    	 dd l }t        |      D cg c]  }|j                  d      s| }}|D ]+  }t	        ||      }|j                  |      } | d|z  |       - t        | d|d       y # t        $ r Y y w xY wc c}w )Nr   RLIMIT_zresource.%szresource.pagesizegetpagesize)resourcer   dirr   r(   	getrlimitr9   )r)   r  r-   limitsr.   r   r   s          r   collect_resourcer    s      #8}Kt	0JdKFK .h%""3'%u-.
 h+X}E   Ls   A/ A>A>/	A;:A;c                     	 ddl m} t        |      D cg c]  }|j                  d      r| }}t        | |d|       y # t        t        j                  f$ r Y y w xY wc c}w )Nr   )test_socketHAVE_ztest_socket.%s)testr  r   unittestSkipTestr  r   r/   )r)   r  r.   r,   s       r   collect_test_socketr    sk    $
 $'{#3 /4__W-  /J /Hk+;ZH **+ /s   A  A AAc                    	 ddl m} d}t        | |d|       t	        | d|d       t	        | d|d        | d	|j                  d
              | d|j                  d
              | d|j                  d
             y # t        $ r Y y w xY w)Nr   )support)IPV6_ENABLEDztest_support.%sztest_support._is_gui_available_is_gui_availablez test_support.python_is_optimizedpython_is_optimizedz*test_support.check_sanitizer(address=True)T)addressz)test_support.check_sanitizer(memory=True))memoryz%test_support.check_sanitizer(ub=True))ub)r  r  r   r/   r9   check_sanitizer)r)   r  r,   s      r   collect_test_supportr    s      #JHg'8*Eh8'CVWh:GEZ[9$$T$248$$D$134$$$-/  s   B   	BBc                    dd l }dd l}|j                  d      }|sy 	 dd l}|j	                  |      }|j                  d       	 |j                  ||j                  |j                  d      }|j                         d   }|j                  ry |j                         d   }t        |      } | d|       y # t
        $ r |j	                         }Y w xY w# t        $ r Y y w xY w)Nr   r   r  Tr  z
CC.version)r  rY  rZ  shlexsplitr   appendr  r  STDOUTrx   r  r  r  r   )	r)   r  rY  r   r  argsr  rZ   r   s	            r   
collect_ccr    s    		!	!$	'B{{2 	KK	'1'1'8'837   9 "Fq!D$D\4 +  xxz   		s#   B6 )C 6CC	C! C!c           	      |    	 ddl m}  | ddj                  t	        t
        |                   y # t        $ r Y y w xY w)Nr   )_GDBM_VERSIONzgdbm.GDBM_VERSION.)_gdbmr  r   rr   r   r   )r)   r  s     r   collect_gdbmr    s;    '  #((3sM+B"CD  s   / 	;;c           	          	 ddl m}  |       }t        |      D ]2  }||   }t        |      D ]  } | |d|dt	        ||                 4 y # t        $ r Y y w xY w)Nr   )get_configs[rp   )_testinternalcapir  r   r   repr)r)   r  all_configsconfig_typeconfigr   s         r   collect_get_configr    st    1 -Kk* G[)&> 	GCc2D4EF	GG	  s   A 	AAc                 (    dd l }t        | |dd       y )Nr   zsubprocess.%s)_USE_POSIX_SPAWN)r  r/   )r)   r  s     r   collect_subprocessr    s    Hj/;PQr   c                    	 dd l }t        |d      sy |j                  d      }|j                  }	 |j
                  }||_        d|_        t         |             } | d|       	 dd l
}|j                  t        j                        } | d|       dd l}	 |j                  g d|j                   |j                   d	d
      }	|	j#                         \  }
}|	j$                  rd}
|
j'                         D ]  }|j)                         }|j+                  d      r,|j-                  d      j)                         }|sF | d|       P|j+                  d      sb|j-                  d      j)                         }|s | d|        	 	 |j                  dgd
|j                   |j                   d
      }	|	j#                         d   }
|	j$                  rd}
|
j)                         }
|
j'                         d   }|r
 | d|       y y # t        $ r Y y w xY w# t        $ r d}Y w xY w# t        t        f$ r Y w xY w# t.        $ r Y w xY w# t.        $ r Y y w xY w)Nr   WinDLLntdllr$   z<function not available>zwindows.RtlAreLongPathsEnabledzwindows.dll_path)wmicr   getzCaption,Versionz/valueoemT)rZ   r[   r\   r   r	  zCaption=zwindows.version_captionzVersion=zwindows.versionver)shellrZ   r[   r   zwindows.ver)ctypesr   rb   r  c_ubyteRtlAreLongPathsEnabledrestypeargtypesrt   r2   _winapiGetModuleFileNamer`   	dllhandler  r  r  r  r  r  r
   r   removeprefixrx   )r)   r  r  BOOLEANr  resr  dll_pathr  r  outputr[   lines                r   collect_windowsr    sd    68$MM'"EnnG-!&!=!= *1&*,')+,-s3,,S]];#X. 6  R'1'1).%)	   +
 ))+??F %%' 		6D::<Dz*((4::<6=,((4::<.5		6*t'1'1%)   + !!#A&??F   "1%]D) C    )() (   ,  sZ   H  H %,H! AH7 AI  	HHHH!H43H47	II	IIc                    	 dd l }|t        | d|d       	 t        dd      5 }|j	                         j                         }d d d        r
 | d|       y y # t        $ r d }Y _w xY w# 1 sw Y   'xY w# t        $ r Y y 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   r9   openr
  rstriprx   )r)   r  fpr  s       r   collect_fipsr  S  s     (4hP1GD 	*;;='')D	* 5t<   	* 	*
  s9   A A5 A)A5 A&%A&)A2.A5 5	B Bc                    d}| j                   }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<        fD ]  }	  ||        |S # t>        $ r d}tA        d|jB                  z  tD        jF                         tI        jJ                  tD        jF                         tA        tD        jF                         tD        jF                  jM                          Y w xY w)NFTzERROR: %s() failedfile)'r   r   r   r  r9  r>  r  r  r  r  r  r  r   r   r{   r  r  r  r  r  rz  r  rf   r\  r  r5  r$  r  r  r  r  	Exceptionprintr!   r`   r[   	traceback	print_excflush)r   errorr)   collect_funcs       r   collect_infor  f  s    ExxH 	 	I% .L	"O.` L  	E&,*?*?@zz#SZZ0szz"JJ	s   +B77BE	E	c                 
   d}t        |       t        dt        |      z         t                | j                         }t        |j	                               }|D ]'  \  }}|j                  dd      }t        |d|       ) y )NzPython debug information=
r   z: )r  lenr    r   r   replace)r   r  titleinfosr   r   s         r   	dump_infor    sp    &E	%L	#E

	GNNE5;;=!E '
UdC(#u%&'r   c                      t               } t        |       }t        |        |r;t                t        dt        j
                         t	        j                  d       y y )Nz"Collection failed: exit with errorr  r   )r   r  r  r  r`   r[   exit)r   r  s     r   mainr    sA    <DEdO2D r   __main__r   )1
__future__r   r   r   r`   r  r  r2  rM   rX  r   r   r/   r5   r9   rf   r{   r   r   r   r   r  r  r  r$  r5  r9  r>  r\  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!   r$   r   r   <module>r     s-   &  	 
    llg%
E E: GK  <@ A*H"&J9L
&@.F,69:%(8&H6M?;(|22j. A;=CQF	I/( !FEGR
E*P&4n
' zF r   