
    ,hh                     z   S r SrSSKrSSKrSSKrSSKrSSKrSSKr SSKqSSSSSSSSS	S	S
.
r
S rSKS jrSLS jr  SMS jrS r/ SQr/ SQrS rS rS rSNS jrS rSOS jr\R0                  " S/ SQ5      rSPS jrS rSQS jr\R0                  " SS 5      r  SRS! jrS" rS# r SLS$ jr!S% r"SLS& jr#S'S(S)S.r$\RJ                  SS4S* jr&S+ r' " S, S-5      r(S. r) " S/ S0\R0                  " S1S25      5      r*Sq+S3 r,S4 r-S5 r.S6 r/S7 r0S8 r1S9 r20 r3SSS: jr4S; r5S< r6S= r7S> r8S? r9S@ r:SA r;0 r<STSB jr=SCr>Sq?SD r@SE rA\BSF:X  al  SG\R                  ;   =(       d    SH\R                  ;   rDSI\R                  ;  =(       a    SJ\R                  ;  rE\F" \=" \E\D5      5        \R                  " S5        gg! \	 a    Sq GNf = f)Ua  
    Copyright (c) 1999-2000, Marc-Andre Lemburg; mailto:mal@lemburg.com
    Copyright (c) 2000-2010, eGenix.com Software GmbH; mailto:info@egenix.com

    Permission to use, copy, modify, and distribute this software and its
    documentation for any purpose and without fee or royalty is hereby granted,
    provided that the above copyright notice appear in all copies and that
    both that copyright notice and this permission notice appear in
    supporting documentation or portions thereof, including modifications,
    that you make.

    EGENIX.COM SOFTWARE GMBH DISCLAIMS ALL WARRANTIES WITH REGARD TO
    THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
    FITNESS, IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL,
    INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
    FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
    NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
    WITH THE USE OR PERFORMANCE OF THIS SOFTWARE !

z1.0.8    N
         (   2      )
devalphaabetabcRCrcplpc                    [         R                  " S5      n/ nUR                  U 5       H,  nUS;  d  M   [        US5      nSnUR                  XC45        M.     U$ ! [         a    [
        R                  US5      n N:f = f)Nz([0-9]+|[._+-])z._+-r   d   r   )recompilesplitint
ValueError_ver_stagesgetextend)versioncomponent_reresultvts        1/opt/python-3.13.8/usr/lib/python3.13/platform.py_comparable_versionr#      s    ::01LF(F?*2J MM1&! ) M  *OOAq)*s   A A?>A? c                    U (       d[   [         R                  " S5      nUR                  SS9n[        U5      S:X  a  [	        U5      $  [        R                  n U (       d  X4$ [        R                  " S[        R                  5      n[        n[         R                  R                  U 5      n [!        U S5       nUR#                  U5      n	Sn
U
[        U	5      :  Gak  SU	;   d  S	U	;   a  UR%                  X5      nOS nU(       a  UR'                  5       [        U	5      :X  aB  UR#                  U5      nU(       a"  U	[)        U
[        U	5      S
-
  5      S  U-   n	Sn
M  U(       d  OUR+                  5        Vs/ s H  nUb  UR-                  S5      OUPM     snu  pnnnnU(       a
  U(       d  SnOwU(       a   US:w  a  SnUnOeU" U5      U" U5      :  a  UnOPU(       aI  US:w  aC  SnU(       a  U(       a  U" U5      U" U5      :  a  UnU(       a  U[        U5      * S  U:w  a  UU-   nUR'                  5       n
U
[        U	5      :  a  GMk  S S S 5        X4$ ! [
        [        [        4 a     GN"f = fs  snf ! , (       d  f       X4$ = f)NCS_GNU_LIBC_VERSION   )maxsplit   sC   (__libc_init)|(GLIBC_([0-9.]+))|(libc(_\w+)?\.so(?:\.(\d[0-9.]*))?)rbr   s   libcs   GLIBCi  latin1libcglibc)osconfstrr   lentupleAttributeErrorr   OSErrorsys
executabler   r   ASCIIr#   pathrealpathopenreadsearchendmaxgroupsdecode)r5   libr   	chunksizeverpartslibc_searchVfbinaryposmchunkslibcinitr-   glibcversionsothreads	soversions                       r"   libc_verrQ      s^    	**23CIIqI)E5zQU|#  ^^
<** B DF88	MK 	A !!*-J	j$	1	"CK& H$6&&v33v;.y)#CS[4-?$@$ABUJFC E%#A '(m":#E%AH\2w	 '>!C*G|_qz1*G'> C 'Qy\AgJ5N"+7CL=>#:g#E")G"3%%'C? CK 
 F <q 
G4 		JE%! 
 	F <s1   >I 9B<I45 I/B0I4I,+I,/I44
Jc           	          U R                  S5      nU(       a  UR                  U5         [        [        [        [        [
        U5      5      5      nSR                  US S 5      n U $ ! [         a    Un N$f = f)N.   )r   appendlistmapstrr   r   join)r   buildlstringss       r"   _norm_versionr]      sm    
 	cA	s3C,- hhwr{#GN  s   'A( (A76A7win32win16dosc           
         [         R                  U;  a  XU4$ SS KnS H,  n UR                  UUR                  UR                  SSSS9n  O   XU4$ [        R                  " S5      nUR                  5       nUR                  U5      n	U	b:  U	R                  5       u  pnUS   S:X  a  US S nUS   S:X  a  US S n[        U5      nXU4$ ! [
        UR                  4 a  n S nAM  S nAff = f)	Nr   )rB   zcommand /c verz
cmd /c verTlocale)stdinstderrtextencodingshellz'(?:([\w ]+) ([\w.]+) .*\[.* ([\d.]+)\])rS   )r4   platform
subprocesscheck_outputDEVNULLr3   CalledProcessErrorr   r   stripmatchr>   r]   )
systemreleaser   supported_platformsrk   cmdinfowhy
ver_outputrI   s
             r"   _syscmd_verrx   
  s    ||..'' 6	**31;1C1C2<2D2D044<15 + 7D  7 '' - .J
 ::<DA}#$88: 2;#crlG2;#crlG  (G##3 667 		s   (CC,'C,c                 f  ^ [         (       d  [        S5      eSSS.U    n  [         R                  " SR                  SR	                  U5      U 5      5      R                  S5      nS U 5       nU Vs0 s H  oDS	   US
   _M     snmU4S jU 5       $ ! [         a    S q [        S5      ef = fs  snf )Nznot supportedWin32_OperatingSystemWin32_Processor)OSCPUzSELECT {} FROM {}, c              3   B   #    U  H  oR                  S 5      v   M     g7f)=N)	partition).0is     r"   	<genexpr>_wmi_query.<locals>.<genexpr>Q  s     1Dq++c""Ds   r   r)   c              3   .   >#    U  H
  nTU   v   M     g 7fN )r   k	dict_datas     r"   r   r   S  s     '$QIaL$s   )_wmir3   
exec_queryformatrY   r   )tablekeysdata
split_datar   r   s        @r"   
_wmi_queryr   A  s    4o&&%  E'299HHTN 
  5; 	 2D1J%/0Z1qtZ0I'$''  'o&&' 1s   AB 2B.B+))r   r'   r   post11))r   r   iU  11)      r   10)r   rT   r   z8.1)r   r)   r   8)r   r'   r   7)r   r   r   Vista))   r)   i  XP64)r   r)   r   XPMedia))r   r'   r   XP)r   r   r   2000))r   post2025Server))r   r   ie  
2025Server))r   r   i|O  
2022Server))r   r   icE  
2019Server)r   
2016Server)r   2012ServerR2)r   
2012Server)r   2008ServerR2)r   
2008Server)r   
2003Server)r   
2000Serverc                      [        5       S;   $ )N)IoTUAP
NanoServerWindowsCoreHeadless	IoTEdgeOS)win32_editionr       r"   win32_is_iotr   r  s    ?ZZZr   c                       SS K n  SnU R                  U R                  U5       nU R                  US5      S   sS S S 5        $ ! , (       d  f       g = f! [         a     g f = f! [
         a     g f = f)Nr   ,SOFTWARE\Microsoft\Windows NT\CurrentVersion	EditionId)winreg	OpenKeyExHKEY_LOCAL_MACHINEQueryValueExr3   ImportError)r   cvkeykeys      r"   r   r   u  s    
	CE!!&";";UCs**3<Q? DCC
   		   s>   A% A A	A 
AA A 
A"!A"%
A21A2c                 j    [        SSSSSS5      u  pp$n[        U5      S:H  nU(       a  US:w  a	  S	U S
U 3nOS	U 3nXX&4$ ! [         a     Of = f SSKJn  O! [
         a    XUS4s $ f = fU" 5       n[        USS5      S:H  n [        5       S   n [        [        U R                  S
5      5      u  pnO=! [         a0    UR                  =(       d    US S u  pnSR                  XU5      n  Of = fUS S X4:X  a>   SR                  UR                  5      nO!! [         a    US S S:X  a  S	USS  -   n Of = f SS Kn SnUR!                  UR"                  U5       nUR%                  US5      S   nS S S 5        O1! , (       d  f       O#= f! [         a     Of = f! [
         a     Of = fXX&4$ )Nr|   VersionProductType	BuildTypeServicePackMajorVersionServicePackMinorVersionr'   0SPrS   r   )getwindowsversionTproduct_typer)   rT   z{0}.{1}.{2}zSP{}   zService Pack r   CurrentType)r   r   r3   r4   r   r   getattrrx   rW   r   r   platform_versionr   service_pack_majorr2   r   r   r   r   )r   csdptyper   spmajorspminor	is_clientr   winvermajorminorrZ   r   r   r   s                  r"   
_win32_verr     s   <F%%=
8 &!+	w#~wiq	*Cwi.CU-- )) )UD(()  F3q8I<-"!#w}}S'9:e <$55Ce&&uU;< bqze^#	&-- 9 9:C 	&3Bx?*SXo	&
	CE!!&";";UCs++C?B DCC 		   ))s   A A 
AAA A-,A-/B8 87C21C2 D D:9D:>F! F !F 7F  
F
F F 
FF!
F.-F.c                    ^ Sn[        XU5      u  pp4U(       aQ  [        [        [        UR	                  S5      5      5      mU(       a  [
        O[        n[        U4S jU 5       U 5      n XX#4$ )NFrS   c              3   <   >#    U  H  u  pUT::  d  M  Uv   M     g 7fr   r   )r   r    r
intversions      r"   r   win32_ver.<locals>.<genexpr>  s     Bhda!z/hs   	)r   r1   rW   r   r   _WIN32_CLIENT_RELEASES_WIN32_SERVER_RELEASESnext)rr   r   r   r   r   releasesr   s         @r"   	win32_verr     s^    I%/e%D"G%3sGMM#$678
-6)<RBhBGLS''r   c                  L   Sn [         R                  R                  U 5      (       d  g  SS Kn[        U S5       nUR                  U5      nS S S 5        WS   nSn[         R                  " 5       R                  nUS;   a  SnXEU4$ ! [         a     g f = f! , (       d  f       NP= f)Nz0/System/Library/CoreServices/SystemVersion.plistr   r*   ProductVersionr$   r$   r$   )ppczPower MacintoshPowerPC)	r.   r7   existsplistlibr   r9   loadunamemachine)fnr   rF   r   rr   versioninfor   s          r"   _mac_ver_xmlr     s    	;B77>>" 
b$1]]1 
!"GKhhj  G,,((   
s   B B
BB
B#c                 (    [        5       nUb  U$ XU4$ r   )r   )rr   r   r   ru   s       r"   mac_verr     s#     >D ((r   IOSVersionInfo)rq   rr   modelis_simulatorc                     [         R                  S:X  a  SS KnUR                  5       nUb  [	        U6 $ [	        XX#5      $ )Niosr   )r4   rj   _ios_supportget_platform_iosr   )rq   rr   r   r   r   r   s         r"   ios_verr     s?     ||u..0!6**&5??r   c                 d    SSK Jn   UR                  U 5      nUc  U$ U$ ! [         a    Us $ f = f)Nr   )System)	java.langr   getPropertyr2   )namedefaultr   values       r"   _java_getpropr    s=     ""4(=N s       //c                 H   SS K nUR                  SSS9   SS Kn[	        SU5      n[	        SU 5      n Uu  pgn[	        SU5      n[	        SU5      n[	        S	U5      nXgU4nUu  pn[	        S
U5      n[	        SU	5      n	[	        SU
5      n
XU4nXX#4$ ! [         a    XX#4s $ f = f)Nr   java_ver)rT      )removezjava.vendorzjava.versionzjava.vm.namezjava.vm.vendorzjava.vm.versionzjava.os.archzjava.os.namezjava.os.version)warnings_deprecatedr  r   r  )rr   vendorvminfoosinfor  javavm_name
vm_release	vm_vendoros_name
os_versionos_archs               r"   r  r    s     G4/ =&1FNG4G%+"GNG4G.	:I0*=J)+F#) GNG4GNG4G0*=J')FF**!  /../s   B B! B!
AndroidVerz7release api_level manufacturer model device is_emulatorc                 D  ^	^
 [         R                  S:X  an   SSKJnJnJm	  [        U" S5      S5      m
Xw4T
l        U	U
4S jnU" SU 5      n [        U" SU5      5      nU" S	U5      nU" S
U5      nU" SU5      nU" SS5      S:H  n[        XX#XE5      $ ! [         a     Nf = f)Nandroidr   )CDLLc_char_pcreate_string_bufferzlibc.so__system_property_getc                    > SnT" U5      nT" U R                  S5      U5      nUS:X  a  U$ UR                  R                  SS5      $ )N\   zUTF-8r   backslashreplace)encoder  r?   )r  r  PROP_VALUE_MAXbufferlengthr  system_property_gets        r"   getpropandroid_ver.<locals>.getpropM  sM    !#-n=,T[[-A6JQ; #N!<<..w8JKKr   zro.build.version.releasezro.build.version.sdkzro.product.manufacturerzro.product.modelzro.product.devicezro.kernel.qemur   1)r4   rj   ctypesr  r  r  r   argtypesr   r   r  )rr   	api_levelmanufacturerr   deviceis_emulatorr  r  r&  r  r%  s            @@r"   android_verr/  ?  s    
||y 	@CC #*$y/;R"S,4+?(
L 8'BGG$:IFGI"#<lKL.6E0&9F!"2C8C?KLF F9  		s   
B 
BBc                    U S:X  aa  US:  a  XU4$ UR                  S5      nU(       a3   [        US   5      nUS-
  n[        U5      US'   SR                  U5      nUS:  a  Sn OSn OU S;   a  S	n XU4$ ! [         a     N$f = f)
NSunOS5rS   r   rT   6Solarisr_   r`   Windows)r   r   rX   rY   r   )rq   rr   r   r[   r   s        r"   system_aliasr7  f  s     S=G++MM#&AaD	 	5z!((1+S=F F	%	%
 G##'  s   A4 4
B Bc                     SR                  S [        [        U 5       5       5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  S	S5      nUR                  S
S5      nUR                  SS5      nUR                  SS5      n UR                  SS5      nX!:X  a  OUnM  U(       a   US   S:X  a  US S nU(       a  US   S:X  a  M  U$ )N-c              3   @   #    U  H  oR                  5       v   M     g 7fr   )ro   )r   xs     r"   r   _platform.<locals>.<genexpr>  s     =+<a		+<s    _/\:;"()unknownr$   z--ri   )rY   filterr0   replace)argsrj   cleaneds      r"   	_platformrK    s!    xx=6#t+<==H S)HS)Hc*HS)HS)HS)HS)HS)H 	2.H ""4-	 
 x|s*CR= x|s* Or   c                 v     SS K n UR                  5       $ ! [         a    U s $ f = f! [         a    U s $ f = fNr   )socketr   gethostnamer3   )r  rN  s     r"   _noderP    sI    !!##	  
  s    ) &&88c                    [         R                  R                  U 5      n [         R                  R                  U 5      (       a  [         R                  R	                  [         R                  R                  [         R                  R                  U 5      [         R                  " U 5      5      5      n [         R                  R                  U 5      (       a  M  U $ r   )r.   r7   abspathislinknormpathrY   dirnamereadlink)filepaths    r"   _follow_symlinksrX    s    
 wwx(H
''..
"
"77##GGLL2BKK4IJL ''..
"
" Or   c                 P   [         R                  S;   a  U$  SS Kn[	        U 5      n [        [        R                  SS9n UR                  SSU /UR                  US9nU(       d  U$ UR                  S5      $ ! [         a    Us $ f = f! [        UR                  4 a    Us $ f = f)	N>   ra   r   tvosr`   r_   watchosr   C)LC_ALLfilez-b)re   envzlatin-1)r4   rj   rk   r   rX  dictr.   environrl   rm   r3   rn   r?   )targetr  rk   r_  outputs        r"   _syscmd_filerd    s     ||JJ f%F rzz#
&C((&$)?0:0B0B-0 ) 2
  ==###   Z223 s#   A8  B
 8BB
B%$B%)r$   	WindowsPE)r$   r6  )r$   MSDOSc                    U(       d&  SS K nUR                  S5      n[        US-  5      S-   nU (       a  [        U S5      nOSnU(       dZ  U [        R
                  :X  aF  [        R                  [        ;   a+  [        [        R                     u  pgU(       a  UnU(       a  UnX4$ SU;  a	  SU;  a  X4$ SU;   a  S	nOS
U;   a  SnSU;   a  SnX4$ SU;   a  SnX4$ SU;   a  SU;   a  SnX4$ Sn X4$ SU;   a  SnX4$ SU;   a  SnX4$  X4$ )Nr   P   bitr$   r5   zshared objectz32-bit32bitz64-bit64bitELFzMach-OPEr6  re  COFFzMS-DOSrf  )structcalcsizerX   rd  r4   r5   rj   _default_architecture)r5   bitslinkagerp  sizefileoutr   r[   s           r"   architecturerw    s[   . s#4!8}u$ z2.S^^# <<00(6DA}7"g'E} 7	W	 " =! 
W	 = 
!G = G = 
7	 = 
W	
 = 	=r   c                  .    [        SS5      tp / SQ[        U 5         n U (       a  U $  [
        R                  R                  SS5      =(       d     [
        R                  R                  SS5      $ ! [        [        4 a     NYf = f! [         a     Nif = f)Nr}   Architecture)x86MIPSAlphar   NARMia64NNAMD64NNARM64PROCESSOR_ARCHITEW6432r$   PROCESSOR_ARCHITECTURE)r   r   r   
IndexErrorr3   r.   ra  r   )archr>  s     r"   _get_machine_win32r  E  s    ~6
		 $iD   	

/4 	5


/4 J' 		  s"   B A1 1BB
BBc                   <    \ rS rSr\S 5       rS rS rS rS r	Sr
g)	
_Processoria  c                 r    [        U S[        R                   3U R                  5      nU" 5       =(       d    S$ )Nget_r$   )r   r4   rj   from_subprocess)clsfuncs     r"   r   _Processor.getb  s-    sd3<<.133F3FGv|r   c                       [        SSS5      u  pU SU  3$ ! [         a+    [        R                  R	                  S[        5       5      s $ f = f)Nr}   ManufacturerCaption, PROCESSOR_IDENTIFIER)r   r3   r.   ra  r   r  )r,  captions     r"   	get_win32_Processor.get_win32g  sX    	0$.uni$P!L Yb//  	P::>>"8:L:NOO	Ps    2AAc                  h     SS K n U R                  SS5      u  pUS:  a  S$ S$ ! [         a     g f = f)Nr   zSYI$_CPU   r|  VAX)vms_libgetsyir   )r  csid
cpu_numbers      r"   get_OpenVMS_Processor.get_OpenVMSo  sE    	;  '~~j!<D(C/7:U:	  		s   $ 
11c                      [         R                  R                  R                  S5      (       a  [        R
                  " 5       R                  $ g)N	simulatorarm64)r4   implementation
_multiarchendswithr.   r   r   r   r   r"   get_ios_Processor.get_ios{  s4    ((11+>>88:%%%r   c                       SS K n  U R                  SS/U R                  SSS9R	                  5       $ ! [         a     g f = f! [
        U R                  4 a     g f = f)Nr   r   z-pTutf8)re   rf   rg   )rk   r   rl   rm   ro   r3   rn   )rk   s    r"   r  _Processor.from_subprocess  sx    		**$!))	 + 
 eg  		 667 		s   3 +A 
A A AAr   N)__name__
__module____qualname____firstlineno__classmethodr   r  r  r  r  __static_attributes__r   r   r"   r  r  a  s(     0;
r   r  c                     U S:X  a  S$ U $ )NrF  r$   r   )vals    r"   _unknown_as_blankr    s    	!2*s*r   c                   r   ^  \ rS rSrSr\R                  S 5       rU 4S jr\	S 5       r
S rS rS rS	rU =r$ )
uname_resulti  )rq   noderr   r   r   	processorc                 <    [        [        R                  5       5      $ r   )r  r  r   selfs    r"   r  uname_result.processor  s     !122r   c                 `   > [         R                  " [        TU ]  5       U R                  45      $ r   )	itertoolschainsuper__iter__r  )r  	__class__s    r"   r  uname_result.__iter__  s)    G^^
 	
r   c                     [        U R                  5      S-
  nU R                  " U /UQ76 n[        U5      US-   :w  a  SU S[        U5       3n[        U5      eU$ )Nr'   z	Expected z arguments, got )r0   _fields__new__	TypeError)r  iterable
num_fieldsr   msgs        r"   _makeuname_result._make  s`     %)
S,8,v;*q.(j\)9#f+GCC. r   c                     [        U 5      U   $ r   )r1   )r  r   s     r"   __getitem__uname_result.__getitem__  s    T{3r   c                 <    [        [        [        U 5      5      5      $ r   )r0   r1   iterr  s    r"   __len__uname_result.__len__  s    5d$%%r   c                 V    [         [        U 5      S [        U R                  5      S-
   4$ Nr'   )r  r1   r0   r  r  s    r"   
__reduce__uname_result.__reduce__  s'    U4[)?#dll*;a*?@@@r   r   )r  r  r  r  r  	functoolscached_propertyr  r  r  r  r  r  r  r  __classcell__)r  s   @r"   r  r    sR     OG3 3
   &A Ar   r  uname_result_basez#system node release version machinec                  f   [         b  [         $  [        R                  " 5       =u  pp#pE[        U5      (       d  U S:X  a   [        5       u  p#pgU=(       d
    [        5       nU(       a  U(       d3  [        U 5      u  pnU S:X  a  Sn OU S:X  a  US:X  a  Sn SUS S :X  a  S	nOSnU S
;   a  U(       d  U S:X  a  SnOSnSn O2U S S S:X  a)  [        5       u  p(pSn SR                  U	5      nU(       d  UnU S:X  a  U(       a  US:X  a  UnSnU S:X  a
  US:X  a  Sn S	n[        R
                  S:X  a  Sn [        5       R                  n[        R
                  S:X  a  [        5       u  p  nXX#U4n[!        [#        [$        U5      6 q [         $ ! [         a%    [        R
                  n [        5       nS=n=p4Sn GNf = f)Nr$   r   r_   zMicrosoft Windowsr6  	Microsoftz6.0rT   r   r5  rk  16bitr   r  Javar  OpenVMSr   r  Androidr   )_uname_cacher.   r   r2   r4   rj   rP  anyr   r  rx   r  rY   r/  rr   r   r  rW   r  )rq   r  rr   r   r   infosr   r   r  r  r  r>  valss                r"   r   r     s    :<((*D/g u:: W+4;(Gc5!3!5G G'26':$FW ,,";&7i+?
 #GBQK'%G G ''W$%G%GFBQZ6!.6j+GVFii'G  'S.GG I!5 ||y -'' ||u '	A72D%6!=>LU  w&((('	s   F +F0/F0c                  *    [        5       R                  $ r   )r   rq   r   r   r"   rq   rq   *  s     7>>r   c                  *    [        5       R                  $ r   )r   r  r   r   r"   r  r  3  s     7<<r   c                  *    [        5       R                  $ r   )r   rr   r   r   r"   rr   rr   =       7??r   c                  *    [        5       R                  $ r   )r   r   r   r   r"   r   r   F  r  r   c                  *    [        5       R                  $ r   )r   r   r   r   r"   r   r   O  r  r   c                  *    [        5       R                  $ r   )r   r  r   r   r"   r  r  X  s     7r   c                    U c  [         R                  n [        R                  U S 5      nUb  U$ [         R                  R                  S5      (       a|  [        R                  " S[        R                  5      nSnUR                  U 5      nUc  [        S[        U 5      -  5      eUR                  5       u  pVpxn	Uc  Sn[         R                  n
OSU ;   aY  [        R                  " S5      nSnUR                  U 5      nUc  [        S[        U 5      -  5      eUR                  5       u  pVpxSn
O{[        R                  " S	[        R                  5      nUR                  U 5      nUc  [        S
[        U 5      -  5      eUR                  5       u  pVpxn
SnUc  SnOU(       a  US-   U-   n[        [         S5      (       a  [         R                  u  pnO-[        [         S5      (       a  [         R                  u  pnOSnSnUR!                  S5      n[#        U5      S:X  a"  UR%                  S5        SR'                  U5      nX5XXgU
4nU[        U '   U$ )Nr  zL([\w.+]+)\s*\(#?([^,]+)(?:,\s*([\w ]*)(?:,\s*([\w :]*))?)?\)\s*\[([^\]]+)\]?Jythonz&failed to parse Jython sys.version: %sr$   PyPyzE([\w.+]+)\s*\(#?([^,]+),\s*([\w ]+),\s*([\w :]+)\)\s*\[PyPy [^\]]+\]?z$failed to parse PyPy sys.version: %szu([\w.+]+)\s*(?:experimental free-threading build\s+)?\(#?([^,]+)(?:,\s*([\w ]*)(?:,\s*([\w :]*))?)?\)\s*\[([^\]]+)\]?z'failed to parse CPython sys.version: %sCPythonr=  _git
_mercurialrS   r)   r   )r4   r   _sys_version_cacher   rj   
startswithr   r   r6   rp   r   reprr>   hasattrr  r  r   r0   rU   rY   )sys_versionr   jython_sys_version_parserr  rp   r   buildno	builddate	buildtimer>  compilerpypy_sys_version_parsercpython_sys_version_parserbranchrevisionr[   s                   r"   _sys_versionr  h  sL   * kk  ##K6F
||v&&$&JJ !hh%(! )//<=8[!"# # 5:LLN1)I<<	;	"$** #!
 '--k:=C!+./ 0 016.) &(ZZ
 !hh&(" +00==9[!"# # lln 	9)I!C)3IsF!hh8	l	#	#!nn8 	cA
1v{	((1+ Vw8LF&,{#Mr   c                      [        5       S   $ rM  r  r   r   r"   python_implementationr    s     >!r   c                      [        5       S   $ r  r  r   r   r"   python_versionr    s     >!r   c                  L    [        [        5       S   R                  S5      5      $ )Nr'   rS   )r1   r  r   r   r   r"   python_version_tupler    s!     "((-..r   c                      [        5       S   $ )Nr)   r  r   r   r"   python_branchr    s     >!r   c                      [        5       S   $ )NrT   r  r   r   r"   python_revisionr
    s     >!r   c                      [        5       SS $ )Nr   r   r  r   r   r"   python_buildr    s     >!Ar   c                      [        5       S   $ )Nr   r  r   r   r"   python_compilerr    s     >!r   c           	         [         R                  X4S 5      nUb  U$ [        5       u  p4pVpxXx:X  a  SnU (       a  [        X5U5      u  p5nUS:X  a;  [        R
                  S:X  a  [        5       u  p5  n	O[        5       S   n
U
(       a  SnU
nUS:X  a.  [        U5      u  ppU(       a  [        X55      nO[        X5Xm5      nOUS:X  a  [        5       u  nn[        X5XxSUU-   5      nOUS	:X  a?  [        5       u  nnnu  nnnU(       d  U(       d  [        X5U5      nOO[        X5US
UUU5      nO>U(       a  [        X55      nO+[        [        R                  5      u  nn[        X5UUUU5      nU[         X4'   U$ )Nr$   Darwinr   r   macOSr6  Linuxwithr  on)_platform_cacher   r   r7  r4   rj   r   r   r   rK  rQ   r  rw  r5   )aliasedterser   rq   r  rr   r   r   r  r>  macos_releaserelversr   r   rj   libcnamelibcversionr   r    r  r  r  r  rs  rt  s                             r"   rj   rj      s~   &   '!148F :?6F'G	#/#I <<5 $+I!FQ#IaLM ' )' 23 1H '?H	7	 (
+Vg#%k13 
6	7?z41f4w
G ':H '!%!(*g?H  1H(8MD' '!*D';H )1OW$%Or   )z/etc/os-releasez/usr/lib/os-releasec                    SSSS.n[         R                  " S5      n[         R                  " S5      nU  HK  nUR                  U5      nUc  M  UR                  SUR	                  S5      5      XR	                  S5      '   MM     U$ )	Nr  linux)NAMEIDPRETTY_NAMEzA^(?P<name>[a-zA-Z0-9_]+)=(?P<quote>["']?)(?P<value>.*)(?P=quote)$z\\([\\\$\"\'`])z\1r  r  )r   r   rp   subgroup)linesru   os_release_lineos_release_unescapelinemos         r"   _parse_os_releaser)  u  s     D jjMO **%78""4(>%8%<%<rxx(&D&!"  Kr   c                  h   [         cc  S n [         H5  n [        USS9 n[        U5      q S S S 5          [         R                  5       $    [	        U SSR                  [        5       35      e[         R                  5       $ ! , (       d  f       N[= f! [         a  nUR
                  n  S nAM  S nAff = f)Nzutf-8)rg   zUnable to read files r  )_os_release_cache_os_release_candidatesr9   r)  r3   errnorY   copy)r-  	candidaterF   es       r"   freedesktop_os_releaser1    s    
  /I )g6!(9!(<% 7 !!## 0 '		2H(I'JK 
 !!## 76    s-   
BA?B?
B		B
B1B,,B1__main__r  z--terse
nonaliasedz--nonaliased)Nr$   r$   i @  )r$   )r$   r$   r$   r^   )r$   r$   r$   r$   )r$   r   r$   )r$   r$   r$   F)r$   r$   r   r   )r$   r   r$   r$   r$   Fr   )FF)H__copyright____version__collectionsr.   r   r4   r  r  r   r   r   r#   rQ   r]   rx   r   r   r   r   r   r   r   r   r   
namedtupler   r   r  r  r  r/  r7  rK  rP  rX  rd  rr  r5   rw  r  r  r  r  r  r   rq   r  rr   r   r   r  r  r  r  r  r  r  r
  r  r  r  rj   r,  r+  r)  r1  r  argvr  r  printexitr   r   r"   <module>r;     sn  z*   	 	 
   bR	
B
C	 N`2 02#<4$n(*  [9*v
(),)* ''2@ 	!+H ##KM
 LN!"FN&$T@	 $N    NNR K\8/ /d+)A-/)AX ^D
  fP
	/ Kb D  6$2 z 9I$9E388+NNchh4NG	(7E
"#HHQK [)  Ds   F. .F:9F: