+
     Bio                     t   R t ^ RIt^ RIt^ RIt^ RIHt . RYOtRR0tRRRRR	R
RRRRRRRRRRR/RRRRRR
RRRRRRRRRRR/RRRRRR
RRRRRRRRRRR/R RRRR	R
RRRRRRRRRRR/R!RRRRR
RRRRRRRRRRR//t]P                  R8X  d   ]R!,          ]R"&   M]R ,          ]R"&   R# t
R$ t]! 4       RJt]'       d:   ]R%RR&RR&R
R'RR'RR(RR)RR*/R+RR,RR,R
R-RR-RR.RR/RR*/R0RR1RR1R
R2RR2RR3RR/RR*//,          tRZt]P                  P                  4       ^ ,          t]P"                  ^ ,           R4]P"                  ^,           2t]P"                  ^ ,           ]P"                  ^,           2t]P(                  P+                  ]P,                  4      t]P(                  P+                  ]P0                  4      t]P4                  ! 4       tRsR5sRtR6 t]P@                  '       d-   ]P(                  PC                  ]! ]P@                  4      4      t"M]! ]PF                  ! 4       4      t"]$! ]R7R4      t%]%'       d   ]%t"]P                  R8X  d)   ]! ]"4      PM                  ]! ] R824      4      '       d   ]t"R9]PN                  9   d   ]! ]PN                  R9,          4      t"R[R: lt(](! 4       t)])'       d*   R\ F"  t*]]*,          t*]*R,          ]*R;&   R<]*R&   R=]*R&   K$  	  A*R> t+R? t,R@ t-RA t.RB t/RC t0RD t1RE t2RF t3RG t4RH t5RI t6RJ t7R[RK lt8RL t9RM t:RN t;]0! 4       RRO3RP lt<]0! 4       RRO3RQ lt=RR t>RS t?RT t@RU tARV tBRW tCRX tDR# )]z-Access to Python's configuration information.N)realpathIPHONEOS_DEPLOYMENT_TARGETMACOSX_DEPLOYMENT_TARGETposix_prefixstdlibzR{installed_base}/{platlibdir}/{implementation_lower}{py_version_short}{abi_thread}
platstdlibzL{platbase}/{platlibdir}/{implementation_lower}{py_version_short}{abi_thread}purelibzM{base}/lib/{implementation_lower}{py_version_short}{abi_thread}/site-packagesplatlibzZ{platbase}/{platlibdir}/{implementation_lower}{py_version_short}{abi_thread}/site-packagesincludezK{installed_base}/include/{implementation_lower}{py_version_short}{abiflags}platincludezO{installed_platbase}/include/{implementation_lower}{py_version_short}{abiflags}scriptsz
{base}/bindataz{base}
posix_homez+{installed_base}/lib/{implementation_lower}z!{base}/lib/{implementation_lower}z/{installed_base}/include/{implementation_lower}ntz{installed_base}/Libz
{base}/Libz{base}/Lib/site-packagesz{installed_base}/Includez{base}/Scripts
posix_venvnt_venvvenvc                      R # )Python r       )/usr/lib/python3.14/sysconfig/__init__.py_get_implementationr   m   s    r   c            	         \         P                  P                  R R4      p V '       d   V # \         P                  P                  R\        P                  4      P                  R4      ^ ,          pVR9   d   R# R p\         P                  R8X  d;   \         P                  P                  R4      ;'       g    RpV! V\        4       4      # \        P                  R8X  d_   \        P                  '       dI   V! RR	\        P                  \        P                  ^ ,           R
\        P                  ^,           24      # V! RR4      # )PYTHONUSERBASEN_PYTHON_HOST_PLATFORM-c                  x    \         P                  P                  \         P                  P                  ! V !  4      # N)ospath
expanduserjoin)argss   *r   joinuser_getuserbase.<locals>.joinuser}   s$    ww!!"'',,"566r   r   APPDATA~darwinLibrary.z.local>   iostvoswasivxworkswatchos
emscripten)
r   environgetsysplatformsplitnamer   
_frameworkversion_info)env_basesystem_namer$   bases       r   _getuserbaser<   r   s    zz~~.5H **..!8#,,GMMcRSTUKQQ7 
ww$zz~~i(//C2455
||xCNNNY++A./q1A1A!1D0EFH 	H C""r   nt_userz2{userbase}/{implementation}{py_version_nodot_plat}z@{userbase}/{implementation}{py_version_nodot_plat}/site-packagesz:{userbase}/{implementation}{py_version_nodot_plat}/Includez:{userbase}/{implementation}{py_version_nodot_plat}/Scriptsz
{userbase}
posix_userzL{userbase}/{platlibdir}/{implementation_lower}{py_version_short}{abi_thread}zQ{userbase}/lib/{implementation_lower}{py_version_short}{abi_thread}/site-packageszG{userbase}/include/{implementation_lower}{py_version_short}{abi_thread}z{userbase}/binosx_framework_userz%{userbase}/lib/{implementation_lower}z3{userbase}/lib/{implementation_lower}/site-packagesz;{userbase}/include/{implementation_lower}{py_version_short}r*   Fc                 @     \        V 4      #   \         d    T u # i ; ir   )r   OSError)r    s   &r   _safe_realpathrB      s%    ~ s   
 _homez\PCbuild_PYTHON_PROJECT_BASEc                     V e   ^ R I pVP                  R\        ^R7       R FN  p\        P                  P                  \        P                  P                  \        RV4      4      '       g   KM   R# 	  R# )NzThe check_home argument of sysconfig.is_python_build is deprecated and its value is ignored. It will be removed in Python 3.15.
stacklevelModulesTF)SetupzSetup.local)warningswarnDeprecationWarningr   r    isfiler"   _PROJECT_BASE)
check_homerJ   fns   &  r   is_python_buildrQ      sa    5  	 	
 '77>>"'',,}iDEE ' r   headersz{srcdir}/Includez{projectbase}/.c                      V P                   ! R/ VB #   \         dH   p T P                   ! R/ \        P                  B u R p?#   \         d    \	        T 4      R hi ; iR p?ii ; i)Nr   )formatKeyErrorr   r1   AttributeError)s
local_varsvars   && r   _subst_varsrZ      sa    5xx%*%% 5	588)bjj)) 	5 C5*4	55s%    A&AA&AA!!A&c                 p    V P                  4       pVP                  4        F  w  r4W29   d   K  W@V&   K  	  R # r   )keysitems)target_dict
other_dicttarget_keyskeyvalues   &&   r   _extend_dictrc     s6    ""$K &&(
 C )r   c                    / pVf   / p\        V\        4       4       \        P                  R8X  d   VRR/,          p\        V ,          P                  4        Fc  w  r4\        P                  R9   d    \        P                  P                  V4      p\        P                  P                  \        WA4      4      W#&   Ke  	  V# )Nr   
platlibdirlib)posixr   )
rc   get_config_varsr   r6   _INSTALL_SCHEMESr]   r    r!   normpathrZ   )schemevarsresra   rb   s   &&   r   _expand_varsrn     s    
C|()	ww$ |U++&v.446
77o%GG&&u-E77##K$<= 7 Jr   c                      \         P                  R 8X  d	   RR RRRR/# \        P                  R8X  d   \        P                  '       d	   RRRRRR/# RRRRRR	/# )
r   prefixhomer   userr=   r(   r   r?   r>   )r   r6   r3   r4   r7   r   r   r   _get_preferred_schemesrs   !  sq    	ww$dLI
 	

 ||xCNNNnL(
 	
 	. r   c                     V R 8X  d&   \         P                  \         P                  8w  d   R# \        4       V ,          pV\        9  d   \        V : RV: R24      hV# )rp   r   z
 returned z., which is not a valid scheme on this platform)r3   rp   base_prefixrs   ri   
ValueError)ra   rk   s   & r   get_preferred_schemerw   6  sZ    
h3::8#%c*F%%gZz *  
 	
 Mr   c                      \        R 4      # )rp   )rw   r   r   r   get_default_schemery   B  s    ))r   c                 0   \         P                  P                  R4      ;p '       d!   \         P                  P	                  V R4      # \
        '       d%   \         P                  P	                  \        R4      # \        \        R4      '       d   R\         \        P                   2pMRp\        \        P                  R4      '       d%   VR\        P                  P                   2,          p\         P                  P	                  \        R4      VR4      # )	z Return the path of the Makefile.rD   Makefileabiflagszconfig-config
_multiarchr   r   )r   r1   r2   r    r"   _PYTHON_BUILDrN   hasattrr3   _PY_VERSION_SHORTr|   implementationr~   get_path)
cross_baseconfig_dir_names     r   get_makefile_filenamer   F  s     ZZ^^$:;;z;ww||J
33}ww||M:66sJ#$5#6s||nE"s!!<00Qs11<<=>>77<<*OZHHr   c                 H   V\         P                  9  dx   ^ RIp^ RIpVP                  P
                  P                  W.4      pVP                  P                  V4      pVP                  P                  V4       V\         P                  V&   \         P                  V,          # )    N)r3   modulesimportlib.machineryimportlib.util	machinery
PathFinder	find_specutilmodule_from_specloaderexec_module)r    r6   	importlibspecmodules   &&   r   _import_from_directoryr   [  su    3;;"""--77fE006'"D;;tr   c            	          \        \        P                  R R4      p \        P                  P                  RR\        P                   R\        P                   RV  24      # )r~    _PYTHON_SYSCONFIGDATA_NAME_sysconfigdata__)getattrr3   r   r   r1   r2   r|   r4   )	multiarchs    r   _get_sysconfigdata_namer   g  sL    **L"=I::>>$
#,,qa	{C r   c                      ^ RI p \        4       p\        P                  P	                  R4      pV'       d   \        W!4      pVP                  # V P                  V4      pVP                  # )r   N_PYTHON_SYSCONFIGDATA_PATH)r   r   r   r1   r2   r   import_modulebuild_time_vars)r   r6   r    r   s       r   _get_sysconfigdatar   o  sY    "$D::>>67D37#D/F!!! >G=T=TUY=ZF!!!r   c                     \         P                  R8w  d   \        R4      h\        4       p V R,          \	        \
        RR4      8g  ;'       g    V R,          \	        \
        RR4      8g  # )zaIs the Python installation running from a different prefix than what was targetted when building?rg   zKsysconfig._installation_is_relocated() is currently only supported on POSIXrp   ru   r   exec_prefixbase_exec_prefix)r   r6   NotImplementedErrorr   r   r3   )r   s    r   _installation_is_relocatedr   y  s_    	ww'!"oppDX'#}b99 	G 	G'#/A2"FFr   c                F    V P                  \        4       V ,          4       R# )z7Initialize the module as appropriate for POSIX systems.N)updater   )rl   s   &r   _init_posixr     s     	KK"$t+,r   c                   ^ RI p^ RIp\        R4      V R&   \        R4      V R&   \        R4      V R&   V P                  VP	                  4       4       RP                  V R	,          '       d   R
MRV R,          '       d   RMR34      V R&   \        \        P                  P                  \        R4      R4      4      V R&   \        \        R4      '       dW   VP                  \        P                  4      p\        P                  P                  \        V4      4      V R&   V R,          V R&   RV R&   \        V R&   \        P                  P!                  \        \        P"                  4      4      V R&   RV R&   R# )z+Initialize the module as appropriate for NTNr   LIBDESTr   
BINLIBDESTr
   	INCLUDEPYr   Py_GIL_DISABLEDtPy_DEBUG_dABIFLAGSinstalled_baselibsLIBDIR	dllhandleLIBRARY	LDLIBRARYz.exeEXEVERSIONBINDIRTZPATH)_winapi
_sysconfigr   r   config_varsr"   rB   r   r    get_config_varr   r3   GetModuleFileNamer   basename_PY_VERSION_SHORT_NO_DOTdirname
executable)rl   r   r   r   s   &   r   _init_non_posixr     s2    x(DO!,/D +D 	KK
&&() ww)**C$$D"	
D $BGGLL@P1QSY$Z[DNsK  --cmm<	''**>)+DEY O[DK.DOWW__^CNN%CDDNDNr   c                   Vf   / p^ RI pVP                  R4      pVP                  R4      p V P                  4       pV'       g    V# VP                  V4      pV'       d8   VP	                  ^^4      w  rx V\
        9   d   \        h\        V4      pWV&   Kl  VP                  V4      pV'       g   K  ^ WP	                  ^4      &   K    \         d     LCi ; i)zParse a config.h-style file.

A dictionary containing name/value pairs is returned.  If an
optional dictionary is passed in as the second argument, it is
used instead of a new dictionary.
Nz"#define ([A-Z][A-Za-z0-9_]+) (.*)
z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/
)recompilereadlinematchgroup_ALWAYS_STRrv   int)	fprl   r   	define_rxundef_rxlinemnvs	   &&       r   parse_config_hr     s     |

@AIzzCDH
{{} K OOD!771a=DA#$$F Gt$Aq#$WWQZ   s   7C	 	CCc                     \         '       dB   \        P                  R8X  d&   \        P                  P	                  \
        R4      p M\
        p M\        R4      p \        P                  P	                  V R4      # )zReturn the path of pyconfig.h.r   PCr   z
pyconfig.h)r   r   r6   r    r"   rN   r   )inc_dirs    r   get_config_h_filenamer     sJ    }77d?ggll=$7G#G=)77<<..r   c                 2    \        \        \        4      4      # )z,Return a tuple containing the schemes names.)tuplesortedri   r   r   r   get_scheme_namesr     s    ()**r   c                     \         # )z*Return a tuple containing the paths names.)_SCHEME_KEYSr   r   r   get_path_namesr     s    r   Tc                B    V'       d   \        W4      # \        V ,          # )zReturn a mapping containing an install scheme.

``scheme`` is the install scheme name. If not provided, it will
return the default scheme for the current platform.
)rn   ri   )rk   rl   expands   &&&r   	get_pathsr     s     F))''r   c                (    \        WV4      V ,          # )zSReturn a path corresponding to the scheme.

``scheme`` is the install scheme name.
)r   )r6   rk   rl   r   s   &&&&r   r   r     s    
 V6*400r   c                     / s \        P                  P                  \        P
                  4      p \        P                  P                  \        P                  4      p\        p\        p \        P                  p\        P                  R8X  df   \        \         4       R\        P                  9   dB   \         R,          p \         R,          p\         R,          p\         R,          p\         R,          pV \         R&   V\         R&   \        \         R&   \        \         R	&   \         \         R
&   V\         R&   V \         R&   V\         R&   V\         R&   \"        \         R&   \        P$                  \         R&   \'        4       \         R&   \'        4       P)                  4       \         R&   V\         R&    \        P*                  P-                  RR 4      \         R&   \        P                  R8X  d'   \/        \         4       \        P0                  \         R&   \2        '       d   \5        4       \         R&   \         P7                  R4      '       d   RMR \         R&   \         P7                  R\"        4      p\        P                  R8X  d{   \8        '       dH   \        P                  P;                  \=        4       4      p\        P                  P?                  We4      pM'\        P                  P;                  \=        4       4      p\A        V4      \         R&   \        PB                  R8X  d   ^ RI"pVPG                  \         4       Rs$R#   \         d    R p ELi ; i  \         d    R \         R&    ELi ; i) r   rg   rD   host_prefixhost_exec_prefixr   rp   r   
py_versionpy_version_shortpy_version_nodotr   r;   installed_platbaseplatbaseprojectbasere   r   implementation_lowerr|   r*   py_version_nodot_platr   VPATHuserbaser   r   
abi_threadsrcdirr(   NT)%_CONFIG_VARSr   r    rj   r3   rp   r   _BASE_PREFIX_BASE_EXEC_PREFIXr|   rV   r6   r   r1   _PY_VERSIONr   r   rN   re   r   lowerwinverreplacer   _vpath_HAS_USER_BASEr<   r2   r   r   r   r"   rB   r4   _osx_supportcustomize_config_vars_CONFIG_VARS_INITIALIZED)rp   r   ru   r   r|   r   r;   r   s           r   _init_config_varsr    s   LWWcjj)F''""3??3KK(<< 
ww'L!!RZZ/!-0F&'9:K&}5K+,>?#J/H
 $L"-L!,L'8L#$'?L#$%0L!"!L)9L%&*L"/L!$L%8%:L!"+>+@+F+F+HL'('L303

0B0B30K,- 
ww$% #

W~ $0>Z  )5(8(89J(K(KQSL h6F	ww'= 77??#8#:;DWW\\$/F WW__%:%<=F+F3L ||x**<8  $O  @  302,-3s$   *M /'M MMM-,M-c                 |   \         '       d   \        P                  P                  \        P
                  4      p\        P                  P                  \        P                  4      p\        R,          V8w  g   \        R,          V8w  d%   \        ;_uu_ 4        Rs \        4        RRR4       M*M)\        ;_uu_ 4        \        f   \        4        RRR4       V '       d2   . pV  F'  pVP                  \        P                  V4      4       K)  	  V# \        #   + '       g   i     LO; i  + '       g   i     Lb; i)aV  With no arguments, return a dictionary of all configuration
variables relevant for the current platform.

On Unix, this means every variable defined in Python's installed Makefile;
On Windows it's a much smaller set.

With arguments, return a list of values that result from looking up
each argument in the configuration variable dictionary.
rp   r   FN)r  r   r    rj   r3   rp   r   r   _CONFIG_VARS_LOCKr  appendr2   )r#   rp   r   valsr6   s   *    r   rh   rh   R  s      !!#**-gg&&s7!V+|M/Jk/Y""+0(!# #" 0Z 
 #!#  DKK((./ ' #"
 s   D>D+D(	+D;	c                4    \        4       P                  V 4      # )zReturn the value of a single variable using the dictionary returned by
'get_config_vars()'.

Equivalent to get_config_vars().get(name)
)rh   r2   )r6   s   &r   r   r   z  s       &&r   c                    \         P                  R8X  d   R\        P                  P	                  4       9   d   R# R\        P                  P	                  4       9   d   R# R\        P                  P	                  4       9   d   R# \        P
                  # \         P                  R8w  g   \        \         R	4      '       g   \        P
                  # R
\         P                  9   d-   \         P                  R
,          P                  R4      w  rpRpM]\         P                  ! 4       w  rr5pV P	                  4       P                  RR4      p VP                  RR4      pVP                  RR4      pV R8X  g   \        P
                  R8X  d!   Rp \        R4      pRRRRRRRR/V,          pEMmV R8X  d   V  RV 2# V R,          R8X  d^   V^ ,          R8  dO   Rp \        V^ ,          4      ^,
           RVR ,           2pR!R"R#R$/pVRV\        P                  ,           2,          pMV R%,          R&8X  d   ^ R'IHp V! 4       # V R(,          R)8X  dB   R)p ^ RIpVP#                  R*4      p	V	P%                  V4      p
V
'       d   V
P'                  4       pMV R(,          R+8X  d}   \        P
                  R,8X  dF   \)        4       P+                  R-R.4      p\        P
                  p \        P,                  P.                  pM"^ RIpVP3                  \)        4       WV4      w  rpRP5                  \7        \8        \;        RWV34      4      4      # )/a3  Return a string that identifies the current platform.

This is used mainly to distinguish platform-specific build directories and
platform-specific built distributions.  Typically includes the OS name and
version and the architecture (as supplied by 'os.uname()'), although the
exact information included depends on the OS; on Linux, the kernel version
isn't particularly important.

Examples of returned values:


Windows:

- win-amd64 (64-bit Windows on AMD64, aka x86_64, Intel64, and EM64T)
- win-arm64 (64-bit Windows on ARM64, aka AArch64)
- win32 (all others - specifically, sys.platform is returned)

POSIX based OS:

- linux-x86_64
- macosx-15.5-arm64
- macosx-26.0-universal2 (macOS on Apple Silicon or Intel)
- android-24-arm64_v8a

For other non-POSIX platforms, currently just returns :data:`sys.platform`.r   amd64z	win-amd64z(arm)z	win-arm32z(arm64)z	win-arm64rg   unamer   r   N/r    r   androidANDROID_API_LEVELx86_64i686x86aarch64	arm64_v8aarmv7larmeabi_v7alinux:N   Nsunos5solarisr*   :   NNi32bitl    64bit:N   Naix)aix_platform:N   Ncygwinz[\d.]+r(   r+   r   z13.0)r   r6   r3   versionr   r4   r   r1   	partitionr  r   r   r   maxsize_aix_supportr!  r   r   r   r   rh   r2   r   r~   r   get_platform_osxr"   mapstrfilter)osnamer   machinereleasehostr$  bitnessr!  r   rel_rer   r   s               r   get_platformr2    s   4 
ww$ckk''))ckk''))))++||	ww'W!5!5|| "**,ZZ(?@JJ3O7 35((*/g ''R0//#s+//#s+clli7 !45 hE{m	

  
7	 (!G9%%	w	1:FWQZ1,-Qwr{m<G "'+>wGG73;;/011G	u	-~	x	I&LL!ggiG	x	<<5 %'++,H&QG\\F((33G'3'D'D0?0A06(J$FW 88CVD6G*DEFGGr   c                      \         # r   )r   r   r   r   get_python_versionr4    s    r   c                  .    \         \        R 4      ,           # )r   )r   r   r   r   r   _get_python_version_abir6    s    ~l;;;r   c                D   ^ RI pVP                  R\        ^R7       ^ RIpRpRp VP	                  W@4      ;'       g    VP	                  WP4      pV'       dH   VP                  4       w  rxV ^ V VP                  VP                  ^4      4      ,           WR ,           p Kz   V # )a  Expand Makefile-style variables -- "${foo}" or "$(foo)" -- in
'string' according to 'vars' (a dictionary mapping variable names to
values).  Variables not present in 'vars' are silently expanded to the
empty string.  The variable values in 'vars' should not contain further
variable expansions; if 'vars' is the output of 'parse_makefile()',
you're fine.  Returns a variable-expanded version of 's'.
Nz{sysconfig.expand_makefile_vars is deprecated and will be removed in Python 3.16. Use sysconfig.get_paths(vars=...) instead.rF   z\$\(([A-Za-z][A-Za-z0-9_]*)\)z\${([A-Za-z][A-Za-z0-9_]*)})rJ   rK   rL   r   searchspanr2   r   )	rW   rl   rJ   r   _findvar1_rx_findvar2_rxr   begends	   &&       r   expand_makefile_varsr>    s     MM	B	   3L1L IIl&DD"))L*DJS!C488AGGAJ//!D'9AHr   )r   r   rh   r   r   r   r   r2  r4  r   r   )r   r   r   r	   r
   r   r   r   )r   r   )E__doc__r   r3   	threadingos.pathr   __all__r   ri   r6   r   r<   r   r   r$  r5   r   r8   r   r   r    rj   ru   r   r   r   RLockr  r   r  
_USER_BASErB   r   r   rN   getcwdr   	_sys_home
startswithr1   rQ   r   rk   rZ   rc   rn   rs   rw   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r  rh   r   r2  r4  r6  r>  r   r   r   <module>rH     s   3 	 
    ! fdboY]<
 ?966DH<	
 	(l---1#	
8 fdboY]<
 (l---1#	
I X 77d?/	:V/=V
#0 .,JNYYSSL 	dhjj`'L 	=ALLT'L) ># kk!!$''*+1S-=-=a-@,AB !..q1233C3CA3F2GH ww0GG$$S%9%9: OO%   
 >>>GGOON3>>$BCM #299;/M
 C$'	M77d? m$//l^9568 8$ RZZ'"2::.D#EFM"  !0
 "&)"9-y.y 1} 1 	5!$*	*I*	"	-LD	/+

 ()T 	( -.T$ 1R$j%P'dHN<#r   