
    xheH                     J   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lZd dlZd dlZd dl	Z	d dl
mZ d dlmZ d dlmZ d dlmZ d dlmZmZ d dlmZmZmZ d dlmZ d d	lmZ d d
lmZmZ d dlmZ d dl m!Z! d dl"m#Z# ddl$m%Z% ddl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z=m>Z> ddl?m@Z@ ddlAmBZB ddlCmDZD ddlEmFZF ddl%mGZGmHZHmIZImJZJmKZKmLZL ddlMmNZN  eeO          ZPdZQdZRdZSdZTd ZUd ZVd  ZWd! ZXd" ZYd# ZZ ed$          	 dYd'            Z[d( Z\d) Z]	 	 	 	 	 dZd+Z^d, Z_d- Z`d. Zad/ Zbd0 Zcd[d1eDfd2Zd ed$          d3             Zed4 Zfd5 Zgd6 Zhd7 Zi ed$          d8             Zjd9 Zkd: Zld; Zmd< Zn G d= d>eo          Zpd? Zqd@ Zr G dA dB          Zsi atd au	 	 	 	 	 	 	 	 	 	 	 d\dEZv e;dFdGdHI          	 	 	 	 	 	 	 	 	 	 	 d\dJ            Zw e;jx        dFdGdKdLM          	 	 	 	 	 d]dN            ZydO ZzdPe{dQe9dRdfdSZ|dT Z}dU Z~dV ZeZ[dW ZdX ZdS )^    N)defaultdict)	lru_cache)glob)	getLogger)joinnormpath)CONDA_PACKAGE_EXTENSIONSDEFAULTS_CHANNEL_NAMEUNKNOWN_CHANNEL)env_vars)LAST_CHANNEL_URLS)PrefixSetupUnlinkLinkTransaction)PackageCacheData)
PrefixData)prioritize_channels   )utils)Channel
CondaError	LinkError	LockError	MatchSpecNoPackagesFoundErrorPackageRecordPaddingErrorProgressiveFetchExtractTemporaryDirectoryUnsatisfiableErrorcontextcreate_default_packagesget_version_from_git_tag	pkgs_dirsreset_contextroot_dir)Config)
deprecated)BuildLockErrorDependencyNeedsBuildingError)feature_list)get_build_index)MetaData)external)ensure_listenv_varon_macon_winpackage_record_to_requirementprepend_bin_path)get_default_variantPREFIXLINK)PERLLUARNUMPYPYTHON)zr-basezmro-basezr-implc                     d                     | j                            dt          |           d                                       d          d d                   S )N.perl   r   variantgetr4   splitconfigs    3lib/python3.11/site-packages/conda_build/environ.pyget_perl_verrG   O   sU    886#6v#>#>v#FGGMMcRRSUTUSUV      c                     d                     | j                            dt          |           d                                       d          d d                   S )Nr=   luar?   r@   rD   s    rF   get_lua_verrK   U   sU    885"5f"="=e"DEEKKCPPQSRSQST  rH   c                     | j                             dt          |           d                   }t          |d          s|d         }d                    |                    d          d d                   S )NpythonrC   r   r=   r?   )rA   rB   r4   hasattrr   rC   )rE   pys     rF   
get_py_verrP   [   sg    			H&9&&A&A(&K	L	LB2w U88BHHSMM"1"%&&&rH   c                     d                     | j                            dt          |           d                                       d          d d                   S )Nr=   r_base   r@   rD   s    rF   	get_r_verrT   b   sV    888%8%@%@%JKKQQRUVVQB	
  rH   c                     d                     t          | j                            d          pt	          |           d                                       d                    }|d         dz   |dd          z   S )N numpyr=   r   r   )r   strrA   rB   r4   rC   )rE   	conda_npys     rF   get_npy_verrZ   j   st    FNw''O+>v+F+Fw+OPPVV	
 	
 I Q<#	!""--rH   c                 ,    t          | j        d          S )Ninclude)r   host_prefixrD   s    rF   get_lua_include_dirr^   v   s    "I...rH   )maxsizeFHEADc           	      (   t           j                                        }t          j        t
                    }|rd nt          j        }|sdS d}	||d<   	 t          j        | ddddd|z  z   g||	          }
|
	                    d
          }
t          j        | ddd|g||	          }|	                    d
          }|
|k    rdS t          j        | ddg||	          }|	                    d
          }|
                    d          d         
                                d         }t          |t                    s(|                    t          j                    pd
          }	 t          j        | d|ddg||	          }na# t          j        $ rO t"          r)|                    d          rt          j        |          }t          j        | d|ddg||	          }Y nw xY w|	                    d
          }|
                    d          d         
                                d         }t"          r)|                    d          rt          j        |          }t           j                            |          rt-          |          }t           j                            |          s|                                |                                k    rk|                    d           |                    d|                                z              |                    d|                                z              d}	nU# t          j        $ rC}|                    d           |                    t          |                     d}	Y d }~nd }~ww xY w|	S )NFTGIT_DIRlogz-n1z--format=%Hr`   ^)envstderrutf-8remotez-v
r   r   z	--git-dir/zremote does not match git_urlzRemote: z	git_url: z@Error obtaining git information in verify_git_repo.  Error was: )osenvironcopyr   
get_logger__name__
subprocessDEVNULLcheck_output_envdecoderC   
isinstancerX   encodesysgetfilesystemencodingCalledProcessErrorr1   
startswithconvert_unix_path_to_winpathexistsr   isdirlowerdebug)git_exegit_dirgit_urlgit_commits_since_tagr   expected_revre   rc   rf   OKcurrent_commitexpected_tag_commitcache_details	cache_dirremote_details
remote_urlerrors                    rF   verify_git_repor   z   s    *//

C

8
$
$C2TT
 2F u	BC	NF/444 

 

 

 (..w77#4eUM<@cRX
 
 
 288AA0005 .h%3v
 
 
 &,,W55!''--a06688;	)S)) 	Q!(()B)D)D)OPPI	"3+y(DA  NN
 , 	 	 	 F)..s33 F!:9EE	"3+y(DA  NNN	 (..w77#))$//288::1=
  	Aj++C00 	A7@@J7>>*%% 	.!*--J w}}Z(( 	Z-=-=-?-?7==??-R-RII5666IIj:#3#3#5#55666IIkGMMOO3444B(   		TUUU		#e** IsF   A.L= BL= $F  L= AGL= GEL= =N9N

Nc                    i }t          j        t                    }|rdnt          j        }t
          j                                        }||d<   g d}	 t          j        | ddddg|t
          j	        
                    |          |                                          d	         }|                    d
          }|                    dd          }	t          |	          dk    r0|                    t!          t#          ||	                               t%          t'          |                    |d<   n,# t          j        $ r d}
|                    |
           Y nw xY wd|vr	 t          j        | ddddg|t
          j	        
                    |          |                                          d	         }|                    d
          }|                    dd          }	t          |	          dk    r|	d         |d<   nS# t          j        $ rA}|                    d           |                    t%          |                     Y d}~nd}~ww xY w	 t          j        | ddg|t
          j	        
                    |          |                                          d	         }|                    d
          }||d<   nS# t          j        $ rA}|                    d           |                    t%          |                     Y d}~nd}~ww xY wd|v r)d|v r%d                    |d         |d                   |d<   t/          d |                                D                       rJ |S )z
    Given a repo to a git repo, return a dictionary of:
      GIT_DESCRIBE_TAG
      GIT_DESCRIBE_TAG_PEP440
      GIT_DESCRIBE_NUMBER
      GIT_DESCRIBE_HASH
      GIT_FULL_HASH
      GIT_BUILD_STR
    from the output of git describe.
    :return:
    Nrb   )GIT_DESCRIBE_TAGGIT_DESCRIBE_NUMBERGIT_DESCRIBE_HASHdescribez--tagsz--longr`   )re   cwdrf   r   rg   -r?   rS   GIT_DESCRIBE_TAG_PEP440zFailed to obtain git tag information.
Consider using annotated tags if you are not already as they are more reliable when used with git describe.r   z--allz4Error obtaining git commit information.  Error was: z	rev-parseGIT_FULL_HASHr   {}_{}GIT_BUILD_STRc              3      K   | ]}d |v V  	dS )ri   N ).0values     rF   	<genexpr>zget_git_info.<locals>.<genexpr>'  s&      99U45=999999rH   )r   rn   ro   rp   rq   rk   rl   rm   rr   r{   dirname
splitlinesrs   rsplitlenupdatedictziprX   r"   rx   r   formatanyvalues)r   repor   drc   rf   re   keysoutputpartsmsgr   s               rF   get_git_infor      s    	A

8
$
$C2TT
 2F *//

CC	NKKKD'j(Hf=%%	
 
 

 *,,q w''c1%%u::??HHT#dE**++,,,'*+CF+K+K'L'L
#$$(   E 	
 			# !##	"+*gx@GOOD))	  
 jll1F ]]7++FMM#q))E5zzQ */r%&, 	" 	" 	"IILMMMIIc%jj!!!!!!!!	"'k6*%%	
 
 

 *,,q w''#/(   		HIII		#e**
 !!&9Q&>&>$^^#$a(;&<
 
/
 99ahhjj99999999HsE   CD4 4&EE%BH I7IIA*K   L7LLc                    t           j                                        }| |d<   d |                                D             }i }g d}t	          j        ||t           j                            |                     }|                    d          }|	                    d          \  }}}}}	|dk    r||d<   |	d	k    rd
}	|	|d<   ||d<   ||d<   ||d<   d
                    |d         |d                   |d<   |S )NHG_DIRc                 N    i | ]"\  }}t          |          t          |          #S r   )rX   )r   keyr   s      rF   
<dictcomp>z%get_hg_build_info.<locals>.<dictcomp>.  s*    
>
>
>JC3s88SZZ
>
>
>rH   )hgrc   z
--templatez;{rev}|{node|short}|{latesttag}|{latesttagdistance}|{branch}z--revr=   )re   r   rg   |nullHG_LATEST_TAGrV   default	HG_BRANCH	HG_NUM_IDHG_LATEST_TAG_DISTANCEHG_SHORT_IDr   HG_BUILD_STR)rk   rl   rm   itemsr   rr   r{   r   rs   rC   r   )
r   re   r   cmdr   revshort_idtagdistancebranchs
             rF   get_hg_build_infor   +  s   
*//

CCM
>
>#))++
>
>
>C
A  C #CSbgood6K6KLLLF]]7##F+1<<+<+<(C3&
f}} /||AkNAkN"*AAmq~q7GHHAnHrH   Tc                 (   |s| j         j        }| j        | j         _        t	          || j                   }|                    t          | ||                     |                    t          | ||                     |                    t          | ||                     |                    t          | ||                     | r$|                    t          | |                     |                    t          | |                     |                    d t          D                        |p| j         j        }|                                D ]=\  }}|r1|                                |vr |                                t           vr|||<   >|S )N)skip_build_idc                 r    i | ]4\  }}|                                 t          t          |                    5S r   )upperrX   int)r   featr   s      rF   r   zget_dict.<locals>.<dictcomp>e  s2    LLLedjjllCE

OOLLLrH   )rE   r]   build_is_host_merge_build_hostconda_build_varsr   python_vars	perl_varslua_varsr_vars	meta_varsos_varsr*   rA   r   r   	LANGUAGES)	mprefixfor_envr   escape_backslashrA   r   kvs	            rF   get_dictr   H  s     &%!"AH 	**A HH[F$455666HHYq&"233444HHXa!122333HHVAv/00111 <	1M:::;;; HHWQ    HHLL|LLLMMM))G  1 	17799A--!''))92L2LAaDHrH   c                    t           j                            |           d d         dk    r|j        n|j        }i ddddd|j        dt          |j                  d| d	|j        d
t          j
        dt          j        d|j        d|j        d|dt          j        dd          dt          j        dd          dt          j        dd          d|j        rdnddt           S )Nr?   _tCONDA_BUILD1PYTHONNOUSERSITECONDA_DEFAULT_ENVARCHr5   BUILD_PREFIX
SYS_PREFIX
SYS_PYTHONSUBDIRbuild_platformSRC_DIRHTTPS_PROXYrV   
HTTP_PROXYREQUESTS_CA_BUNDLEDIRTYROOT)rk   r{   basenametest_dirwork_dirr]   rX   	host_archbuild_prefixrv   r   
executablehost_subdirbuild_subdirgetenvdirtyr%   )r   rE   src_dirs      rF   r   r   n  sF   7++F33BQB74??V_ sC 	V/ 	F$%%	 	&  	+!" 	cj#$ 	cn%& 	&$'( 	&-)* 	7+, 	ry33-. 	bib11/0 	bi(<bAA12 	,"34 	5 rH   c           	      V   t          | j                  }t          j        ||          }t          j        ||          }t          j        r.|r,|                    dd          }|                    dd          }d                    |                    d          d d                   t          t          t          |d                   dk                        |||d}| j        rd	nd
}d |                     |          D             }d|v s|                                 dk    r`| j                            || j        j                  }	t          j        r|r|	                    dd          }	|                    d|	i           | j        j                            dt'          | j                  d                   }
d                    |
                    d          d d                   |d<   d                    |
                    d          d d                   |d<   d|d<   |S )N\\\rV   r=   r?   r   rS   )CONDA_PYPY3KPY_VER
STDLIB_DIRSP_DIRhostbuildc                 6    g | ]}t          |j                  S r   rX   namer   mss     rF   
<listcomp>zpython_vars.<locals>.<listcomp>       FFFRCLLFFFrH   rM   r;   rW   NPY_VER	CONDA_NPYr   NPY_DISTUTILS_APPEND_FLAGS)rP   rE   r   get_stdlib_dirget_site_packagesr1   replacer   rC   rX   r   is_cross
ms_dependsr  
python_binr   r   rA   rB   r4   )metadatar   r   py_ver
stdlib_dirsp_dirvars_build_or_hostdepsr  np_vers              rF   r   r     s   ((F%ff55J$VV44F| .( .''f55
f-- GGFLL--bqb122CF1I!+,,--  E '/<FFWMFF8#6#6}#E#EFFFD48==??h66_//8STT
< 	:, 	:#++D&99J *	
 	
 	
 _$(($X_55g> F xxS 1 1"1" 566E)c!2!22A2!677E+*-E
&'LrH   c                    t          | j                  t          | j                  d}| j        rdnd}d |                     |          D             }d|v s|                                 dk    r`| j                            || j        j                  }t          j        r|r|	                    dd          }|
                    d|i           |S )	N)PERL_VER
CONDA_PERLr  r  c                 6    g | ]}t          |j                  S r   r  r  s     rF   r
  zperl_vars.<locals>.<listcomp>  r  rH   r>   r   r   r7   )rG   rE   r  r  r  perl_binr   r   r1   r  r   )r  r   r   r  r  r  r!  s          rF   r   r     s     11"8?33 E '/<FFWMFF8#6#6}#E#EFFFD~~F22?++FHO4OPP< 	6, 	6''f55H 	
 	
 	
 LrH   c                    t          | j                  t          | j                  d}| j        rdnd}d |                     |          D             }d|v r| j                            || j        j                  }t          | j                  }t          j        r.|r,|	                    dd          }|	                    dd          }|
                    ||d           |S )	N)LUA_VER	CONDA_LUAr  r  c                 6    g | ]}t          |j                  S r   r  r  s     rF   r
  zlua_vars.<locals>.<listcomp>  r  rH   rJ   r   r   )r8   LUA_INCLUDE_DIR)rK   rE   r  r  lua_binr   r^   r   r1   r  r   )r  r   r   r  r  r  r'  lua_include_dirs           rF   r   r     s    x// 11 E '/<FFWMFF8#6#6}#E#EFFFD}}/))&(/2MNN-ho>>< 	D, 	DoodF33G-55dFCCO#2 	
 	
 	
 LrH   c                    t          | j                  t          | j                  d}| j        rdnd}d |                     |          D             t	          fdt
          D                       s|                                 t
          v rr| j                            || j        j                  }t          |dd          }t          j        r|r|                    dd	          }|                    ||d
           |S )N)R_VERCONDA_Rr  r  c                 6    g | ]}t          |j                  S r   r  r  s     rF   r
  zr_vars.<locals>.<listcomp>  r  rH   c              3       K   | ]}|v V  	d S Nr   )r   r_pkgr  s     rF   r   zr_vars.<locals>.<genexpr>  s'      
1
1U5D=
1
1
1
1
1
1rH   Libsr9   r   r   )r9   R_USER)rT   rE   r  r  r   
R_PACKAGESr  r_binr   r   r   r1   r  r   )r  r   r   r  r  r3  r_userr  s          @rF   r   r     s   8?++X_-- E
 '/<FFWMFF8#6#6}#E#EFFFD

1
1
1
1j
1
1
111 
X]]__
5R5R%%fho.IJJffc**< 	0, 	0MM$//E  	
 	
 	
 LrH   metac                    i }t          |                     dg                     D ]}d|v r|                    dd          \  }}nt          j        |          }|t          j        d|z  t                     T|||<   t          j        d| d| j        j	        rdn| dt                     |                     d	d
          }t          | j        j        |          }t          |d          }t          |d          }t          |t                    s(|                    t          j                    pd          }t#          j        d| j        j                  }	|	rt          j                            |          r|                     d          }
t          j                            |
          r=t,          rt/          j        |
          }
t3          t          | j        |
                    }
d}|
r<t5          |	||
| j        j        | j        j        |                     dd                    }|s|                     d          r.|                    t=          |	|| j        j                             n`t#          j        d| j        j                  rAt          j                            |          r"|                    t?          |                     |                                  |d<   | !                                |d<   t          | "                                          |d<   | j#        r1|s/| $                                |d<   | %                                |d<   n
d|d<   d|d<   | j        |d<   |S )Nzbuild/script_env=r   zCThe environment variable '%s' specified in script_env is undefined.zThe environment variable 'z&' is being passed through with value 'z<hidden>z'.  If you are splitting build and test phases with --no-test, please ensure that this value is also set similarly at test time.zsource/0/folderrV   z.gitz.hgrg   gitzsource/0/git_urlFzsource/0/git_revr`   zsource/0/pathr   PKG_NAMEPKG_VERSIONPKG_BUILDNUMPKG_BUILD_STRINGPKG_HASHplaceholder1234567
RECIPE_DIR)&r.   	get_valuerC   rk   r   warningswarnUserWarningrE   suppress_variablesr   r   rt   rX   ru   rv   rw   r-   find_executabler   r{   r|   r1   r   rz   r   r   r   r   r   r   r   r  versionbuild_numberfinalbuild_idhash_dependencies)r5  r   r   var_namer   folderrepo_dirr   hg_dirr   r   _xs               rF   r   r     so   
A/A2 F FGG  (??&nnS!44OHeeIh''E=MU     AhKMFX F F"&+"@KJJeF F F     ^^-r22FDK(&11H8V$$G(E""Fgs## I..!:!<!<!GHH&udk.FGGG ,27>>'** ,..!3447>>'"" 	9 B8AAtDIw7788G 	 1!16:: B  	H00 	HHH\'7DK4EFFGGG		!$(@	A	A ,bgnnG G , 	
"6**+++IIKKAjM||~~AmD--//00Anz "- " $
..00* -
!*iAlOHrH   c                  .   t           r]t          j        ddt          j                                                  \  } }|                     d                                          S 	 t          t          j	                              S # t          $ r Y dS w xY w)Nzsysctl -n hw.logicalcpuT)shellstdoutrg   r   )r0   rp   PopenPIPEcommunicaters   striprX   multiprocessing	cpu_countNotImplementedError)out_s     rF   get_cpu_countr]  K  s      !%T*/
 
 

+-- 	Q zz'""((***	022333" 	 	 	33	s   &B 
BBc                     |                      d          rdS | dv rdS |                      d          s|                     d          rdS | dk    rt          t          j                  S t          |           )	Nwinz.dll)osxdarwinz.dyliblinuxz-wasm32z.sonoarch)ry   endswithget_shlib_extrv   platformrZ  )host_platforms    rF   re  re  [  s    && 1v	+	+	+x		!	!'	*	* 1m.D.DY.O.O 1u	(	"	" S\***!-000rH   c                    t          | j        j                  dk    rdnd}d}t          |d          }| j        j                            d          \  }} |dt          |d                      |d	|            |d
t          |d                      |dt          |d                      |dt          |d                      |dd                    d|                                |                    dd          f                      |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/            |d0            |d1            |d2            |d3            |d4|d5z   |z              t          j	        
                                D ]C}t          j        d6|          r ||           #t          j        d7|          r ||           Dd8S )9LThis is setting variables on a dict that is part of the get_default function32i386amd64z19.0.0Library:SCRIPTSScriptsLIBRARY_PREFIXLIBRARY_BINbinLIBRARY_INCr\   LIBRARY_LIBlibCYGWIN_PREFIXrV   z
/cygdrive/r   rj   ALLUSERSPROFILEAPPDATACommonProgramFileszCommonProgramFiles(x86)CommonProgramW6432COMPUTERNAMEComSpec	HOMEDRIVEHOMEPATHLOCALAPPDATALOGONSERVERNUMBER_OF_PROCESSORSPATHEXTProgramDataProgramFileszProgramFiles(x86)ProgramW6432PROMPTPSModulePathPUBLICSystemDrive
SystemRootTEMPTMP
USERDOMAINUSERNAMEUSERPROFILEwindirPROCESSOR_ARCHITEW6432PROCESSOR_ARCHITECTUREPROCESSOR_IDENTIFIERBUILDz-pc-windows-zVS[0-9]{2,3}COMNTOOLSzVS[0-9]{4}INSTALLDIRN)rX   rE   r   r   r]   rC   r~   r  rk   rl   r   rematch)	r   get_defaultr   win_archwin_msvclibrary_prefixdrivetailr   s	            rF   windows_varsr  k  s    QX/00D88vvgHH&),,N(&,,S11KE4K	4	22333K .111KtNE::;;;KtNI>>???KtNE::;;;K,t||DRU?V?V!WXX   K!"""K	K$%%%K)***K$%%%KK	KK
KKK&'''K	KKK#$$$KKKKKKKKKK
KKK()))K()))K&'''KN2X=>>>Z__  8+Q// 	KNNNNX,a00 	KNNN	 rH   c                      |dd            |dt          |dd                      |dd            |d           d	S )
ri  HOMEUNKNOWNPKG_CONFIG_PATHrv  	pkgconfigCMAKE_GENERATORzUnix MakefilesSSL_CERT_FILEN)r   )r   r  r   s      rF   	unix_varsr    s]    K	"""K!4{#C#CDDDK!#3444K     rH   c                 b   t          | j        j                  dk    rd}d}n&t          | j        j                  dk    rd}d}nd}d}t          | j        j                  dk    rd}n"t          | j        j                  dk    rd}nd	} |d
|            |d|            |d|           dS )ri  rj  rk  g%@arm64g      &@x86_64zi386-apple-darwin13.4.0zarm64-apple-darwin20.0.0zx86_64-apple-darwin13.4.0OSX_ARCHMACOSX_DEPLOYMENT_TARGETr  N)rX   rE   r   arch)r   r  r   r  r  r  s         rF   osx_varsr    s    
18$&&#'  	QX	 	 G	+	+#'  #' 
18=T!!)	QX]		w	&	&*+ K
H%%%K*,DEEEKrH   c                  N    t          j                    t          j                    fS r.  )rf  machinearchitecturer   rH   rF   _machine_and_architecturer    s    x46666rH   c                 n   t                      \  }}|}|dk    r;|d         dk    r/t          d           t          d           t          d           d}|                    d          r|                    dd	          }|                    d	          s*|                    d
          s|                    d          rd}nd} |d            |d            |d            |d            |d            |d            |d            |d|dz               |d|dz   |z   dz              dS )ri  r  r   32bitzEWarning: You are running 32-bit Python on a 64-bit linux installationzE         but have not launched it via linux32. Various qeuries *will*zC         give unexpected results (uname -m, platform.machine() etc)i686ppcpowerpcaarch64s390xcos7cos6CFLAGSCXXFLAGSLDFLAGSQEMU_LD_PREFIX
QEMU_UNAMEDEJAGNUDISPLAYLD_RUN_PATHz/libr  z-conda_z
-linux-gnuN)r  printry   r  )r   r  r   platform_machineplatform_architecture
build_archbuild_distros          rF   
linux_varsr    s   .G.I.I++!J X"7":g"E"EUVVVUVVVSTTT
U## :''y99
i((  ++   ))
 
 KK
K	K !!!KK	K	Kv///Ki/,>MNNNNNrH   c                 p    t          j        |          }|s|                    ||          }|r|| |<   d S d S r.  )rk   r   rB   )out_dictr   rA   r   r   s        rF   set_from_os_or_variantr    sI    IcNNE *C))  rH   c                 V    t          j        dt                     t          ||          S )Nz`conda_build.environ.system_vars` is pending deprecation and will be removed in a future release. Please use `conda_build.environ.os_vars` instead.)rB  rC  PendingDeprecationWarningr   )env_dictr   r   s      rF   system_varsr    s1    M	L!  
 1frH   c                 R    t                      d fd	} |dt                                  |d            |d            |d           t           j        j                  d<   t
          j                                        d         d<    j        j        st           j        j
                  t          rt           ||           nt           ||            j        j        d	k    rt           ||           n! j        j        d
k    rt           ||           S )NrV   c                 <    t          | j        j        |          S r.  )r  rE   rA   )r   r   r   r   s     rF   <lambda>zos_vars.<locals>.<lambda>  s     *@	3 '+ + rH   	CPU_COUNTLANGLC_ALL	MAKEFLAGS	SHLIB_EXTPATHr`  rb  )rV   )r   r]  re  rE   rg  rk   rl   rm   activater3   r]   r1   r  r  r  r  )r   r   r  r   s   `  @rF   r   r      sA   A     K K]__---KKK"18#9::AkN
!!&)AfI8 6Q 455 *QV,,,,![&)))x&&K((((	
	7	*	*1k6***HrH   c                       e Zd ZdS )InvalidEnvironmentN)ro   
__module____qualname__r   rH   rF   r  r    s        DrH   r  c                 |    t          |           5 }t          j        |          }d d d            n# 1 swxY w Y   |S r.  )openjsonload)r{   finxs      rF   
_load_jsonr  $  sr    	d sIcNN              Hs   155c                     t          t          j        |                     \  }}}i }|D ]7}|                    d          r t	          t          ||                    ||<   8|S )zp
    Load all json files in a directory.  Return dictionary with filenames mapped to json
    dictionaries.
    z.json)nextr   walkrd  r  r   )r{   rootr\  filesresultfs         rF   _load_all_jsonr  *  sh    
 %*T**++ND!UF 2 2::g 	2"4a==11F1IMrH   c                        e Zd Zd Zd Zd ZdS )Environmentc                     || _         t          |d          | _        t          j                             |          r-t          j                             | j                  r	i | _        dS t          d|           )z
        Initialize an Environment object.

        To reflect changes in the underlying environment, a new Environment object should be
        created.
        z
conda-metazUnable to load environment N)r{   r   _metark   r}   	_packagesr  )selfr{   s     rF   __init__zEnvironment.__init__8  sm     	$--
7== 	K27==#<#< 	KDNNN$%I4%I%IJJJrH   c                 J    | j         st          | j                  | _         d S d S r.  )r  r  r  )r  s    rF   _read_package_jsonzEnvironment._read_package_jsonF  s+    ~ 	8+DJ77DNNN	8 	8rH   c                     |                                   | j                                        }g }|D ]7}|d         |d         |d         }}}|                    | d| d|            8|S )z<
        List all package specs in the environment.
        r  rG  r   )r  r  r   append)r  	json_objsspecsipr   bs          rF   package_specszEnvironment.package_specsJ  s     	!!!N))++	 	) 	)Ai9qz!qALLAA((((rH   N)ro   r  r  r  r  r  r   rH   rF   r  r  7  sD        K K K8 8 8
 
 
 
 
rH   r    rS   c                 	   i }t          j        t                    }t          j        }t          |          }|r|                    t                     |s|rt          j	        }|rt          j
        }nt           j        }t          D ]\  }}|r|                    d|z              t          |          }t          |t          |          d         ||||||	          \  }}}t!          d |D                       }|||||
ft"          v rDt$          |k    r9t"          |||||
f                                         }t(          |v r
| |t(          <   nY|rVt          j        |          5   |            5  	 t-          | ||          }nz# t.          t0          f$ r}t3          ||          d }~wt4          t6          t8          t2          t:          t<          t>          f$ r"}dtA          |          v r%|!                    dtA          |                     n[dtA          |          v s'd	tA          |          v stE          |t<                    r#t          j#        |||	          }t          j$        ||	
          5  tA          |          }d}tJ          j&        '                    |          tP          vrV|dk     rPtJ          j&        '                    |          }|dz  }tJ          j&        '                    |          tP          vr|dk     P|!                    d|           |tP          v r3tJ          j&        )                    |          rt          j*        |           d d d            n# 1 swxY w Y   ||k     rk|!                    dtA          |                     tW          | t!          |          ||dz   ||||t!          |          |	|
||t!          |                    }n|,                    d            Y d }~nd }~ww xY wd d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |
rAdD ]>t[          fd|D                       s!fd|t\                   D             |t\          <   ?t          j/        |           |                                t"          |||||
f<   |a|0                    t\          g           S )Nz%s@r   )output_folderchannel_urlsr   verboselockingtimeoutc              3      K   | ]:}t          |                              d           $t          j        |          V  ;dS )@N)rX   rd  r   ensure_valid_specr   specs     rF   r   z&get_package_records.<locals>.<genexpr>  s[        *.s4yy?Q?QRU?V?V%%     rH   subdirlockz;failed to get install actions, retrying.  exception was: %s requires a minimum conda versionlink a source that does notr     r   zYI think conda ended up with a partial extraction for %s. Removing the folder and retrying)retriesr  r  r   r  bldpkgs_dirsr  disable_pipmax_env_retryr  r  z4Failed to get install actions, max retries exceeded.)pip
setuptoolswheelc              3   b   K   | ])}t          j        d z  t          |                    V  *dS )z^%s(?:$|[\s=].*)N)r  r  rX   )r   deppkgs     rF   r   z&get_package_records.<locals>.<genexpr>  sL        FIBH036CAA     rH   c                 *    g | ]}|j         k    |S r   r  )r   precr  s     rF   r
  z'get_package_records.<locals>.<listcomp>  s,     , , ,!%cAQAQAQAQAQrH   )1r   rn   ro   loggingWARNlistextendr!   
contextlibnullcontextDEBUGcapturer*   r  r.   r+   tuplecached_actionslast_index_tsrm   PREFIX_ACTIONLoggingContext_install_actionsr   r   r)   
SystemExitr   r   r   AssertionErrorr(   rX   rC  rt   get_conda_operation_lockstry_acquire_locksrk   r{   r   r#   r}   rm_rfget_install_actionsr   r   LINK_ACTIONtrim_empty_keysrB   )r   r  re   r  r  r  r   r  r  r  r  r  r  r  actionsrc   conda_log_levelr&  featurer   indexindex_tsr\  exclockspkg_dirrM  r  s                              @rF   get_package_recordsr=  [  sD   $ G

8
$
$ClOKKE .,---  %  ( 	,%mO-& * * 	*LL)))|,,L(\1#!	 	 	E8Q   27    E
 	 
  *X55 %flK!PQVVXXG##%+GM"	 V! !/22 E	 E	 D DC.vueDDGG,.@A K K K6s6JJJJ 0"" ? ? ? S))YHH   
 ;c#hhFF8CHHDD%c>:: E !& ?#\7! ! #4UGLLL 5 5&)#hhG%&F " 8 8	 I I$*RKK*,'//'*B*B &!	 !# 8 8	 I I$*RKK  HH!C '  
  ')33g8N8N3 %G 4 4 45 5 5 5 5 5 5 5 5 5 5 5 5 5 5  ..YHH   #6"!%LL$+aK#)$+"'$+).|)<)<$+(3*7*7).|)<)<# # #" 		R   )  W?D D D D D D D D D D D D D D DE	 E	 E	 E	 E	 E	 E	 E	 E	 E	 E	 E	 E	 E	 E	L  		5       MR     , , , ,)0)=, , ,GK( 	g&&&JQ,,..sFL+FG ;;{B'''s   %P"0P2FPO<F''3O<BO74C M 	O7 M$$O7'M$(B
O72P7O<<P?P"P	P"P	P""P&)P&z24.1.0z24.3.0z"Use `get_package_records` instead.)addendumc                 \    t          | |||||||||	|
|||          }t          | t          |iS )N)r   r  re   r  r  r  r   r  r  r  r  r  r  r  )r=  r*  r3  )r   r  re   r  r  r  r   r  r  r  r  r  r  r  precss                  rF   r2  r2    sS    "  !##!  E  6;66rH   specs_or_actionsspecs_or_precs)renamec
                    |j         rt          j        t          j                  }
nt          j        t          j                  }
t          j                            |           rDt          t          j        
                    | d                    D ]}t          j        |           |
5  t          j        t                    }|r+|                     d|            |                     t          |                     |st          j        |          }	 t          j        ||j                  5  t%          |d          st'          |d         t(                    st+          t-          |                    }t/          | t1          |          |||j        |j         |j        t1          |j                  |j        |j        |j        |j        t1          |j                            }nt%          |d          s
t@          |i}n|}tC          ||j"        |j        |j        |j         |j        |j        |j                  \  }}}t          j#        |           tI          | |           t          j%        r@t          j&        '                                D ]!\  }}t          |          t          j&        |<   "tQ          d|j         tR                    5  tQ          d	|j         tR                    5  tU          | |           d
d
d
           n# 1 swxY w Y   d
d
d
           n# 1 swxY w Y   d
d
d
           n# 1 swxY w Y   n# tV          tX          tZ          t\          t^          t`          f$ r}dt          |          v s7tc          j2        dt          |                    st'          |tX                    r|j3        dk    r|j4        r|5                    d|j3                   |5                    d           |5                    t          |                     |5                    d           |5                    d           |5                    d           d|_3        d| v }|r|j6        n|j7        } | |tp          <   ts          | ||||||           n dt          |          v rJ||j        k     r=|5                    dt          |                     ts          | ||||||dz   |           ndt          |          v sdt          |          v rht          j        ||j                  5  t          |          }d}t          j        :                    |          tv          vrV|dk     rPt          j        :                    |          }|dz  }t          j        :                    |          tv          vr|dk     P|5                    d|           t          j        <                    |          rt          j        |           d
d
d
           n# 1 swxY w Y   ||j        k     r>|5                    dt          |                     ts          | ||||||dz   |           n|=                    d             Y d
}~nmd
}~wt|          t~          t          t          t          f$ rC}t'          |t|                    rt          j        ||j                  5  t          j        :                    t          j        :                    t          |                              }|5                    d|           t          j        <                    |          rt          j        |           d
d
d
           n# 1 swxY w Y   ||j        k     r>|5                    dt          |                     ts          | ||||||dz   |           n|=                    d            Y d
}~nd
}~ww xY wd
d
d
           d
S # 1 swxY w Y   d
S )zD
    Create a conda envrionment for the given prefix and specs.
    *zCreating environment in %sr  r   r   )
r  r  r   r  r  r  r  r  r  r  )r  bldpkgs_dirr  r  r   r  r  r  CONDA_QUIET
CONDA_JSONNztoo short inz-post-link failed for: (?:[a-zA-Z]*::)?opensslP   z)Build prefix failed with prefix length %dzError was: zYOne or more of your package dependencies needs to be rebuilt with a longer prefix length.z6Falling back to legacy prefix length of 80 characters.z<Your package will not install into prefixes > 80 characters._h_env)rE   r  re   clear_cacher  r  z2failed to create env, retrying.  exception was: %sr   )rE   r  re   rK  retryr  r  r  r  zZI think conda ended up with a partial extraction for %s.  Removing the folder and retryingz+Failed to create env, max retries exceeded.)Cr   r   r+  r  r%  r   rk   r{   r|   r   r   r1  rn   ro   rX   r/  r0  r  rN   rt   r   r!  setr2  r'  r  r  r  r  r  r  r  r3  r+   rF  r4  _display_actionsr1   rl   r   r/   r$   _execute_actionsr-  r   r   r)   r   r(   r  searchprefix_lengthprefix_length_fallbackrC  r]   r   r*  
create_envr   r#   r}   r   r.  OSError
ValueErrorRuntimeErrorr   )r   rB  re   rE   r  rK  rL  r;  r  is_condaexternal_logger_contextentryrc   r  r5  r8  r\  r   r   r:  r  r<  rM  s                          rF   rS  rS    s	     | E"'"6w}"E"E"'"6w|"D"D	w~~f "',,vs3344 	 	EK	  D Dx((
  ~	II2F;;;IIc.))*** @7??x,UFNKKK ,> ,>  775%nQ&7GG5 !%S%8%8 9 9"5"!%LL#)$*N"(,$*N).v/B)C)C$*N(.(:*0*>*0*>).v/B)C)C# # #   '~v>> 5'2N&CGG&4G"1%$*$6&,&:%+%8$l & & &	# 	# 	#KE1a )'222$VW555| 3$&J$4$4$6$6 3 3DAq,/FFBJqMM FN0BMRR > >$\v~3E}UU > >,VW===> > > > > > > > > > > > > > >> > > > > > > > > > > > > > >U,> ,> ,> ,> ,> ,> ,> ,> ,> ,> ,> ,> ,> ,> ,>\ , f f f #c#hh..yGS  / "#|44	 /
 *R//4 #G"0   ///S***;   T   Z   02,'61 8<!T!3!3AT17.""##)#) #(3%-     s3xx''v333PHH   #"*#)#) #(3"'!)%-	 	 	 	 83< <  2c#hh>>0OOO 1 1"%c((!" goog66iGGFUWKK&(goog&>&>G"aKF !goog66iGGFUWKK ?#  
 7==11 1!K0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 v333PHH   #"*#)#) #(3"'!)%-	 	 	 	 	 		"OPPP  ! ! ! c>22 	10OOO 1 1"$'//"'//#c((2K2K"L"L?#  
 7==11 1!K0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 6///HHLcRUhh   &%%$/#ai!)	 	 	 	 	 IIKLLL	 	 	 	 	+!GD D D D D D D D D D D D D D D D D Ds	  *A+_?M1FL8L!-L
	>L!
LL!LL!L8!L%%L8(L%)L8,M8L<	<M?L<	 M_?*_//GZ1CXZXZXA#Z?_?'_/,0_*B];/_*;]??_*]?A"_*%_?*_//_??``c                      fd| D             S )Nc                 F    g | ]}t          j        |j                   S )r  )r   get_lockr  )r   rM  rE   s     rF   r
  z&get_pkg_dirs_locks.<locals>.<listcomp>  s*    NNNvEN66>:::NNNrH   r   )dirsrE   s    `rF   get_pkg_dirs_locksr^    s    NNNNNNNNrH   distrE   returnc                     t          j        |j        rt          j        nt          j                  5  t          |j        gt          z   |          }t          j	        ||j
                  5  t          D ]t           fddgt          R D                       rwt                              d            t                              d           t          j        g          }|                               D ]}|                    |           	 d d d            n# 1 swxY w Y   t%          t           g|           d d d            d S # 1 swxY w Y   d S )Nr  c              3      K   | ]E}t           j                            t           j                             |                     V  Fd S r.  )rk   r{   r|   r   )r   extr_  pkgs_dirs     rF   r   z"clean_pkg_cache.<locals>.<genexpr>  s]         GNN27<<T.3..#I#IJJ     rH   rV   z>Conda caching error: %s package remains in cache after removalzmanually removing to compensate)r   r+  r   r  r%  r   r^  rF  r#   r0  r  r   r	   rc   r   first_writablequeryremoveremove_existing_packages)r_  rE   r;  package_cachecache_pkg_idrd  s   `    @rF   clean_pkg_cacherk    s   		v|Mgmm	N	N < <"F$6#7)#CVLL$UFNCCC 	; 	;% ; ;      ">%=>>     ; IIX   II?@@@$4$CXJ$O$OM(5(;(;D(A(A ; ;%,,\::::;	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;" 	!TFF;;;'< < < < < < < < < < < < < < < < < <s6   :E.B'D"E"D&	&E)D&	*EEEc           
         |j         rt          | |          ng }t          j        ||j                  5  | D ]r}|D ]m}|g}t
          j                            |          s0t          t
          j        	                    ||dz                       }|D ]}t          j
        |           ns	 d d d            d S # 1 swxY w Y   d S )Nr  rE  )r  r^  r   r0  r  rk   r{   isabsr   r   r1  )r]  fnsrE   r;  rM  fn	all_filesrY  s           rF   rh  rh    s(   06FtV,,,BE		 	?	?	? ' ' 	' 	'F ' 'D	w}}R(( E $RW\\&"s(%C%C D DI& ' 'EK&&&&'	'	'' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   A6B99B= B=c                    t          d          5 }t          |t          |                     |                    || j        j        | j        j        | j        j        | j        j        t          | j        j	                  | j        j
        | j        j        | j        j        | j        j        t          | j        j                            }d d d            n# 1 swxY w Y   d |                    t           g           D             }|S )Nr\  )r   )
r  r   r  r  r  r  r  r  r  r  c                 ,    g | ]}t          |          S r   )r2   r   r  s     rF   r
  z#get_pinned_deps.<locals>.<listcomp>.  s.       04%d++  rH   )r   r2  r'  r  rE   target_subdirr   r  r  r  r  r  r  r  r  rB   r3  )r   sectiontmpdirr5  runtime_depss        rF   get_pinned_depsrx    s*   	3	'	'	' 
6%!,,w''((8)(.H$H$qx455H$,(0(0qx455
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
  8?KQS8T8T  L s   B;CCCc                     t          dddt                    5  t          rt          t                    }t	          t
                              d |D                                 }t	          t
                              d d |D             D                                 pt          j        }nd x}}t	          d |D                       }t          j
                                         t          j                                        } || |||	          }|r|                                |_        |                    d
d
          }|j        |          }	t$          | t&          d |	j        D             i}
|
cd d d            S # 1 swxY w Y   d S )Ntruefalse)CONDA_ALLOW_NON_CHANNEL_URLSCONDA_SOLVER_IGNORE_TIMESTAMPS)callbackc              3   4   K   | ]}t          |          V  d S r.  )r   )r   urls     rF   r   z"install_actions.<locals>.<genexpr>G  s(      KKsgcllKKKKKKrH   c              3      K   | ]}||V  	d S r.  r   )r   r  s     rF   r   z"install_actions.<locals>.<genexpr>K  s;       " "#)V"" " " " " "rH   c              3   $   K   | ]}|j         V  d S r.  r  )r   cs     rF   r   z"install_actions.<locals>.<genexpr>L  s$      -I-I1ah-I-I-I-I-I-IrH   c              3   4   K   | ]}t          |          V  d S r.  )r   r	  s     rF   r   z"install_actions.<locals>.<genexpr>T  s(      88$ioo888888rH   )specs_to_addF)pruneignore_pinnedc                     g | ]}|S r   r   rs  s     rF   r
  z#install_actions.<locals>.<listcomp>c  s    CCC4$CCCrH   )r   r$   r   r   r'  r   fromkeysr    subdirsr   _cache_clearplugin_managerget_cached_solver_backendrm   _indexsolve_for_transactionprefix_setupsr*  r3  
link_precs)r   r8  r  channel_priority_mapchannelsr  solver_backendsolvertxnprefix_setupr5  s              rF   install_actionsr  7  s    
,2.5	
 	
 
 
 
 * *  	&#67H#I#I KK6JKKKKK H MM " "-I-I-I-I-I" " "    #
 ? G "&%Hw88%88888  """ /IIKK'NNN 	) "JJLLFM**e*LL(06CC<+BCCC
 U* * * * * * * * * * * * * * * * * *s   EFF
Fc                 P   | sJ t           |vr%t                              dt            d           d S |t                    }|s%t                              dt            d           d S d |D             d |D             z   }t          |          }|                                 t          | d|dg d          }t          |          }t                              dd|           |                                 t                              dd	|           |                                 d S )
Nzaction z not in actionsz has None valuec                 (    g | ]}|j         d k    |S menuinstr  r   r  s     rF   r
  z$_execute_actions.<locals>.<listcomp>}  s$    @@@16Z+?+?!+?+?+?rH   c                 (    g | ]}|j         d k    |S r  r  r  s     rF   r
  z$_execute_actions.<locals>.<listcomp>}  s.     D D D:!5!5!5!5!5rH   r   z %s(%r)PROGRESSIVEFETCHEXTRACTUNLINKLINKTRANSACTION)r3  rc   r   r   preparer   r   execute)r   r5  r  progressive_fetch_extractstpunlink_link_transactions         rF   rO  rO  l  sM    MMM'!!		8K888999%J 		8K888999 A@Z@@@ D DD D D J !8
 C C%%'''
fb*b"b
9
9C3C88IIi24MNNN%%'''IIi02IJJJ##%%%%%rH   c                    ddg}| r-|                     d| z             |                     d           t          d                    |                     t          j        d }fd}t          d           t          d           t          d	           |                    t          g           D ]|}t          |t                    sJ |d
         } | ||                    |<   |d         dz   |d         z   |<   d                    |                    d          pd          |<   }i }rt          d D                       dz   }t          d                                 D                       }	t          d                                 D                       }
t          d                                 D                       }D ]>}d| d|	 d||<   |r||xx         d|z  z  cc<   |         r||xx         d|
z  z  cc<   ?dfd}r@t          d           t                    D ]!}t           |||         |                     "t                       d S )NrV   z## Package Plan ##
z  environment location: %sri   c                    |                      d          r| d         S |                      d          rt          | d                   j        S |                      d          rt          | d                   j        S t          S )Nschannelr  channel)rB   r   canonical_namer   )recs    rF   channel_strz%_display_actions.<locals>.channel_str  sv    77: 	#z?"775>> 	63u:&&55779 	:3y>**99rH   c                 2    du rdS | t           k    rdS | S )NFrV   )r
   )sshow_channel_urlss    rF   channel_filtz&_display_actions.<locals>.channel_filt  s.    %%2$.C)C)C2rH   c                      dS NrV   r   r   rH   rF   r  z"_display_actions.<locals>.<lambda>      2 rH   c                      dS r  r   r   rH   rF   r  z"_display_actions.<locals>.<lambda>  r  rH   c                      dS r  r   r   rH   rF   r  z"_display_actions.<locals>.<lambda>  r  rH   r  rG  r   r  ,featuresr   c              3   4   K   | ]}t          |          V  d S r.  r   r  s     rF   r   z#_display_actions.<locals>.<genexpr>  s(      ..SVV......rH   r   c              3   4   K   | ]}t          |          V  d S r.  r  r  s     rF   r   z#_display_actions.<locals>.<genexpr>  s(      77SVV777777rH   c              3   4   K   | ]}t          |          V  d S r.  r  r  s     rF   r   z#_display_actions.<locals>.<genexpr>  (      <<Q#a&&<<<<<<rH   c              3   4   K   | ]}t          |          V  d S r.  r  r  s     rF   r   z#_display_actions.<locals>.<genexpr>  r  rH   z{pkg:<z	} {vers:<}z {channel:<%s}z [{features:<%s}]z    c                 f    |                      |dz   |         |         |                   z   S )Nrn  )r  versr  r  )r   )r  r  r  r  leadpackagess     rF   r   z _display_actions.<locals>.format  sA    ahhc	#SMc]	  
 
 
 	
rH   z/
The following NEW packages will be INSTALLED:
)r  r  r   r    r  r   rB   r3  rt   r   maxr   sorted)r   r5  builderr  r  r  r  fmtmaxpkgmaxvermaxfeaturesmaxchannelsr   r  r  r  r  r  s                @@@@@rF   rN  rN    s    )*G 3f<===r	$))G

1       ::&&H::&&H::&&HK,, = =$.....6l$[[%6%677Y#-W=*!5!5!;<<
C >..X.....277X__%6%677777<<(//*;*;<<<<<<<(//*;*;<<<<< 	> 	>C ?>>F>>>CH ;C,{::} >C/+==D
 
 
 
 
 
 
 
  )ABBB(## 	) 	)C&&S3''((((	GGGGGrH   )Fr`   )NTFFN)F)r   NTFTNr  FrS   NN)Tr   NFF)r#  r  r  rX  rk   rf  r  rp   rv   rB  collectionsr   	functoolsr   r   r   os.pathr   r   conda.base.constantsr	   r
   r   conda.common.ior   conda.core.indexr   conda.core.linkr   r   conda.core.package_cache_datar   conda.core.prefix_datar   conda.models.channelr   rV   r   conda_interfacer   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   rE   r&   deprecationsr'   
exceptionsr(   r)   r  r*   r8  r+   r  r,   os_utilsr-   r.   r/   r0   r1   r2   r3   variantsr4   ro   rc   r*  r3  r   r2  rG   rK   rP   rT   rZ   r^   r   r   r   r   r   r   r   r   r   r   r]  re  r  r  r  r  r  r  r  r   	Exceptionr  r  r  r  r(  r)  r=  r2  argumentrS  r^  rX   rk  rh  rx  r  r,  rO  rN  r   rH   rF   <module>r     sm             				  				     



  # # # # # #                   " " " " " " " "         
 % $ $ $ $ $ . . . . . . > > > > > > > > : : : : : : - - - - - - 4 4 4 4 4 4                                           &       $ $ $ $ $ $ D D D D D D D D " " " " " " " " " " " "                            * ) ) ) ) )i 4	-
    ' ' '  	. 	. 	./ / / 4PVU U U UpU U Up  > # # # #L  D% % %P  ,  0  2I IH I I I IX 4  1 1 1 5 5 5p! ! !     4 47 7 7"O "O "OJ      <	 	 	 	 	 	 	 	  
 
 
       @  
S( S( S( S(l Hh)MNNN
 
 7  7  7 ON 7F Xx);DTUUU 

\ \ \ VU\~O O O<# <v <$ < < < <.
' 
' 
'  4. . .b # & & &BD D D D DrH   