B
    Áì2aý^  ã               @   s  d Z ddlZddlZddlmZmZ dddddd	d
ddddgZdddddddddœdddddddddœdddddddddœd d d!d!d"d#d$d%œd&d&d'd'd(d)d$d%œd*d*d+d+d,d)d$d%œd-œZd%Zej	 
¡ d Zd.ejdd/…  Zd0ejdd/…  Zej ej¡Zej ej¡Zej ej¡Zej ej¡ZdadZd1d2„ Zej�rPej eejƒ¡Znee ¡ ƒZej d3k�rŒe !¡  "d4¡�rŒeej #eee¡ƒZd5ej$k�r¦eej$d5 ƒZd6d7„ Z%e&ed8dƒZ'ej d3k�rÞd9d:„ Z(e(eƒZe(e'ƒZ'dhd<d=„Z)e)d>ƒZ*e*�rx&d?D ]Z+d@ee+ dA< dBee+ dC< �qüW dDdE„ Z,dFdG„ Z-dHdI„ Z.dJdK„ Z/dLdM„ Z0didNdO„Z1dPd„ Z2dQdR„ Z3dSdT„ Z4dUdV„ Z5dWdX„ Z6djdYd„Z7dZd„ Z8d[d„ Z9d\d	„ Z:e/ƒ dd>fd]d
„Z;e/ƒ dd>fd^d„Z<d_d„ Z=d`d„ Z>dad„ Z?dbd„ Z@dcdd„ ZAdedf„ ZBeCdgk�rþeBƒ  dS )kz-Access to Python's configuration information.é    N)ÚpardirÚrealpathÚget_config_h_filenameÚget_config_varÚget_config_varsÚget_makefile_filenameÚget_pathÚget_path_namesÚ	get_pathsÚget_platformÚget_python_versionÚget_scheme_namesÚparse_config_hz-{installed_base}/lib/python{py_version_short}z'{platbase}/lib/python{py_version_short}z1{base}/lib/python{py_version_short}/site-packagesz5{platbase}/lib/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Ú
platstdlibÚpurelibÚplatlibÚincludeÚplatincludeÚscriptsÚdataz{installed_base}/lib/pythonz{base}/lib/pythonz{installed_base}/include/pythonz{installed_base}/Libz
{base}/Libz{base}/Lib/site-packagesz{installed_base}/Includez{base}/Scriptsz#{userbase}/Python{py_version_nodot}z1{userbase}/Python{py_version_nodot}/site-packagesz+{userbase}/Python{py_version_nodot}/Includez+{userbase}/Python{py_version_nodot}/Scriptsz
{userbase})r   r   r   r   r   r   r   z'{userbase}/lib/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-packagesz{userbase}/include)Úposix_prefixÚ
posix_homeÚntZnt_userZ
posix_userZosx_framework_userz%d.%dé   z%d%dc             C   s"   yt | ƒS  tk
r   | S X d S )N)r   ÚOSError)Úpath© r   ú5/var/www/html/prediksi/Python-3.7.12/Lib/sysconfig.pyÚ_safe_realpathd   s    r   r   )z\pcbuild\win32z\pcbuild\amd64Z_PYTHON_PROJECT_BASEc             C   s.   x(dD ] }t j t j | d|¡¡rdS qW dS )N)z
Setup.distzSetup.localZModulesTF)Úosr   ÚisfileÚjoin)ÚdÚfnr   r   r   Ú_is_python_source_diry   s    
r%   Z_homec             C   s0   | r,t j | ¡ t j t j td¡¡¡r,tS | S )NZPCbuild)r    r   ÚnormcaseÚ
startswithr"   Ú_PREFIX)r#   r   r   r   Ú_fix_pcbuild‚   s    r)   Fc             C   s   | rt rtt ƒS ttƒS )N)Ú	_sys_homer%   Ú_PROJECT_BASE)Z
check_homer   r   r   Úis_python_buildŠ   s    r,   T)r   r   z{srcdir}/Includer   z{projectbase}/.r   c             C   sf   y| j f |ŽS  tk
r`   y| j f tjŽS  tk
rZ } ztd| ƒd ‚W d d }~X Y nX Y nX d S )Nz{%s})ÚformatÚKeyErrorr    ÚenvironÚAttributeError)ÚsZ
local_varsÚvarr   r   r   Ú_subst_vars—   s    r3   c             C   s4   |   ¡ }x&| ¡ D ]\}}||kr$q|| |< qW d S )N)ÚkeysÚitems)Ztarget_dictZ
other_dictZtarget_keysÚkeyÚvaluer   r   r   Ú_extend_dict    s
    r8   c             C   sf   i }|d kri }t |tƒ ƒ xDt|   ¡ D ]4\}}tjdkrHtj |¡}tj t	||ƒ¡||< q*W |S )N)Úposixr   )
r8   r   Ú_INSTALL_SCHEMESr5   r    Únamer   Ú
expanduserÚnormpathr3   )ÚschemeÚvarsZresr6   r7   r   r   r   Ú_expand_vars¨   s    
r@   c               C   s   t jdkrdS t jS )Nr9   r   )r    r;   r   r   r   r   Ú_get_default_schemeµ   s    
rA   c              C   sz   t j dd ¡} | r| S dd„ }t jdkrBt j d¡p6d}||dƒS tjdkrptjrp|dd	tjd
tjd d…  ƒS |ddƒS )NZPYTHONUSERBASEc              W   s   t j t jj| Ž ¡S )N)r    r   r<   r"   )Úargsr   r   r   ÚjoinuserÃ   s    z_getuserbase.<locals>.joinuserr   ZAPPDATAú~ZPythonÚdarwinZLibraryz%d.%dr   z.local)r    r/   Úgetr;   ÚsysÚplatformÚ
_frameworkÚversion_info)Zenv_baserC   Úbaser   r   r   Ú_getuserbase¾   s    


rL   c          	   C   sZ  ddl }| d¡}| d¡}| d¡}|dkr2i }i }i }t| dd��}| ¡ }	W dQ R X x¢|	D ]š}
|
 d¡s`|
 ¡ d	kr|q`| |
¡}|r`| d
d¡\}}| ¡ }| dd	¡}d|krÀ|||< q`yt	|ƒ}W n$ t
k
rð   | dd¡||< Y q`X |||< q`W t| ¡ ƒ}d}�x
t|ƒdk�r�xòt|ƒD �]ä}|| }| |¡}| |¡}|�rv|�rv| ¡ | ¡ k �rp|n|}n|�r€|n|}|dk	�rþ| d
¡}d}||k�r´t|| ƒ}nˆ||k�rÄd}nx|tjk�rÜtj| }n`||k�r0| d¡�r
|dd… |k�r
d	}n$d| |k�rd}nt|d|  ƒ}nd	 ||< }|�r|| ¡ d… }|d| ¡ … | | }d|k�r~|||< n~yt	|ƒ}W n" t
k
�r¬   | ¡ ||< Y n
X |||< | |¡ | d¡�r|dd… |k�r|dd… }||k�r|||< n|||< | |¡ �q,W �qW x.| ¡ D ]"\}}t|tƒ�r&| ¡ ||< �q&W | |¡ |S )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   Nz"([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_]*)}Úsurrogateescape)Úerrorsú#Ú é   r   z$$ú$)ZCFLAGSZLDFLAGSZCPPFLAGSTFZPY_é   )ÚreÚcompileÚopenÚ	readlinesr'   ÚstripÚmatchÚgroupÚreplaceÚintÚ
ValueErrorÚlistr4   ÚlenÚtupleÚsearchÚstartÚstrr    r/   ÚendÚremover5   Ú
isinstanceÚupdate)Úfilenamer?   rT   Z_variable_rxZ_findvar1_rxZ_findvar2_rxZdoneZnotdoneÚfÚlinesÚlineÚmÚnÚvZtmpvZ	variablesZrenamed_variablesr;   r7   Zm1Zm2ÚfoundÚitemZafterÚkr   r   r   Ú_parse_makefileÑ   s–    	


















rr   c              C   sd   t rtj tptd¡S ttdƒr0dttj	f } nd} ttj
dƒrP| dtj
j 7 } tj tdƒ| d¡S )z Return the path of the Makefile.ZMakefileÚabiflagszconfig-%s%sZconfigÚ
_multiarchz-%sr   )Ú_PYTHON_BUILDr    r   r"   r*   r+   ÚhasattrrG   Ú_PY_VERSION_SHORTrs   Úimplementationrt   r   )Zconfig_dir_namer   r   r   r   M  s    
c            
   C   s(   t j ddjtjtjttjddƒd�¡S )NZ_PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}rt   rP   )ZabirH   Z	multiarch)	r    r/   rF   r-   rG   rs   rH   Úgetattrrx   r   r   r   r   Ú_get_sysconfigdata_nameZ  s
    rz   c           
   C   sÊ  ddl } i }tƒ }yt||ƒ W nJ tk
rj } z,d| }t|dƒrR|d|j  }t|ƒ‚W dd}~X Y nX tƒ }y"t|ƒ�}t||ƒ W dQ R X W nJ tk
rÞ } z,d| }t|dƒrÆ|d|j  }t|ƒ‚W dd}~X Y nX t	rð|d |d< t
ƒ }dtjk�r$ddl}| |¡}	||	_|	tj|< d	tƒ tf }
ttd
ƒ�rF|
d7 }
tj|
dd� tj |
|d ¡}t|ddd��(}| d¡ | d¡ | j ||d� W dQ R X tdddd��}| |
¡ W dQ R X dS )z;Generate the Python module containing build-time variables.r   Nz.invalid Python installation: unable to open %sÚstrerrorz (%s)ZLDSHAREDZ	BLDSHAREDrE   zbuild/lib.%s-%sZgettotalrefcountz-pydebugT)Úexist_okz.pyÚwÚutf8)ÚencodingzB# system configuration generated and used by the sysconfig module
zbuild_time_vars = )Ústreamzpybuilddir.txtÚascii)Úpprintr   rr   r   rv   r{   r   rV   r   ru   rz   rG   rH   ÚtypesÚ
ModuleTypeÚbuild_time_varsÚmodulesr   rw   r    Úmakedirsr   r"   Úwrite)r‚   r?   ZmakefileÚeÚmsgZconfig_hri   r;   rƒ   ÚmoduleZ
pybuilddirZdestfiler   r   r   Ú_generate_posix_varsc  sL    






rŒ   c             C   s0   t ƒ }t|tƒ tƒ dgdƒ}|j}|  |¡ dS )z7Initialize the module as appropriate for POSIX systems.r…   r   N)rz   Ú
__import__ÚglobalsÚlocalsr…   rg   )r?   r;   Z_tempr…   r   r   r   Ú_init_posix¢  s    r�   c             C   sV   t dƒ| d< t dƒ| d< t dƒ| d< d| d< d	| d
< t| d< tj ttjƒ¡| d< dS )z+Initialize the module as appropriate for NTr   ZLIBDESTr   Z
BINLIBDESTr   Z	INCLUDEPYz.pydÚ
EXT_SUFFIXz.exeZEXEZVERSIONZBINDIRN)r   Ú_PY_VERSION_SHORT_NO_DOTr    r   Údirnamer   rG   Ú
executable)r?   r   r   r   Ú_init_non_posixª  s    r•   c       	      C   s¦   |dkri }ddl }| d¡}| d¡}xx|  ¡ }|s8P | |¡}|r‚| dd¡\}}yt|ƒ}W n tk
rv   Y nX |||< q*| |¡}|r*d|| d¡< q*W |S )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.
    Nr   z"#define ([A-Z][A-Za-z0-9_]+) (.*)
z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/
rQ   r   )rT   rU   ÚreadlinerY   rZ   r\   r]   )	Úfpr?   rT   Z	define_rxZundef_rxrk   rl   rm   rn   r   r   r   r   º  s*    




c              C   sB   t r,tjdkr"tj tptd¡} q4tp(t} ntdƒ} tj | d¡S )zReturn the path of pyconfig.h.r   ZPCr   z
pyconfig.h)ru   r    r;   r   r"   r*   r+   r   )Zinc_dirr   r   r   r   Ú  s    

c               C   s   t ttƒƒS )z,Return a tuple containing the schemes names.)r`   Úsortedr:   r   r   r   r   r   æ  s    c               C   s   t S )z*Return a tuple containing the paths names.)Ú_SCHEME_KEYSr   r   r   r   r	   ë  s    c             C   s   |rt | |ƒS t|  S dS )z°Return 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.
    N)r@   r:   )r>   r?   Úexpandr   r   r   r
   ð  s    
c             C   s   t |||ƒ|  S )z[Return a path corresponding to the scheme.

    ``scheme`` is the install scheme name.
    )r
   )r;   r>   r?   rš   r   r   r   r   ü  s    c              G   s|  t dk�rFi a tt d< tt d< tt d< tt d< tt d< tt d< tt d< tt d	< tt d
< tt d< yt	j
t d< W n tk
rˆ   dt d< Y nX tjdkrœtt ƒ tjdkr®tt ƒ t  d¡}|dk	rÈ|t d< tƒ t d< t  dt¡}tjdk�rt�rtj tƒ ¡}tj ||¡}ntj tƒ ¡}t|ƒt d< t	jdk�rFddl}| t ¡ | �rtg }x| D ]}| t  |¡¡ �qVW |S t S dS )an  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.
    NÚprefixÚexec_prefixZ
py_versionZpy_version_shortZpy_version_nodotZinstalled_baserK   Zinstalled_platbaseZplatbaseZprojectbasers   rP   r   r9   r‘   ÚSOZuserbaseÚsrcdirrE   r   )Ú_CONFIG_VARSr(   Ú_EXEC_PREFIXÚ_PY_VERSIONrw   r’   Ú_BASE_PREFIXÚ_BASE_EXEC_PREFIXr+   rG   rs   r0   r    r;   r•   r�   rF   rL   ru   r   r“   r   r"   r   rH   Ú_osx_supportZcustomize_config_varsÚappend)rB   r�   rž   rK   r¤   Zvalsr;   r   r   r   r     sP    






c             C   s*   | dkrddl }| dtd¡ tƒ  | ¡S )z“Return the value of a single variable using the dictionary returned by
    'get_config_vars()'.

    Equivalent to get_config_vars().get(name)
    r�   r   Nz SO is deprecated, use EXT_SUFFIXr   )ÚwarningsÚwarnÚDeprecationWarningr   rF   )r;   r¦   r   r   r   r   Q  s    c        
      C   sª  t jdkr"dtj ¡ krdS tjS t jdks6tt dƒs<tjS dt jkrPt jd S t  ¡ \} }}}}|  ¡  	dd¡} | 	d	d
¡}| 	dd¡}| dd… dkr¦d| |f S | dd… dk�r|d dk�rœd} dt
|d ƒd |dd… f }dddœ}|d|tj  7 }n”| dd… dk�r(d| ||f S | dd… dk�rjd} ddl}| d¡}| |¡}|�rœ| ¡ }n2| dd… d k�rœddl}	|	 tƒ | ||¡\} }}d!| ||f S )"aö  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:
       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'.

    r   Zamd64z	win-amd64r9   ÚunameZ_PYTHON_HOST_PLATFORMú/rP   ú Ú_ú-Né   Zlinuxz%s-%sZsunosr   Ú5Zsolarisz%d.%srS   r   Z32bitZ64bit)iÿÿÿl   ÿÿÿÿ z.%sZaixz%s-%s.%sé   Úcygwinz[\d.]+rE   z%s-%s-%s)r    r;   rG   ÚversionÚlowerrH   rv   r/   r©   r[   r\   ÚmaxsizerT   rU   rY   rZ   r¤   Zget_platform_osxr   )
ZosnameZhostÚreleaser²   ÚmachineZbitnessrT   Zrel_rerl   r¤   r   r   r   r   ]  sF    


 



c               C   s   t S )N)rw   r   r   r   r   r   ©  s    c             C   sJ   xDt t| ¡ ƒƒD ]0\}\}}|dkr2td|  ƒ td||f ƒ qW d S )Nr   z%s: z
	%s = "%s")Ú	enumerater˜   r5   Úprint)Útitler   Úindexr6   r7   r   r   r   Ú_print_dict­  s    r»   c               C   sf   dt jkrtƒ  dS tdtƒ  ƒ tdtƒ  ƒ tdtƒ  ƒ tƒ  tdtƒ ƒ tƒ  tdt	ƒ ƒ dS )z*Display all information sysconfig detains.z--generate-posix-varsNzPlatform: "%s"zPython version: "%s"z!Current installation scheme: "%s"ZPathsZ	Variables)
rG   ÚargvrŒ   r¸   r   r   rA   r»   r
   r   r   r   r   r   Ú_main´  s    
r½   Ú__main__)F)N)N)DÚ__doc__r    rG   Zos.pathr   r   Ú__all__r:   r™   r²   Úsplitr¡   rJ   rw   r’   r   r=   r›   r(   Úbase_prefixr¢   rœ   r    Úbase_exec_prefixr£   rŸ   Z
_USER_BASEr   r”   r“   r+   Úgetcwdr;   r³   Úendswithr"   r/   r%   ry   r*   r)   r,   ru   r>   r3   r8   r@   rA   rL   rr   r   rz   rŒ   r�   r•   r   r   r   r	   r
   r   r   r   r   r   r»   r½   Ú__name__r   r   r   r   Ú<module>   sæ   

		
|	?
 ML
