
    z%iC                        	 d Z d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ddddddddd	d	d

Zd Z	dFdZ
dGdZ	 	 dHdZ	 ddlZd Zg dZg dZd Zd Zd ZdIdZd ZdJdZd ZdKdZd Zd ZdGdZd  ZdGd!Zd"d#d$dZej@                  ddfd%Z!d& Z" G d' d(      Z#d) Z$ G d* d+ ejJ                  d,d-            Z&da'd. Z(d/ Z)d0 Z*d1 Z+d2 Z,d3 Z-d4 Z.i Z/dLd5Z0d6 Z1d7 Z2d8 Z3d9 Z4d: Z5d; Z6d< Z7i Z8dMd=Z9d>Z:da;d? Z<d@ Z=e>dAk(  r^dBej~                  v xs dCej~                  v Z@dDej~                  vxr dEej~                  vZA eB e9eAe@              ej                  d       yy# e$ r d ZY (w xY w)Na  
    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                     t        j                  d      }g }|j                  |       D ])  }|dvs	 t        |d      }d}|j                  ||f       + |S # t        $ r t
        j                  |d      }Y 8w xY w)Nz([0-9]+|[._+-])z._+-r   d   r   )recompilesplitint
ValueError_ver_stagesgetextend)versioncomponent_reresultvts        </home/uftp/.pyenv/versions/3.12.0/lib/python3.12/platform.py_comparable_versionr#      s    ::01LF( "F?*2J MM1a&!" M  *OOAq)*s   AA98A9 c                 r   	 | sX	 t        j                  d      }|j                  d      }t        |      dk(  rt	        |      S 	 t        j                  } | s||fS t        j                  dt        j                        }t        }t         j                  j                  |       } t!        | d      5 }|j#                  |      }	d}
|
t        |	      k  r*d|	v sd	|	v r|j%                  |	|
      }nd }|r|j'                         t        |	      k(  r7|j#                  |      }|r!|	t)        |
t        |	      d
z
        d  |z   }	d}
~|sn|j+                         D cg c]  }||j-                  d      n| c}\  }}}}}}|r|sd}nY|r|dk7  rd}|}nM ||       ||      kD  r<|}n9|r7|dk7  r2d}|r|r ||       ||      kD  r|}|r|t        |       d  |k7  r||z   }|j'                         }
|
t        |	      k  r*d d d        ||fS # t
        t        t        f$ r Y w xY wc c}w # 1 sw Y   ||fS xY w)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      si    	**23CIIqI)E5zQU|#  ^^
<** B DF88	MK 	A !!*-J	j$	 "1	"CK& H$6&&vs33v;.y)#CS[4-?$@$ABUJFC E% '(m":E%AHe\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   ?H
 1B'H*H%4BH*
H"!H"%H**H6c           	          	 | j                  d      }|r|j                  |       	 t        t        t        t        t
        |                  }dj                  |d d       } | S # t        $ r |}Y #w xY w)N.   )r   appendlistmapstrr   r   join)r   buildlstringss       r"   _norm_versionr]      sr     	cA	s3C,- hhwr{#GN  s   'A$ $A21A2win32win16dosc           	         	 t         j                  |vr| ||fS dd l}dD ]/  }	 |j                  ||j                  |j                  ddd      } n | ||fS t        j                  d      }|j                         }|j                  |      }	|	9|	j                         \  } }}|d   dk(  r|d d }|d   dk(  r|d d }t        |      }| ||fS # t
        |j                  f$ r
}Y d }~d }~ww xY w)	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     s0   	 ||..w'' 6 (	**31;1C1C2<2D2D044<15 + 7D ( w'' - .J
 ::<DA}#$88: 2;#crlG2;#crlG  (7G##3 667 		s   +CC+&C+c                     ddd|    } t        j                  dj                  dj                  |      |             j	                  d      }d |D        }|D ci c]  }|d   |d	    c}fd
|D        S c c}w )NWin32_OperatingSystemWin32_Processor)OSCPUzSELECT {} FROM {}, c              3   >   K   | ]  }|j                  d         yw)=N)	partition).0is     r"   	<genexpr>z_wmi_query.<locals>.<genexpr>J  s     51akk#&5s   r   r)   c              3   (   K   | ]	  }|     y wN )r   k	dict_datas     r"   r   z_wmi_query.<locals>.<genexpr>L  s     +	!+s   )_wmi
exec_queryformatrY   r   )tablekeysdata
split_datar   r   s        @r"   
_wmi_queryr   A  s    )$
  299HHTN 
  5; 	 65
)34AQqT1Q4Z4	+d++ 5s   A8c                      t        d      )Nznot supported)r3   )r   s    r"   r   r   >  s    o&&    ))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   post2022Server))r   r   i|O  
2022Server))r   r   icE  
2019Server)r   
2016Server)r   2012ServerR2)r   
2012Server)r   2008ServerR2)r   
2008Server)r   
2003Server)r   
2000Serverc                      t               dv S )N)IoTUAP
NanoServerWindowsCoreHeadless	IoTEdgeOS)win32_editionr   r   r"   win32_is_iotr   j  s    ?ZZZr   c                     	 	 dd l } 	 d}| j                  | j                  |      5 }| j                  |d      d   cd d d        S # t        $ r dd l} Y Mw xY w# 1 sw Y   nxY w	 y # t        $ r Y y w xY w# t        $ r Y y w xY w)Nr   ,SOFTWARE\Microsoft\Windows NT\CurrentVersion	EditionId)winregImportError_winreg	OpenKeyExHKEY_LOCAL_MACHINEQueryValueExr3   )r   cvkeykeys      r"   r   r   m  s    	%	CE!!&";";UC @s**3<Q?@ @  	%$	%@ @ @
   		   sP   A A& A	A& AA5 AA5 A!A& &	A21A25	B Bc                 |   	 t        dddddd      \  } }}}}t        |      dk(  }|r|dk7  r	d	| d
| }nd	| }| |||fS # t        $ r Y nw xY w	 ddlm} n# t
        $ r	 | ||dfcY S w xY w |       }t        |dd      dk(  }	 t               d   } t        t        | j                  d
            \  }	}
}n9# t        $ r- |j                  xs |d d \  }	}
}dj                  |	|
|      } Y nw xY w|d d |	|
fk(  r<	 dj                  |j                        }n# t        $ r |d d dk(  rd	|dd  z   }Y nw xY w	 	 dd l}n# t
        $ r dd l}Y nw xY w	 d}|j#                  |j$                  |      5 }|j'                  |d      d   }d d d        n# 1 sw Y   nxY wn# t        $ r Y nw xY w# t
        $ r Y nw xY w| |||fS )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   )r   csdptyper   spmajorspminor	is_clientr   winvermajorminorrZ   r   r   r   s                  r"   
_win32_verr     s6   <F%%=
8,w &!+	w#~wiq	*Cwi.CUI-- )) )UD(()  F3q8I<-"!#w}}S'9:ue <$55Cue&&ueU;< bqzeU^#	&-- 9 9:C 	&3Bx?*SXo	&	% 	%$	%
	CE!!&";";UC Cs++C?BC C C 		   C	))s   >A 	AAA A*)A*0B6 63C,+C,:D D21D27D< ;F) <E	F) EF) F .F	F FF 	F&%F&)	F54F5c                     d}t        |||      \  }}}}|rKt        t        t        |j	                  d                  |rt
        nt        }t        fd|D        |       } | |||fS )NFrS   c              3   4   K   | ]  \  }}|k  s|  y wr   r   )r   r    r
intversions      r"   r   zwin32_ver.<locals>.<genexpr>  s     Bda!z/Bs   )r   r1   rW   r   r   _WIN32_CLIENT_RELEASES_WIN32_SERVER_RELEASESnext)rr   r   r   r   r   releasesr   s         @r"   	win32_verr     sh    I%/e%D"GS%3sGMM#$678
-6)<RBhBGLGS%''r   c                  2   d} t         j                  j                  |       sy 	 dd l}t        | d      5 }|j                  |      }d d d        d   }d}t        j                         j                  }|dv rd}|||fS # t        $ r Y y w xY w# 1 sw Y   HxY w)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,,K((   s   A> B>	B
	B
Bc                 *    	 t               }||S | ||fS r   )r   )rr   r   r   ru   s       r"   mac_verr     s*     >D K((r   c                 `    ddl m} 	 |j                  |       }||S |S # t        $ r |cY S w xY w)Nr   )System)	java.langr   getPropertyr2   )namedefaultr   values       r"   _java_getpropr     s=     ""4(=N s     --c                 0   	 	 dd l }t        d|      }t        d|       } |\  }}}t        d|      }t        d|      }t        d|      }|||f}|\  }}	}
t        d|
      }
t        d|      }t        d	|	      }	||	|
f}| |||fS # t        $ r	 | |||fcY S w xY w)
Nr   zjava.vendorzjava.versionzjava.vm.namezjava.vm.vendorzjava.vm.versionzjava.os.archzjava.os.namezjava.os.version)r   r   r   )rr   vendorvminfoosinfojavavm_name
vm_release	vm_vendoros_name
os_versionos_archs              r"   java_verr	    s    	/ =&1FNG4G%+"GZNG4G.	:I0*=Jj)+F#) GZNG4GNG4G0*=Jj')FFFF**!  /../s   B BBc                     	 | dk(  r[|dk  r| ||fS |j                  d      }|r3	 t        |d         }|dz
  }t        |      |d<   dj                  |      }|dk  rd} n	d} n| dv rd	} | ||fS # t        $ r Y !w xY w)
NSunOS5rS   r   rT   6Solarisr_   r`   Windows)r   r   rX   rY   r   )rq   rr   r   r[   r   s        r"   system_aliasr  !  s     S=7G++MM#&AaD	 	5z!((1+S=F F	%	%
 7G##'  s   A- -	A98A9c                     	 dj                  d t        t        |       D              }|j                  dd      }|j                  dd      }|j                  dd      }|j                  dd      }|j                  dd      }|j                  d	d      }|j                  d
d      }|j                  dd      }|j                  dd      }	 |j                  dd      }||k(  rn|}|d   dk(  r|d d }|d   dk(  r|S )N-c              3   <   K   | ]  }|j                           y wr   )ro   )r   xs     r"   r   z_platform.<locals>.<genexpr>Q  s     =a	=s    _/\:;"()unknownr$   z--ri   )rY   filterr0   replace)argsrj   cleaneds      r"   	_platformr$  K  s$    xx=6#t+<==H S)HS)Hc*HS)HS)HS)HS)HS)H 	2.H ""4-h	 
 2,#
CR= 2,#
 Or   c                 t    	 	 dd l }	 |j                         S # t        $ r | cY S w xY w# t        $ r | cY S w xY wNr   )socketr   gethostnamer3   )r   r'  s     r"   _noder)  k  sN    !!##	  
  s    ) &&77c                    	 t         j                  j                  |       } t         j                  j                  |       rt         j                  j	                  t         j                  j                  t         j                  j                  |       t        j                  |                   } t         j                  j                  |       r| S r   )r.   r7   abspathislinknormpathrY   dirnamereadlink)filepaths    r"   _follow_symlinksr1  z  s     wwx(H
''..
"77##GGLL2BKK4IJL ''..
" Or   c                 L   	 t         j                  dv r|S 	 dd l}t	        |       } t        t        j                  d      }	 |j                  dd| g|j                  |      }|s|S |j                  d      S # t        $ r |cY S w xY w# t        |j                  f$ r |cY S w xY w)	N)ra   r_   r`   r   C)LC_ALLfilez-b)re   envzlatin-1)r4   rj   rk   r   r1  dictr.   environrl   rm   r3   rn   r?   )targetr   rk   r6  outputs        r"   _syscmd_filer;    s     ||00 f%F rzz#
&C((&$)?0:0B0B-0 ) 2
  ==###   Z223 s#   A8 !B	 8BB	B#"B#)r$   	WindowsPE)r$   r  )r$   MSDOSc                    	 |s&dd l }|j                  d      }t        |dz        dz   }| rt        | d      }nd}|sO| t        j
                  k(  r<t        j                  t        v r"t        t        j                     \  }}|r|}|r|}||fS d|vrd|vr||fS d|v rd	}nd
|v rd}d|v rd}||fS d|v rd|v rd}||fS d}||fS d|v rd}||fS d|v rd}||fS 	 ||fS )Nr   P   bitr$   r5   zshared objectz32-bit32bitz64-bit64bitELFPEr  r<  COFFzMS-DOSr=  )structcalcsizerX   r;  r4   r5   rj   _default_architecture)r5   bitslinkagerG  sizefileoutr   r[   s           r"   architecturerN    sY   * s#4!8}u$ z2.S^^# <<00(6DAqW}7"g'EW} 7	W	  = 
!G = G = 
7	 = 
W	
 = 	=r   c                     	 t        dd      ^} }	 g dt        |          } | r| S t
        j                  j                  dd      xs  t
        j                  j                  dd      S # t        t        f$ r Y Sw xY w# t        $ r Y bw xY w)Nr}   Architecture)x86MIPSAlphar   NARMia64NNAMD64NNARM64PROCESSOR_ARCHITEW6432r$   PROCESSOR_ARCHITECTURE)r   r   r   
IndexErrorr3   r.   r8  r   )archr  s     r"   _get_machine_win32r\    s    ~6
		 $iD 


/4 	5


/4 J' 		  s"   A< A' 'A98A9<	BBc                   .    e Zd Zed        Zd Zd Zd Zy)
_Processorc                 h    t        | dt        j                   | j                        } |       xs dS )Nget_r$   )r   r4   rj   from_subprocess)clsfuncs     r"   r   z_Processor.get  s-    sd3<<.133F3FGv|r   c                      	 t        ddd      \  } }| d|  S # t        $ r+ t        j                  j	                  dt                     cY S w xY w)Nr}   ManufacturerCaption, PROCESSOR_IDENTIFIER)r   r3   r.   r8  r   r\  )manufacturercaptions     r"   	get_win32z_Processor.get_win32   sZ    	0$.uni$P!L' Yb//  	P::>>"8:L:NOO	Ps    1AAc                  f    	 dd l } | j                  dd      \  }}|dk\  rdS dS # t        $ r Y y w xY w)Nr   zSYI$_CPU   rS  VAX)vms_libgetsyir   )ro  csid
cpu_numbers      r"   get_OpenVMSz_Processor.get_OpenVMS(  sG    	;  '~~j!<D*(C/7:U:	  		s   $ 	00c                      	 	 dd l } 	 | j                  ddg| j                  dd      j	                         S # t        $ r Y y w xY w# t
        | j                  f$ r Y y w xY w)Nr   r   z-pTutf8)re   rf   rg   )rk   r   rl   rm   ro   r3   rn   )rk   s    r"   ra  z_Processor.from_subprocess1  s}    			**$!))	 + 
 eg  		 667 		s    7 .A 	AAAAN)__name__
__module____qualname__classmethodr   rk  rs  ra  r   r   r"   r^  r^    s#     0;r   r^  c                     | dk(  rdS | S )Nr  r$   r   )vals    r"   _unknown_as_blankr|  D  s    	!2*s*r   c                   j     e Zd Z	 dZej
                  d        Z fdZed        Z	d Z
d Zd Z xZS )uname_result)rq   noderr   r   r   	processorc                 <    t        t        j                               S r   )r|  r^  r   selfs    r"   r  zuname_result.processorX  s     !122r   c                 ^    t        j                  t        |          | j                  f      S r   )	itertoolschainsuper__iter__r  )r  	__class__s    r"   r  zuname_result.__iter__\  s)    G^^
 	
r   c                     t        | j                        dz
  } | j                  | g| }t        |      |dz   k7  rd| dt        |       }t        |      |S )Nr'   z	Expected z arguments, got )r0   _fields__new__	TypeError)rb  iterable
num_fieldsr   msgs        r"   _makezuname_result._makeb  sb     %)
S,8,v;*q.(j\)9#f+GCC. r   c                     t        |       |   S r   )r1   )r  r   s     r"   __getitem__zuname_result.__getitem__l  s    T{3r   c                 <    t        t        t        |                   S r   )r0   r1   iterr  s    r"   __len__zuname_result.__len__o  s    5d$%%r   c                 V    t         t        |       d t        | j                        dz
   fS Nr'   )r~  r1   r0   r  r  s    r"   
__reduce__zuname_result.__reduce__r  s'    U4[)?#dll*;a*?@@@r   )rv  rw  rx  r  	functoolscached_propertyr  r  ry  r  r  r  r  __classcell__)r  s   @r"   r~  r~  J  sQ    
 OG3 3
   &Ar   r~  uname_result_basez#system node release version machinec                     	 t         t         S 	 t        j                         x\  } }}}}}t        |      s| dk(  rt               \  }}}}|xs
 t               }|r|s0t        |       \  } }}| dk(  rd} n| dk(  r|dk(  rd} d|d d k(  rd	}nd}| d
v r|s
| dk(  rd}nd}d} n.| d d dk(  r&t               \  }}}	}
d} dj                  |	      }|s|}| dk(  r|r|dk(  r|}d}| dk(  r	|dk(  rd} d	}| ||||f}t        t        t        |       a t         S # t        $ r& t        j
                  } t               }dx}x}}d}Y w xY w)Nr$   r   r_   zMicrosoft Windowsr  	Microsoftz6.0rT   r   r  rB  16bitr   r  Javarg  OpenVMSr   )_uname_cacher.   r   r2   r4   rj   r)  anyr   r\  rx   r	  rY   r~  rW   r|  )rq   r  rr   r   r   infosr   r   r   r   r  valss               r"   r   r   y  s   	 :<((*D/gw% u: W+4;(GWc55!3!5G G'26':$FGW ,,";&7i+?
 #GBQK'%G G ''W$%G%GFBQZ6!.6j+GVVVFii'G  'S.GG I!54'72D%6!=>LC  w&((('G	s   D +D=<D=c                  ,    	 t               j                  S r   )r   rq   r   r   r"   rq   rq     s    
 7>>r   c                  ,    	 t               j                  S r   )r   r  r   r   r"   r  r    s     7<<r   c                  ,    	 t               j                  S r   )r   rr   r   r   r"   rr   rr         
 7??r   c                  ,    	 t               j                  S r   )r   r   r   r   r"   r   r     r  r   c                  ,    	 t               j                  S r   )r   r   r   r   r"   r   r     r  r   c                  ,    	 t               j                  S r   )r   r  r   r   r"   r  r     s     7r   c                 2   	 | t         j                  } t        j                  | d       }||S t	        j
                  dt        j                        }t         j                  j                  d      rWd}|j                  |       }|t        dt        |       z        |j                         \  }}}}}	|d}t         j                  }
nd| v rYt	        j
                  d      }d}|j                  |       }|t        dt        |       z        |j                         \  }}}}d}
nQ|j                  |       }|t        d	t        |       z        |j                         \  }}}}}
d
}|d}n
|r|dz   |z   }t        t         d      rt         j                  \  }	}}n)t        t         d      rt         j                  \  }	}}nd}d}|j!                  d      }t#        |      dk(  r"|j%                  d       dj'                  |      }|||||||
f}|t        | <   |S )NzL([\w.+]+)\s*\(#?([^,]+)(?:,\s*([\w ]*)(?:,\s*([\w :]*))?)?\)\s*\[([^\]]+)\]?r  Jythonz&failed to parse Jython sys.version: %sr$   PyPyzE([\w.+]+)\s*\(#?([^,]+),\s*([\w ]+),\s*([\w :]+)\)\s*\[PyPy [^\]]+\]?z$failed to parse PyPy sys.version: %sz'failed to parse CPython sys.version: %sCPythonr  _git
_mercurialrS   r)   r   )r4   r   _sys_version_cacher   r   r   r6   rj   
startswithrp   r   reprr>   hasattrr  r  r   r0   rU   rY   )sys_versionr   sys_version_parserr   rp   r   buildno	builddate	buildtimer  compilerpypy_sys_version_parserbranchrevisionr[   s                  r"   _sys_versionr    s?   & kk  ##K6F	 (($ ||v&"((5=8[!"# # 5:LLN1)YI<<	;	"$** #!
 '--k:=C!+./ 0 016.)Y #((5=9[!"# # lln 	9)YI!C)3IsF!hh68	l	#!nn68 	cA
1v{	((1+ GVXw	8LF&,{#Mr   c                      	 t               d   S r&  r  r   r   r"   python_implementationr  r  s     >!r   c                      	 t               d   S r  r  r   r   r"   python_versionr  ~  s     >!r   c                  N    	 t        t               d   j                  d            S )Nr'   rS   )r1   r  r   r   r   r"   python_version_tupler    s&     "((-..r   c                      	 t               d   S )Nr)   r  r   r   r"   python_branchr    s     >!r   c                      	 t               d   S )NrT   r  r   r   r"   python_revisionr    s     >!r   c                      	 t               dd S )Nr   r   r  r   r   r"   python_buildr    s     >!Ar   c                      	 t               d   S )Nr   r  r   r   r"   python_compilerr    s     >!r   c           	      |   	 t         j                  | |fd       }||S t               \  }}}}}}||k(  rd}| rt        |||      \  }}}|dk(  rt	               d   }	|	rd}|	}|dk(  r.t        |      \  }
}}}|rt        ||      }nt        ||||      }n|dk(  r!t               \  }}t        ||||d||z         }nw|dk(  r7t               \  }}}\  }}}|s|st        |||      }nMt        |||d	|||      }n;|rt        ||      }n,t        t        j                        \  }}t        ||||||      }|t         | |f<   |S )
Nr$   Darwinr   macOSr  Linuxwithr  on)_platform_cacher   r   r  r   r   r$  rQ   r	  rN  r4   r5   )aliasedterser   rq   r  rr   r   r   r  macos_releaserelversr   r   rj   libcnamelibcversionr   r    r   r  r  r  rJ  rK  s                            r"   rj   rj     s   "   '5!148F :?6FD'7GY)	#/#I 	!F#G )' 2T3 1H '3?H	7	 (
+VWgy#%k13 
6	7?z41f4w
G ':H '!%!(*g?H  1H(8MD' '!*D';H )1OWe$%Or   )z/etc/os-releasez/usr/lib/os-releasec                    dddd}t        j                  d      }t        j                  d      }| D ]I  }|j                  |      }||j                  d|j	                  d            ||j	                  d      <   K |S )	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    s     D jjMO **%78 ""4(>%8%<%<rxx(&D&!" Kr   c                  ^   	 t         ed } t        D ]8  }	 t        |d      5 }t        |      a d d d         t         j                         S  t	        | ddj                  t                     t         j                         S # 1 sw Y   UxY w# t        $ r}|j
                  } Y d }~d }~ww xY w)Nzutf-8)rg   zUnable to read files rg  )_os_release_cache_os_release_candidatesr9   r  r3   errnorY   copy)r  	candidaterF   es       r"   freedesktop_os_releaser  /  s      / 	I )g6 =!(9!(<%= !!##	 '		2H(I'JK 
 !!##= =    s-   BBBB
	B	B,B''B,__main__r  z--terse
nonaliasedz--nonaliased)Nr$   r$   i @  )r$   )r$   r$   r$   r^   )r$   r$   r$   r$   )r$   r   r$   )r$   r$   r   r   r   )FF)D__copyright____version__collectionsr.   r   r4   r  r  r   r#   rQ   r]   rx   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r$  r)  r1  r;  rI  r5   rN  r\  r^  r|  
namedtupler~  r  r   rq   r  rr   r   r   r  r  r  r  r  r  r  r  r  r  r  rj   r  r  r  r  rv  argvr  r  printexitr   r   r"   <module>r     s/  r*   	 	 
   bR	
B
C	 N`2 02#<4$l,
,  [$<*|
(),)&	+F&$T@	 $N    NNR IX8' 'T+)AK-/)AX Ur
  `D
	/ H\ D  6$2 z 9I$9E388+NNchh4NG	(7E
"#CHHQK W   '''s   E! !E-,E-