ó
    LƒwjŠ?  ã                  ó’  • S r SSKJ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	J
r
JrJr  SSKJr  SSKJr  SSKJr  SS	KJr  \
(       a  SS
KJr  OS rS\R.                  ;   r\R2                  R5                  \R6                  5      r\R2                  R5                  \R:                  5      r\R2                  R5                  \R>                  5      r \R2                  R5                  \RB                  5      r"S\RF                  ;   a)  \R2                  RI                  \RF                  S   5      r%Oa\RL                  (       a?  \R2                  RO                  \R2                  RI                  \RL                  5      5      r%O\RP                  " 5       r%S r)\*" \SS5      r+S r,\RZ                  S:X  a  \S 5       r.\." \%5      r%\." \+5      r+S r/\/" 5       r0Sr1 \0(       d  \Rd                  r1S r4S/S0S jjr5\S 5       r6S r7S r8S r9S r:S r;S r< S1       S2S jjr=\R|                  S3S j5       r?S4S  jr@S4S! jrAS5S" jrB\R†                  " S#5      rD\R†                  " S$5      rE\R†                  " S%5      rFS5S& jrGS' rHSqI\S6S( j5       rJ\S7S) j5       rJS8S* jrJ\\" S+5      S9S, j5       5       rK\S:S- j5       rKS:S. jrKg! \3 a     NÜf = f);a�  Provide access to Python's configuration information.  The specific
configuration variables available depend heavily on the platform and
configuration.  The values may be retrieved using
get_config_var(name), and the list of variables is available via
get_config_vars().keys().  Additional convenience functions are also
available.

Written by:   Fred L. Drake, Jr.
Email:        <fdrake@acm.org>
é    )ÚannotationsN)ÚTYPE_CHECKINGÚLiteralÚoverload)Ú	pass_noneé   )Ú	CCompiler)ÚDistutilsPlatformError)Úis_mingw)Ú
deprecatedc                ó   • S $ )Nc                ó   • U $ ©N© )Úfns    Ú­C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\setuptools/_distutils/sysconfig.pyÚ<lambda>Údeprecated.<locals>.<lambda>!   s   € ™"ó    r   )Úmessages    r   r   r       s   € ÙÐr   Ú__pypy__Ú_PYTHON_PROJECT_BASEc                óx   ^• [         R                  " U 5      R                  S5      m[        U4S jS 5       5      $ )zQ
Return True if the target directory appears to point to an
un-installed Python.
ÚModulesc              3  ób   >#   • U  H$  nTR                  U5      R                  5       v •  M&     g 7fr   )ÚjoinpathÚis_file)Ú.0r   Úmoduless     €r   Ú	<genexpr>Ú(_is_python_source_dir.<locals>.<genexpr>@   s*   øé € ÐQÒ8P°"ˆw×Ñ Ó#×+Ñ+×-Ð-Ò8Pùs   ƒ,/)ÚSetupzSetup.local)ÚpathlibÚPathr   Úany)Údr   s    @r   Ú_is_python_source_dirr'   :   s/   ø€ ô
 �lŠl˜1‹o×&Ñ& yÓ1€GÜÔQÑ8PÓQÓQÐQr   Ú_homec                ó˜   • [         R                  R                  U 5      R                  [         R                  R                  U5      5      $ )z$
Return True if a is a parent of b.
)ÚosÚpathÚnormcaseÚ
startswith)Údir_aÚdir_bs     r   Ú
_is_parentr0   F   s3   € ô �7‰7×Ñ˜EÓ"×-Ñ-¬b¯g©g×.>Ñ.>¸uÓ.EÓFÐFr   Úntc                óL   ^ • [         [        4nU 4S jU 5       n[        UT 5      $ )Nc              3  óŠ   >#   • U  H8  n[        T[        R                  R                  US 5      5      (       d  M4  Uv •  M:     g7f)ÚPCbuildN)r0   r*   r+   Újoin)r   Úprefixr&   s     €r   r    Ú_fix_pcbuild.<locals>.<genexpr>S   s3   øé € ð 
â"�Ü˜!œRŸW™WŸ\™\¨&°)Ó<×=÷ ‰FÚ"ùs
   ƒ3Aº	A)ÚPREFIXÚBASE_PREFIXÚnext)r&   ÚprefixesÚmatcheds   `  r   Ú_fix_pcbuildr=   O   s-   ø€ ô œ;Ð&ˆô
á"ó
ˆô
 �G˜QÓÐr   c                 óT   • [         (       a  [        [         5      $ [        [        5      $ r   )Ú	_sys_homer'   Úproject_baser   r   r   Ú_python_buildrA   ^   s   € ß‚yÜ$¤YÓ/Ð/Ü ¤Ó.Ð.r   Ú c                 óp   • [         R                  R                   S[         R                  R                   3$ )zŠReturn a string containing the major and minor Python version,
leaving off the patchlevel.  Sample return values could be '1.5'
or '2.2'.
Ú.)ÚsysÚversion_infoÚmajorÚminorr   r   r   Úget_python_versionrI   t   s/   € ô
 ×Ñ×$Ñ$Ð% Q¤s×'7Ñ'7×'=Ñ'=Ð&>Ð?Ð?r   c                ó  • U (       a  [         O[        nUb  UOUn[        5       (       a  SO[        R                  n [        5       SU 3   nU" X1U 5      $ ! [         a    [        S[        R                   S35      ef = f)aˆ  Return the directory containing installed Python header files.

If 'plat_specific' is false (the default), this is the path to the
non-platform-specific header files, i.e. Python.h and so on;
otherwise, this is the path to platform-specific header files
(namely pyconfig.h).

If 'prefix' is supplied, use it instead of sys.base_prefix or
sys.base_exec_prefix -- i.e., ignore 'plat_specific'.
ÚposixÚ_get_python_inc_zCI don't know where Python installs its C header files on platform 'Ú')ÚBASE_EXEC_PREFIXr9   r   r*   ÚnameÚglobalsÚKeyErrorr
   )Úplat_specificr6   Údefault_prefixÚresolved_prefixÚos_nameÚgetters         r   Úget_python_incrW   |   s†   € ö *7Õ%¼K€NØ &Ñ 2‘f¸€Oä!Ÿ™‰g¬¯©€Gð
Ü“Ð-¨g¨YÐ7Ñ8ˆñ �/¨=Ó9Ð9øô ó 
Ü$ðÜŸG™G˜9 Að'ó
ð 	
ð
ús   ½A Á(A>c                óR   • [         R                  R                  U 5      (       a  U $ S$ )z-
Replace path with None if it doesn't exist.
N)r*   r+   Úexists)r+   s    r   Ú_extantrZ   •   s!   € ô
 —7‘7—>‘> $×'Ñ'ˆ4Ð1¨TÐ1r   c                ór   • [        U5      =(       d&    [        [        X!5      5      =(       d    [        U 5      $ r   )Ú_get_python_inc_posix_pythonrZ   Ú_get_python_inc_from_configÚ_get_python_inc_posix_prefix©r6   Úspec_prefixrR   s      r   Ú_get_python_inc_posixra   �   s/   € ä$ ]Ó3÷ 	0ÜÔ.¨}ÓJÓK÷	0ä'¨Ó/ðr   c                óÞ   • [         (       d  gU (       a  [        =(       d    [        $ [        R                  R                  [        S5      S5      n[        R                  R                  U5      $ )zâ
Assume the executable is in the build directory. The
pyconfig.h file should be in the same directory. Since
the build directory may not be the source directory,
use "srcdir" from the makefile to find the "Include"
directory.
NÚsrcdirÚInclude)Úpython_buildr?   r@   r*   r+   r5   Úget_config_varÚnormpath)rR   Úincdirs     r   r\   r\   ¥   sH   € ÷ Š<ØÞÜ×(œLÐ(Ü�W‰W�\‰\œ.¨Ó2°IÓ>€FÜ�7‰7×Ñ˜FÓ#Ð#r   c                ó,   • Uc  [        SU -  S-   5      $ g)a*  
If no prefix was explicitly specified, provide the include
directory from the config vars. Useful when
cross-compiling, since the config vars may come from
the host
platform Python installation, while the current Python
executable is from the build platform installation.

>>> monkeypatch = getfixture('monkeypatch')
>>> gpifc = _get_python_inc_from_config
>>> monkeypatch.setitem(gpifc.__globals__, 'get_config_var', str.lower)
>>> gpifc(False, '/usr/bin/')
>>> gpifc(False, '')
>>> gpifc(False, None)
'includepy'
>>> gpifc(True, None)
'confincludepy'
NÚCONFÚ	INCLUDEPY)rf   )rR   r`   s     r   r]   r]   µ   s$   € ð& ÑÜ˜f }Ñ4°{ÑBÓCÐCð r   c                óŠ   • [         (       a  SOSnU[        5       -   [        -   n[        R                  R                  U SU5      $ )NÚpypyÚpythonÚinclude)ÚIS_PYPYrI   Úbuild_flagsr*   r+   r5   )r6   ÚimplementationÚ
python_dirs      r   r^   r^   Ì   s7   € ß&šw‘V¨H€NØÔ"4Ó"6Ñ6¼ÑD€JÜ�7‰7�<‰<˜ 	¨:Ó6Ð6r   c                ó4  • [         (       an  [        R                  R                  U S5      [        R                  R                  -   [        R                  R                  [        R                  " 5       5      -   $ [        R                  R                  U S5      $ )Nro   )re   r*   r+   r5   ÚpathsepÚdirnameÚ	sysconfigÚget_config_h_filenamer_   s      r   Ú_get_python_inc_ntry   Ò   sf   € ß‚|ô �G‰G�L‰L˜ Ó+Ü�g‰g�o‰oñä�g‰g�o‰oœi×=Ò=Ó?Ó@ñAð	
ô
 �7‰7�<‰<˜ 	Ó*Ð*r   c                óT   • U (       a  U$ [         R                  R                  US5      $ )Núsite-packages)r*   r+   r5   )Ústandard_libÚ	libpythonÚearly_prefixr6   s       r   Ú
_posix_libr   Þ   s    € ÞØÐä�w‰w�|‰|˜I Ó7Ð7r   c                ó”  • UnUc@  U(       a  U =(       a    [         =(       d    [        nOU =(       a    [        =(       d    [        n[        R
                  S:X  d  [        5       (       ah  U (       d  U(       a  [        [        SS5      nOSn[        (       a  SOSn[        R                  R                  X$U[        5       -   5      n[        XX25      $ [        R
                  S:X  aH  U(       a   [        R                  R                  US5      $ [        R                  R                  USS5      $ [        S	[        R
                   S
35      e)a+  Return the directory containing the Python library (standard or
site additions).

If 'plat_specific' is true, return the directory containing
platform-specific modules, i.e. any module from a non-pure-Python
module distribution; otherwise, return the platform-shared library
directory.  If 'standard_lib' is true, return the directory
containing standard Python library modules; otherwise, return the
directory for site-specific modules.

If 'prefix' is supplied, use it instead of sys.base_prefix or
sys.base_exec_prefix -- i.e., ignore 'plat_specific'.
rK   Ú
platlibdirÚlibrm   rn   r1   ÚLibr{   z<I don't know where Python installs its library on platform 'rM   )rN   r9   ÚEXEC_PREFIXr8   r*   rO   r   ÚgetattrrE   rp   r+   r5   rI   r   r
   )rR   r|   r6   r~   Úlibdirrr   r}   s          r   Úget_python_libr‡   å   së   € ð" €Là�~ÞØ"×7Ô'7×F¼;‰Fà"×2¤{×<´fˆFä	‡w�w�'ÓœXŸZ™ZÞžLô œS ,°Ó6‰Fð ˆFß#*¢7™°ˆÜ—G‘G—L‘L °ÔBTÓBVÑ1VÓWˆ	Ü˜,°<ÓHÐHÜ	�‰�D‹ÞÜ—7‘7—<‘< ¨Ó.Ð.ä—7‘7—<‘< ¨¨Ó?Ð?ä$ØJÌ2Ï7É7È)ÐSTÐUó
ð 	
r   c                ó$   • U R                  5         g)zÇDo any platform-specific customization of a CCompiler instance.

Retained for backward compatibility; the behavior now lives on the
compiler itself, so this simply delegates to ``configure_system``.
N)Úconfigure_system)Úcompilers    r   Úcustomize_compilerr‹     s   € ð ×ÑÕr   c                 ó,   • [         R                  " 5       $ )z2Return full pathname of installed pyconfig.h file.)rw   rx   r   r   r   rx   rx     ó   € ä×*Ò*Ó,Ð,r   c                 ó,   • [         R                  " 5       $ )zAReturn full pathname of installed Makefile from the Python build.)rw   Úget_makefile_filenamer   r   r   r�   r�   #  r�   r   c                ó*   • [         R                  " XS9$ )z¼Parse 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.
)Úvars)rw   Úparse_config_h)ÚfpÚgs     r   r’   r’   (  s   € ô ×#Ò# BÑ/Ð/r   z"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)z\$\(([A-Za-z][A-Za-z0-9_]*)\)z\${([A-Za-z][A-Za-z0-9_]*)}c                óÂ  • SSK Jn  U" U SSSSS9nUc  0 n0 n0 n UR                  5       nUc  Oo[        R	                  U5      nU(       aQ  UR                  SS5      u  p‰U	R                  5       n	U	R                  S	S
5      n
SU
;   a  X•U'   O [        U	5      n	X”U'   Mƒ  SnU(       Ga‹  [        U5       GHq  nX\   n[        R                  U5      =(       d    [        R                  U5      nU(       Ga.  UR                  S5      nSnX„;   a  [        XH   5      nO{X…;   a  SnOsU[        R                   ;   a  [        R                   U   nOKX‹;   a@  UR#                  S5      (       a  USS U;   a  S
nO$SU-   U;   a  SnO[        USU-      5      nOS
=XH'   nU(       aƒ  X×R%                  5       S nUSUR'                  5        W-   U-   nSU;   a  XÕU'   GM!   [        U5      nXÔU'   X\	 UR#                  S5      (       a   USS U;   a  USS nXÄ;  a  XÔU'   GMc  GMf  GMi  GMl  GMo  X\	 GMt     U(       a  GM‹  UR)                  5         UR+                  5        H0  u  nn	[-        U	[        5      (       d  M  U	R                  5       UU'   M2     UR/                  U5        U$ ! [         a    U	R                  S	S5      XH'    GNf = f! [         a    UR                  5       XL'    Nùf = f)z¼Parse a Makefile-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.
r   )ÚTextFileTÚsurrogateescape)Ústrip_commentsÚskip_blanksÚ
join_linesÚerrorsNr   é   z$$rB   Ú$)ÚCFLAGSÚLDFLAGSÚCPPFLAGSFÚPY_é   )Údistutils.text_filer–   ÚreadlineÚ_variable_rxÚmatchÚgroupÚstripÚreplaceÚintÚ
ValueErrorÚlistÚ_findvar1_rxÚsearchÚ_findvar2_rxÚstrr*   Úenvironr-   ÚendÚstartÚcloseÚitemsÚ
isinstanceÚupdate)r   r”   r–   r“   ÚdoneÚnotdoneÚlineÚmÚnÚvÚtmpvÚrenamed_variablesrO   ÚvalueÚfoundÚitemÚafterÚks                     r   Úparse_makefilerÅ   9  sÙ  € õ -á	Ø
ØØØØ ñ
€Bð 	�yØˆØ€DØ€Gà
Ø�{‰{‹}ˆØ‰<ØÜ×Ñ˜tÓ$ˆÞØ—7‘7˜1˜a“=‰DˆAØ—‘“	ˆAà—9‘9˜T 2Ó&ˆDà�d‹{Ø˜’
ð Ü˜A›�Að
  ˜‘Gñ) ð4 :Ð÷ Ü˜—MˆDØ‘MˆEÜ×#Ñ# EÓ*×H¬l×.AÑ.AÀ%Ó.HˆAßØ—G‘G˜A“J�Ø�Ø“9Ü˜t™w›<‘DØ“\à!‘EØœ"Ÿ*™*“_äŸ:™: a™=‘DàÓ+Ø—‘ u×-Ñ-°$°q°r°(Ð>OÓ2OØ!™à ™ gÓ-Ø %™ô  # 4¨°©	¡?Ó3™à%'Ð'�D‘G˜dÞØ!§%¡%£' )Ð,�EØ! + A§G¡G£IÐ.°Ñ5¸Ñ=�EØ˜e“|Ø(- œð/Ü$'¨£J˜Eð */ ™JØ#˜MàŸ?™?¨5×1Ñ1°d¸1¸2°hÐBSÓ6SØ#'¨¨ 8˜DØ#Ó/Ø-2 T¤
ò  0ò 7TÒ1ò ð( “Mñ] "÷ ‰'ðb ‡H�H„Jð —
‘
–‰ˆˆ1Ü�aœ×ÓØ—g‘g“iˆD�‹Gñ ð
 ‡H�HˆT„NØ€HøôO "ó 3àŸi™i¨¨cÓ2�D”Gð3ûô`  *ó 7Ø).¯©«˜D›Jð7ús$   ÂJ ÇJ?ÊJ<Ê;J<Ê?KËKc                óú   •  [         R                  U 5      =(       d    [        R                  U 5      nU(       a>  UR                  5       u  p4U SU UR	                  UR                  S5      5      -   XS -   n O U $ M{  )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'.
r   r   N)r­   r®   r¯   ÚspanÚgetr§   )Úsr‘   r»   Úbegr²   s        r   Úexpand_makefile_varsrË   ©  sn   € ð Ü×Ñ Ó"×<¤l×&9Ñ&9¸!Ó&<ˆÞØŸ™›‰JˆSØ�!�C�˜4Ÿ8™8 A§G¡G¨A£JÓ/Ñ/°!°D°'Ñ9‰AàØ€Hñ r   c                 ó   • g r   r   r   r   r   Úget_config_varsrÍ   Å  s   € Ø/2r   c               ó   • g r   r   )ÚargÚargss     r   rÍ   rÍ   Ç  s   € ØHKr   c                 óÆ   • [         c#  [        R                  " 5       R                  5       q U (       a&  U  Vs/ s H  n[         R	                  U5      PM     sn$ [         $ s  snf )aÃ  With no arguments, return a dictionary of all configuration
variables relevant for the current platform.  Generally this includes
everything needed to build extensions and install both pure modules and
extensions.  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.
)Ú_config_varsrw   rÍ   ÚcopyrÈ   )rÐ   rO   s     r   rÍ   rÍ   É  sK   € ô ÑÜ ×0Ò0Ó2×7Ñ7Ó9ˆæ8<©tÓ4ªt tŒL×Ñ˜TÖ"©tÑ4ÐNÄ,ÐNùÒ4s   ¶AzrSO is deprecated, use EXT_SUFFIX. Support will be removed when this module is synchronized with stdlib Python 3.11c                ó   • g r   r   ©rO   s    r   rf   rf   Ú  s   € ð >Ar   c                ó   • g r   r   rÕ   s    r   rf   rf   ß  s   € Ø36r   c                óv   • U S:X  a  SSK nUR                  S[        S5        [        5       R	                  U 5      $ )z‡Return the value of a single variable using the dictionary
returned by 'get_config_vars()'.  Equivalent to
get_config_vars().get(name)
ÚSOr   Nz SO is deprecated, use EXT_SUFFIXrœ   )ÚwarningsÚwarnÚDeprecationWarningrÍ   rÈ   )rO   rÙ   s     r   rf   rf   á  s4   € ð
 ˆtƒ|Ûà�‰Ð8Ô:LÈaÔPÜÓ× Ñ  Ó&Ð&r   )FN)rR   Úboolr6   ú
str | NoneÚreturnr°   )FFN)rR   rÜ   r|   rÜ   r6   rÝ   rÞ   r°   )rŠ   r	   rÞ   ÚNone)rÞ   r°   r   )rÞ   zdict[str, str | int])rÏ   r°   rÐ   r°   rÞ   zlist[str | int | None])rÐ   r°   rÞ   z-list[str | int | None] | dict[str, str | int])rO   zLiteral['SO']rÞ   úint | str | None)rO   r°   rÞ   rà   )LÚ__doc__Ú
__future__r   Ú	functoolsr*   r#   ÚrerE   rw   Útypingr   r   r   Újaraco.functoolsr   Ú	ccompilerr	   r›   r
   Úutilr   Útyping_extensionsr   Úbuiltin_module_namesrp   r+   rg   r6   r8   Úexec_prefixr„   Úbase_prefixr9   Úbase_exec_prefixrN   r±   Úabspathr@   Ú
executablerv   Úgetcwdr'   r…   r?   r0   rO   r=   rA   re   rq   ÚabiflagsÚAttributeErrorrI   rW   rZ   ra   r\   r]   r^   ry   r   r‡   Ú	lru_cacher‹   rx   r�   r’   Úcompiler¥   r­   r¯   rÅ   rË   rÒ   rÍ   rf   r   r   r   Ú<module>rõ      s×  ðñ	õ #ã Û 	Û Û 	Û 
Û ß 3Ñ 3å &å  Ý *Ý æÞ,òð ˜×0Ñ0Ñ
0€ð 
�‰×	Ñ	˜#Ÿ*™*Ó	%€Ø�g‰g×Ñ˜sŸ™Ó/€Ø�g‰g×Ñ˜sŸ™Ó/€Ø—7‘7×#Ñ# C×$8Ñ$8Ó9Ð ð
 ˜RŸZ™ZÓ'Ø—7‘7—?‘? 2§:¡:Ð.DÑ#EÓF�Là
‡~‡~Ø—w‘w—‘ r§w¡w§¡°s·~±~Ó'FÓG‰ð —y’y“{ˆòRñ �C˜ $Ó'€	òGð ‡7�7ˆdƒ?àñ ó ð ñ   Ó-€LÙ˜YÓ'€Iò/ñ ‹€ð €ð	ÞØ—l‘lˆò@ö:ð2 ñ2ó ð2òò$ò Dò.7ò+ò8ð SWð,
Øð,
Ø/3ð,
ØEOð,
àõ,
ð^ ×Ñó ó ð ô-ô
-ô
0ð �zŠzÐ?Ó@€Ø�zŠzÐ:Ó;€Ø�zŠzÐ8Ó9€ômò`ð2 €ð 
Û 2ó 
Ø 2Ø	Û Kó 
Ø KôOð" 
ÙØxóó Aóó 
ð AØ	Û 6ó 
Ø 6õ	'øðg ó 	ñ 	ð	ús   ÇJ= Ê=KËK