f*dZddlZddlZddlZddlmZgdZdhZdddd d d d d dddddd d d d dddddd d dddddddddd d ddddddddd ddddd d d d d ddddddddd ddZejd k(r ed!ed"<ned#ed"<d$Z e duZ e r!ed%d%d&d&d'd(d)d*d+d+d,d,d-d.d)d*d/d/d0d0d-d.d)d*d1zZd*Z ejjdZej dd2ej d3Zej dej d3Zej&j)ej*Zej&j)ej.Zej&j)ej2Zej&j)ej6Zej:Zdad4a dZ!d5Z"d6Z#d7Z$d8Z%ejLr,ej&jOe%ejLZ(ne%ejRZ(e*ed9dZ+e+re+Z(ejd k(r"e%e(jYe%ed:reZ(d;ejZvre%ejZd;Z(d_d<Z.e.Z/e/rd=D]Z0ee0Z0e0d>e0d?<d@e0d><dAe0dB<[0dCZ1dDZ2dEZ3dFZ4dGZ5dHZ6d`dJZ7dKZ8dLZ9dMZ:dNZ;dOZdRZ?dSZ@e6ddIfdTZAe6ddIfdUZBdVZCdWZDdXZEdYZFdZZGd[ZHd\ZId]ZJeKd^k(reJyy)az-Access to Python's configuration information.N)realpath) get_config_h_filenameget_config_varget_config_varsget_makefile_filenameget_pathget_path_names get_paths get_platformget_python_versionget_scheme_namesparse_config_hMACOSX_DEPLOYMENT_TARGETz6{installed_base}/{platlibdir}/python{py_version_short}z0{platbase}/{platlibdir}/python{py_version_short}z1{base}/lib/python{py_version_short}/site-packagesz>{platbase}/{platlibdir}/python{py_version_short}/site-packagesz;{installed_base}/include/python{py_version_short}{abiflags}z?{installed_platbase}/include/python{py_version_short}{abiflags}z {base}/binz{base})stdlib platstdlibpurelibplatlibinclude platincludescriptsdataz-{installed_base}/lib/python{py_version_short}z'{platbase}/lib/python{py_version_short}z {base}/lib/python3/dist-packagesz${platbase}/lib/python3/dist-packagesz7{base}/local/lib/python{py_version_short}/dist-packagesz;{platbase}/local/lib/python{py_version_short}/dist-packagesz{base}/local/binz {base}/localz{installed_base}/lib/pythonz{base}/lib/pythonz{installed_base}/include/pythonz{installed_base}/Libz {base}/Libz{base}/Lib/site-packagesz{installed_base}/Includez{base}/Scripts) posix_prefix deb_system posix_local posix_homent posix_venvnt_venvrrvenvrc tjjdd}|r|Stjdvryd}tj dk(r,tjjdxsd}||dStjdk(rPtj r@|dd tj tjd d tjd S|dd S)NPYTHONUSERBASE>wasivxworks emscriptencttjjtjj|SN)ospath expanduserjoin)argss /usr/lib/python3.12/sysconfig.pyjoinuserz_getuserbase..joinusers$ww!!"'',,"566rAPPDATA~PythondarwinLibraryr.z.local)r'environgetsysplatformname _framework version_info)env_baser-bases r, _getuserbaser?szz~~.5H ||887 ww$zz~~i(/Ch'' ||xCNNY++A./q1A1A!1D0EFH H C ""r.z({userbase}/Python{py_version_nodot_plat}z6{userbase}/Python{py_version_nodot_plat}/site-packagesz0{userbase}/Python{py_version_nodot_plat}/Includez0{userbase}/Python{py_version_nodot_plat}/Scriptsz {userbase})rrrrrrrz0{userbase}/{platlibdir}/python{py_version_short}z5{userbase}/lib/python{py_version_short}/site-packagesz+{userbase}/include/python{py_version_short}z{userbase}/binz{userbase}/lib/pythonz#{userbase}/lib/python/site-packages)nt_user posix_userosx_framework_userr4r5Fz"([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< t|S#t$r|cYSwxYwr&)rOSError)r(s r,_safe_realpathrEs%~  s _homez\PCbuild_PYTHON_PROJECT_BASEc|ddl}|jdtddD]F}tjj tjj td|sFyy) Nrz.check_home argument is deprecated and ignored.) stacklevel)Setupz Setup.localModulesTF)warningswarnDeprecationWarningr'r(isfiler* _PROJECT_BASE) check_homerMfns r,is_python_buildrTs\ F(Q  8& 77>>"'',,}iD E r.)rrrrrheadersz{srcdir}/Includez{projectbase}/.rc |jdi|S#t$rE} |jditjcYd}~S#t$rt |dwxYwd}~wwxYw)N)formatKeyErrorr'r6AttributeError)s local_varsvars r, _subst_varsr^se5qxx%*%% 5 5188)bjj) ) 5 C5* 4 55s% A"AA"AAA"ch|j}|jD]\}}||vr |||<yr&)keysitems) target_dict other_dict target_keyskeyvalues r, _extend_dictrgsA""$K &&(! U +   C!r.cfi}|i}t|ttjdk(r|ddiz}t|j D]b\}}tjdvrtj j|}tj jt||||<d|S)Nr platlibdirlib)posixr) rgrr'r:_INSTALL_SCHEMESrar(r)normpathr^)schemevarsresrerfs r, _expand_varsrq"s C |() ww$|U++&v.446> U 77o %GG&&u-E77##Kt$<=C> Jr.cLtjdk(rddddStjdk(rtjrddddStj tj k7sttdrd}n)tjjd d }|d vrd }nd }|dd dS)Nrrr@)prefixhomeuserr2rrB real_prefixDEB_PYTHON_INSTALL_LAYOUTr)debrrrA) r'r:r8r9r; base_prefixrshasattrr6r7) prefix_scheme deb_builds r,_get_preferred_schemesr}4s ww$    ||xCNN$ (   #**$](C& JJNN#> N - -(M)M  r.c|dk(r"tjtjk7ryt|}|tvrt |d|d|S)Nrsrz returned z., which is not a valid scheme on this platform)r8rsryr}rl ValueError)rerns r,get_preferred_schemerTsZ h3::8 # %c *F %%gZz*    Mr.ctdS)Nrs)rrWr.r,get_default_schemer`s  ))r.Tc ddl}|i}i}i}t|tjd5}|j }dddD]}|j ds|j dk(r(|jt|} | sA| jdd\} } | j } | jd d} d | vr| || < | tvrtt| } | || <t|j} d }t!| dkDrt#| D]}||}|j%t&|}|j%t(|}|r(|r&|j+|j+kr|n|} n|r|n|} | .| jd} d }| |vrt-|| }no| |vrd }nh| t.j0vrt.j0| }nB| |vr7|j dr |dd|vrd}n#d| z|vrd }nt-|d| z}ndx|| <}|s|| j3d}|d| j+z|z}d |vr|||<8 |tvrtt|}|||<| j5||j ds{|dd|vs|dd}||vs|||<|r|||<| j5|t!| dkDr|j7D])\}} t9| t,s| j ||<+|j;||S#1swYxYw#t$r| jd d || <YwxYw#t$r|j ||<Y wxYw)zParse 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. rNsurrogateescape)encodingerrors#r5rIz$$$)CFLAGSLDFLAGSCPPFLAGSTFPY_)reopenr8getfilesystemencoding readlines startswithstripmatch _variable_rxgroupreplace _ALWAYS_STRrintlistr`lentuplesearch _findvar1_rx _findvar2_rxstartstrr'r6endremovera isinstanceupdate)filenamerokeep_unresolvedrdonenotdoneflineslinemnvtmpv variablesrenamed_variablesr:rfm1m2founditemafterks r,_parse_makefilerds | DG h!:!:!<& (+,   ??3 4::<2#5  HH\4 ( 771a=DAq A99T2&Dd{   K'((AA  DG- 2W\\^$I : i.1 )$@ 'DDME</B</Bb((*rxxz1BrB"}GGAJ9tAw> 77<<*OZ HHr.cttjdd}tjj ddtj d|S)Nrr_PYTHON_SYSCONFIGDATA_NAME_sysconfigdata__)getattrr8rr'r6r7r) multiarchs r,_get_sysconfigdata_namersB**L"=I ::>>$ #,,q 4 r.c>ddl}i}t} t||t } t|d5}t||dddtr|d |d <t}d tjvr/ddl }|j|} || _| tj |<d t#d t$} t tdr| dz } t'j(| dt&j*j-| |dz} t| dd5}|j/d|j/d|j||dddtddd5}|j/| dddy#t$r3}d|}t |dr|d|j d}t|d}~wwxYw#1swYzxYw#t$r3}d|}t |dr|d|j d}t|d}~wwxYw#1swYxYw#1swYyxYw)z;Generate the Python module containing build-time variables.rNz,invalid Python installation: unable to open strerrorz ()zutf-8)rLDSHARED BLDSHAREDr2z build/lib.rgettotalrefcountz-pydebugT)exist_okz.pywutf8zB# system configuration generated and used by the sysconfig module zbuild_time_vars = )streamzpybuilddir.txt)pprintrrrDrzrrrrrrr8r9types ModuleTypebuild_time_varsmodulesr rr'makedirsr(r*write) rromakefileemsgconfig_hrr:rmodule pybuilddirdestfiles r,_generate_posix_varsrs D$&H$'%&H (W - $ 1d # $ ,[ # $D3<<!!$'!%" Dln-Q/@.ABJs&'j KK T*ww||Ju 5H hf -& * + $% d1 % & f 5  i installed_platbaseplatbase projectbaserirrr4py_version_nodot_platrVPATHrkuserbase MULTIARCH/multiarchsubdirsrcdirr2rT)" _CONFIG_VARS_PREFIX _EXEC_PREFIX _PY_VERSIONrr _BASE_PREFIX_BASE_EXEC_PREFIXrQr8rirrZwinverrr'r:r_vpathr_HAS_USER_BASEr?rr7rr(rrr*rEr9 _osx_supportcustomize_config_vars_CONFIG_VARS_INITIALIZED)rrr>r$s r,_init_config_varsr'sL%L".L!,L'8L#$'?L#$%1L!""L):L%&+L"/L!$L&#&<< Z 303 0B0B30K ,- ww$ % # W ww'L!$0> Z {+I*- / &'*, &'  h 6F ww' 77??#8#:;DWW\\$/F WW__%:%<=F+F3L ||x**<8 $c &#% Z & 302 ,-3s$I5'I-I*)I*-JJctst5t tddd|r/g}|D]&}|j tj |(|StS#1swY@xYw)anWith 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. N)r&_CONFIG_VARS_LOCKrr'appendr7)r+valsr:s r,rrsh $  $ #!#  $  0D KK ((. / 0  $ $s AA&c4tj|S)zReturn the value of a single variable using the dictionary returned by 'get_config_vars()'. Equivalent to get_config_vars().get(name) )rr7)r:s r,rrs    &&r.cHtjdk(rsdtjj vrydtjj vrydtjj vrytj Stjdk7st td stj Sd tjvrtjd Stj\}}}}}|j jd d }|jd d}|jd d}|dddk(r|d|S|dddk(rB|ddk\rd}t|ddz d|dd}ddd}|d|tjz }n|dddk(r ddl m }|S|ddd k(r;d }ddl}|jd!}|j!|} | r=| j#}n,|ddd"k(r$ddl} | j't)|||\}}}|d|d|S)#aReturn 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: linux-i586 linux-alpha (?) solaris-2.6-sun4u Windows will return one of: win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) win32 (all others - specifically, sys.platform is returned) For other non-POSIX platforms, currently just returns 'sys.platform'. ramd64z win-amd64z(arm)z win-arm32z(arm64)z win-arm64rkuname_PYTHON_HOST_PLATFORMrr rrNlinuxsunosr5solarisrr4rI32bit64bit)ilaix) aix_platformcygwinz[\d.]+r2)r'r:r8versionlowerr9rzr6r/rrmaxsize _aix_supportr:rrrrr$get_platform_osxr) osnamehostreleaser=machinebitnessr:rrel_rerr$s r,r r s#* ww$ ckk'') ) ckk'') )  ))+ +|| ww'W!5||"**,zz122/1hhj+FD'7G\\^ # #C ,Fooc3'Gooc3'G bqzW(!G9%% w  1: FWQZ1,-Qwqr{m&|U A: UG2,  3%tE7!$%&r.c@dtjvr tytdt dtdt dtdt dttdtttdty) z*Display all information sysconfig detains.z--generate-posix-varsNz Platform: "rOzPython version: "zCurrent installation scheme: "Paths Variables) r8argvrrQr r rrTr rrWr.r,_mainrYs|#((* K 'q )* 0231 56 *+=+?*@ BC G% G _./r.__main__r&)NT)L__doc__r'r8 threadingos.pathr__all__rrlr:r?r#rr=splitrr<rrr(rmrsrryrr rbase_exec_prefixr RLockr)rr& _USER_BASErrrrErrrQgetcwdr _sys_homerr6rTrrnr^rgrqr}rrrrrrrrrrr r r rr'rrr r rLrTrY__name__rWr.r,rfss3    KHFS I M  B?59 I M  B?LP I M%  0)&&48  )"---1# 8KHFS I M  )"---1#  m`F77d?/ :V/ =V #,.,ADOOII ILNND' .1<<D' )># kk!!$ ''*+1S-=-=a-@,AB!..q1233C3CA3F2GH ''  3:: &ww0 ww0 GG$$S%9%9:#IOO%    5 / -  >>GGOON3>>$BCM#9299;/M C$ '  M77d? m$// l^95 68$ RZZ'"2::.D#EFM ! M2 "&)"9-y.y 1}2 5!$@ *}@ I=~!.D /+  ()T (-.T$1D$N<'N+b 4& 0 z Gr.