
    xhe$                       d dl m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mZ d dlmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlZddlmZmZmZmZ dd	l m!Z!m"Z"m#Z#m$Z$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/ ddlm0Z0m1Z1m2Z2 ddl3m4Z4m5Z5m6Z6 d Z7 ej8        e9ej:        j;        j<                    ej8        e=ej:        j;        j<                    ej8        ee7           d Z> e(dd          d             Z?d Z@	 	 	 d>d?dZAd ZBd ZCd ZD	 d@dAd%ZE ed&          d'             ZF e(jG        ddd(d)*          dBd+            ZH e(jG        ddd(d)*          d?d,            ZId?d-ZJd?d.ZKd/ ZL	 	 dBd?d0ZMd@d1ZNd2 ZO	 	 	 dCd3ZPd4 ZQ	 	 	 	 	 dDd5ZRg d6ZS G d7 d8eT          ZUd9 ZVd: ZW G d; d<ejX                  ZY ej8        eUeV            ej8        eZeW           dZ[dBd=Z\dS )E    )annotationsN)OrderedDictdefaultdict)	lru_cache)abspathdirnameisabsisdirisfilejoinnormpath)Path   )environ
exceptionssourceutils)PackageRecordProgressiveFetchExtractTemporaryDirectoryUnsatisfiableError	pkgs_dirsspecs_from_url)
deprecatedLINK_ACTION)DependencyNeedsBuildingError)get_build_index)MetaData&combine_top_level_metadata_with_output)CONDA_PACKAGE_EXTENSION_V1CONDA_PACKAGE_EXTENSION_V2package_record_to_requirement)filter_by_key_valueget_package_variantslist_of_dicts_to_dict_of_listsc                P    |                      |                                          S N)represent_dictitemsdumperdatas     2lib/python3.11/site-packages/conda_build/render.pyodict_representerr/   7   s      ...    c                   | j         s| j        rdn| j        j        }t	          | d          s| j        j        dk    rd}n
d}n| j        }|dk    r7t          | j        j        || 	                                 t                     }nv|dk    r7t          | j        j        || 	                                 t                     }n9| j         d|                                  dt          | j        j        |           }|S )zI
    Returns path to built package's tarball given its ``Metadata``.
    noarchtype2conda_v2condaz
 file for z in: )r2   noarch_pythonconfighost_subdirhasattrconda_pkg_formatr3   r   output_folderdistr!   r"   name)msubdirpkg_typepaths       r.   bldpkg_pathrC   @   s    NQ_NXX!(:NF1f 8$++!HHHH6 7H"Fqvvxx,U9S,U,U
 
 
Z		H"Fqvvxx,U9S,U,U
 

 vVVVVQX5KV0T0TVV 	 Kr0   z24.1.0z24.3.0c                F    t           | v rd | t                    D             S g S )Nc                ,    g | ]}t          |          S  r#   .0precs     r.   
<listcomp>z#actions_to_pins.<locals>.<listcomp>a   s!    UUU-d33UUUr0   r   )actionss    r.   actions_to_pinsrM   ^   s+    gUU@TUUUUIr0   c           	     2   g }g }g }t          j        d          }|D ]u}|r|                    |          s0d}	|                                d         }
|                     d          D ][}|                    d          }||
k    r>|                    d                    ||                                 f                     d}	\|	s|                    |           |	                                D ]u\  }}|
                    d|          |
                    d|
          k    rBt          j        d	|
z  |          s*|                    d                    |
|f                     vK|                    |          r|                    |           w|||fS )
Nz[-_]Fr   outputsr>    T z%s\s+[0-9a-zA-Z\_\.\<\>\=\*])recompilematchsplitget_sectiongetappendr   versionr*   subsearch)r?   specsexclude_patternvariantsubpackagesdependenciespass_through_depsdash_or_underspecis_subpackage	spec_nameentryr>   keyvalues                  r.   _categorize_depsri   e   s   KLJv&&M + + 	+o&;&;D&A&A 	+!M

QIy11 ) )yy((9$$&&sxxqyy{{0C'D'DEEE$(M  *##D)))%mmoo F F
U $$R--1B1B	2 2  )$Ci$OQUVV !'')U1C(D(DEEEF ""4(( 	+$$T***&777r0   FTr?   r   c                   |                      |          }|dv r{g }|D ]t}d|v rY|                                d         }	|                    d                    |	|                    |	d          f                     _|                    |           u|}t          | |||          \  }
}}t          |          }d }d                    d t          d          D                       }t          d|	          5 }	 t          j
        |t          |          |t          | j        | d
          | j        j        | j        j        | j        j        t          | j        j                  | j        j        | j        j        | j        j        | j        j        t          | j        j                            }nV# t.          t0          f$ rB}t3          |d          rd                    |j                  }n|j        }|ri }n Y d }~nd }~ww xY wd d d            n# 1 swxY w Y   d |                    t8          g           D             }t;          j        ||
z   |z   p|                     d| g                     ||fS )N)buildhostz x.xr   rP   rQ   c              3  l   K   | ]/}t          j        t          j        t          j        z             V  0d S r(   )randomchoicestringascii_uppercasedigits)rI   _s     r.   	<genexpr>z'get_env_dependencies.<locals>.<genexpr>   sG        BCf,v}<==     r0   
   rs   )prefixsuffix_subdir)
r@   debugverboselockingbldpkgs_dirstimeoutdisable_pipmax_env_retryr<   channel_urlspackagesz, c                ,    g | ]}t          |          S rF   rG   rH   s     r.   rK   z(get_env_dependencies.<locals>.<listcomp>   s.       04%d++  r0   requirements/) get_depends_top_and_outrU   rX   r   rW   ri   setranger   r   get_install_actionstuplegetattrr8   ry   rz   r{   r|   r}   r~   r   r<   r   r   r   r:   r   messager   r   ensure_list	get_value)r?   envr^   r]   permit_unsatisfiable_variants!merge_build_host_on_same_platformr\   no_xx_specsrc   pkg_namer_   r`   ra   unsatrandom_stringtmpdirrL   es                     r.   get_env_dependenciesr      s     %%c**E
 	) 	)D~~::<<?""388Xw{{8R7P7P,Q#R#RSSSS""4((((3C	5/74 40K0 |$$LEGG  GLRyy    M 
3}	=	=	= 	1l##qxC99hn(("18#899(H0h4h4"18#899  GG #$@A 		 		 		q*%% "		!*--	,  		#              8 8?KQS8T8T  E 	[ #44 6{{0300"55	
 	
 	 s=   9H;B8F43H4H8H=HHHHHc                    t          | d          r|                                 } d| v r|                     d          d         } | S )Ndecode:z::)r:   r   rU   )spec_strs    r.   strip_channelr      sG    x"" %??$$
h>>$''+Or0   c                ^   |                                 }|d         }d}t          |          dk    r|d         }d }|                    |          p| j        j                            |          }|r|| j        j                            di           v r|dk    r| j        st| j        sm||v ri| j        j        d         |         }t          |t                    rt          ||          }t          j        |                                 d         fi |}nl|                    d          rWd	|v rS|                    |          st          d
          t          j        |                                 d         d	d	          }|r*d                    |||f                                          }|S )Nr   rQ         pin_run_as_buildpythonmin_pinmax_pinnumpyx.xz9numpy x.x specified, but numpy not in build requirements.rP   )rU   lenrW   r8   r^   r2   r7   
isinstancestrdictr   apply_pin_expressions
startswith
ValueErrorr   strip)	r?   depbuild_dep_versions	dep_splitdep_namerk   pinrY   pin_cfgs	            r.   get_pin_from_buildr      s   		I|HE
9~~!
C $$X..P!(2B2F2Fx2P2PG
(,,-?DDDDX%%18%q%***("#56x@gs## 	=7G<<<G)'--//!*<HHHH		 	  
Uc\\!%%h// 	K   )MMOOAu
 
 
  7hh#u-..4466Jr0   c                   i }|                                  D ]f\  }}|D ]^t          d          r                                t          fd|D                       s|                    |g           gz   ||<   _g|S )Nr   c              3  `   K   | ](}|d k    p|k    p                     |dz             V  )dS )*rP   N)r   )rI   ignore_specrc   s     r.   rt   z&_filter_run_exports.<locals>.<genexpr>   sd          	  3& :{*:{S'899	     r0   )r*   r:   r   anyrW   )r\   ignore_listfiltered_specsagent
specs_listrc   s        @r.   _filter_run_exportsr      s    N"[[]] O Oz 	O 	ODtX&& %{{}}     $/     O )7(:(:5"(E(E(Nu%	O r0   distributionr   
files_onlyboolreturn
str | Nonec                   t          t          g t          |j        j        R           D ]M}|| t
          z   z  }|                                rt          |          c S || z  }|                                r|st          |          c S 	 t          j
        |dz  dz                                            d         }n## t          t          f$ r |j        j        }Y nw xY wt          |j        j        || t
          z             }t!          j        |d          5 }|                                D ]}|                    ||j                   	 d d d            n# 1 swxY w Y   t          |          c S Od S )Ninfoz
index.jsonr@   zw:bz2)arcname)mapr   r   r8   r|   r!   is_filer   is_dirjsonloads	read_textFileNotFoundErrorKeyErrorr9   croottarfileopeniterdiraddr>   )	r   r?   r   cachepackage	directoryr@   archiverf   s	            r.   !find_pkg_dir_or_file_in_pkgs_dirsr     s    T?Y?)>??@@    <*DDE?? 	 w<<L(	 	  &9~~%%%.Y%7,%F$Q$Q$S$STT &x0 . . .-. 7Q(Q G gw// ;7&..00 ; ;EKKuzK::::;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; w<<)	    s$   2B??CC4EE	"E	)maxsizec                \   i }| rt          |           rt          | d          }t          |          rHt          |          5 }dd |                                D             i}d d d            n# 1 swxY w Y   nt          |dz             r?t          |dz             5 }t          j        |          }d d d            n# 1 swxY w Y   nPt          |dz             r>t          |dz             5 }t          j        |          }d d d            n# 1 swxY w Y   |s| rt          |           rxt          j
        | d          }t          j
        | d          }t          |d          r|                    d	          }|rt          j        |          }n|rt          j        |          }nt          j
        | d          }|rt                      }t          |d          r|                    d	          }|                                D ]}}	t          |	d          r|	                    d	          }	|	                    |                    d
d          d                   s'|                    |	                                           ~dt)          t+          |                    i}|S )Nzinfo/run_exportsweakc                6    g | ]}|                                 S rF   )rstriprI   rc   s     r.   rK   z,_read_specs_from_package.<locals>.<listcomp>)  s     !J!J!JD$++--!J!J!Jr0   .yamlz.jsonzinfo/run_exports.yamlzinfo/run_exports.jsonr   zutf-8-r   r   )r
   r   r   r   	readlinesyaml	safe_loadr   loadr   package_has_filer:   r   r   r   
splitlinesr   rsplitr   r   sortedlist)
pkg_locpkg_distr\   downstream_filef
specs_yaml
specs_jsonlegacy_specs
weak_specsrc   s
             r.   _read_specs_from_packager   "  s`   E %5>> %w(:;;/"" 		%o&& L!!J!JAKKMM!J!J!JKL L L L L L L L L L L L L L L Og-.. 	%o/00 *Aq))* * * * * * * * * * * * * * *Og-.. 	%o/00 %A	!% % % % % % % % % % % % % % % ;W ; ;+G5LMM
+G5LMM
:x(( 	4#**733J 	;Jz**EE 	;N:..EE 1';MNNL 	; UU
8X.. 8'w77H(3355 6 6DtX.. 4#{{733??8??3+B+B1+EFF 6"t{{}}555Z(8(8!9!9:Ls6   !A11A58A5!CC	C2DDDrL   precs)renamec                ~   t          | j        | d          }t          || j        j        | j        j        dd| j        j        | j        j        | j        j        | j        j        | j        j	        
  
        \  }}}i }t          |d          r|                    t          g           }t          |t                    r|g}nt          j        |          }t#                      }	|ry|D ]t}
t          |
t                    r|
|v r|	                               3|
                                d         }|D ]$}||j        k    r|	                    |            n%u|	}|D ]ڊd                    j        j        j        f          }t1          || |          }|sfd|D             d         }t3          |f	          }t          j                    5  |                                 d d d            n# 1 swxY w Y   t8          D ]*}t+          |j                  }t=          |          r|} n+||f|<   |S )
Nrx   F)
r@   bldpkgs_dirr<   clear_cacheomit_defaultsr   ry   rz   r{   r}   keysr   r   )r   c                h    g | ].}|j         |j        |j        fj         j        j        fk    ,|/S rF   )r>   rY   rk   )rI   recrJ   s     r.   rK   z,execute_download_actions.<locals>.<listcomp>  sS       Hck395It|TZ89 9 9 9 9r0   )
link_prefs)r   r8   r   r   r<   r   ry   rz   r{   r}   r:   rW   r   r   r   r   r   r   r   rU   r>   r   rY   rk   r   r   LoggingContextexecuter   fnr   )r?   r   r   package_subsetrequire_filesr@   indexrs   	pkg_filesselected_packagespkgr   	link_precr   r   pfepkg_dir_locrJ   s                     @r.   execute_download_actionsr  L  s   QX#//F!H(h,X*hn     KE1a2 Iuf +		+r**.-00 ;()*>:: "! 
	 
	C#}-- 	5==%))$///99;;q>!&  I9>11)--i888 2 " , ,88TYdjABB3aM
 
 
  	      
 I *i\BBBC%''                $  GTW--$<< "GE "8+	$s   G88G<	?G<	c                R   |                      d| g           }|rd |D             ng t          |d          r|                    t          g           }fd|D             }t	          j        |                      d                    }t	          j        |                      d                    }i }|D ]t          fd|D                       rd}| j        j        rmt	          j	        j
                  }d	|v rP|d	                             j        i           }	|	                    d
i                               j        i           }|-t          | ||g                   \  }
}t          |
|          }t          ||          }|rt	          j        ||          }|S )zDownload packages from specs, then inspect each downloaded package for additional
    downstream dependency specs.  Return these additional specs.r   c                D    g | ]}|                     d           d         S )rP   r   rU   )rI   reqs     r.   rK   z%get_upstream_pins.<locals>.<listcomp>  s'    ===CciinnQ'===r0   r   c                &    g | ]}|j         v |S rF   r>   )rI   rJ   explicit_specss     r.   rK   z%get_upstream_pins.<locals>.<listcomp>  s%    CCCdtyN'B'BT'B'B'Br0   zbuild/ignore_run_exports_fromzbuild/ignore_run_exportsc              3  \   K   | ]&}j         |                    d           d         v V  'dS )rP   r   N)r>   rU   )rI   r  rJ   s     r.   rt   z$get_upstream_pins.<locals>.<genexpr>  s9      JJ#tyCIIcNN1--JJJJJJr0   Nr   run_exports)r   r  )r   r:   rW   r   r   r   r   r8   use_channeldatadownload_channeldatachannelr>   rY   r  r   r   merge_dicts_of_lists)r?   r   r   	env_specsignore_pkgs_listr   additional_specsr  channeldatapkg_datalocr=   r\   r  rJ   s                @@r.   get_upstream_pinsr    s    1C11266IAJR==9====PRNuf +		+r**CCCCeCCCE(5T)U)UVV#AKK0J$K$KLLK S SJJJJ9IJJJJJ 	8# 	T4T\BBK [((&z266ty"EE&ll="==AA$,PRSS0 $v	  
 IC 33==K#K== 	S$9:JERRr0   c                    t          | || j        j        ||          \  }}}t          | ||          }t	          t          |                    p|                     d| g           ||fS )Nr   r   )r   r8   r^   r  r   r   r   )r?   r   r   r]   depsrL   r   extra_run_specss           r.   _read_upstream_pin_filesr$    s     0		&C  D'5 (7C88OSYYA1;;'<s'<'<bAA r0   c                                          d          }t           d||          \  }}} j        rt          j                             d                    } j                            di           }||d<   |sr fd                      d          D             }|rOt          j        |d         	                    di                     }||d         d<   |                    dg           }|
                    |	                    dg                      t           d||          \  }	}
} j        s j        r3t          |	                    d	g                     }t                      }nQt          |	                    dg           |	                    d
g           z   |	                    dg           z             }t          |	                    dg           |	                    dg           z   |	                    dg           z             }ng }	g }
 j        s j        r j        rkt          |	                    d	g                     }t                      }t          |pg                               |	                    d	g                     }n)t                      }t                      }t          |pg           }nt          |	                    dg                     }t          |	                    dg                     } j        r|                    |	                    d
g                      |                    |	                    dg                      t          |pg                               |	                    d
g                     }n#t          |	                    dg                     }	|t          t          j        |	                    d                              z  }|t          t          j        |	                    d                              z  }d|fd|	fd|fd|ffD ]\  }}|rt!          |          ||<   | j        d<   ||
fS )z@Applies run_exports from any build deps to host and run sectionsrequirementsrk   zrequirements/hostrl   c                j    g | ]/}|                     d                                           k    -|0S r  )rW   r>   )rI   outr?   s     r.   rK   z%add_upstream_pins.<locals>.<listcomp>  s<       3776??affhh;V;V;V;V;Vr0   rO   r   strongr2   r   strong_constrainsweak_constrainsrunrun_constrained)rV   r$  is_crossr   r   r   meta
setdefaultexpand_reqsrW   extendr2   r7   r   build_is_hostupdater   )r?   r   r]   r&  
build_depsbuild_unsatextra_run_specs_from_build	host_reqsmatching_output	host_deps
host_unsatextra_run_specs_from_hostr#  extra_run_constrained_specsrun_depsrun_constrained_depssectionr"  s   `                 r.   add_upstream_pinsrA    s    ==00L:R	71?; ;7J7
 	z BN %akk2E&F&FGG	v((<<(V 		@    }}Y77  O  @$0#A&**>2>>    6B">2(33FB??	377"EEFFF;Sv4o<
 <
8	:8 8 	q 	!";"?"?""M"MNNO*-%%''!)--h;;+//;;<,002>>? O
 +.)--.A2FF+//0A2FFG,001DbIIJ+ +'' 	
8 	Nq 	N 	3"%&@&D&DXr&R&R"S"S.1ee+ !1r2299.228R@@ 

 #&%%.1ee+ !1r22

!"<"@"@2"N"NOOO*-*../BBGG+ +'  	N&&'A'E'Efb'Q'QRRR+22.223DbII   !!1r2299.2262>> 

   : > >x L LMM	U%6|7G7G7N7N%O%O!P!PPH6,**+<==>>: : 
 
*			01	 / /  	/$(JJL!)AF>
""r0   c           	     d  
 | j                             di           }dD ]}t          j        |                    |g                     }t	          t
                    }|D ]}t          j        |                                          }|d         t          |          dk    r$|         	                    |dd                    g|         	                    g            g }|
                                D ]\  }g 
|D ]V}t          |          dk    rA|dd         \  }	t          fddD                       sd	|	v s
	                    |           Wt          |          dk    r%t          |          s|	                               
r`t          
fd

D                       st          d
           |	                    d                    g
d         z                        |                    fd|D                        ||v r|r|||<   || j         d<   dS )zr
    For metapackages that are pinned exactly, we want to bypass all dependencies that may
    be less exact.
    r&  )rk   rl   r,  r   r   Nr   c              3      K   | ]}|v V  	d S r(   rF   )rI   crY   s     r.   rt   z1_simplify_to_exact_constraints.<locals>.<genexpr>P  s'      FFWFFFFFFr0   )><r   r   c              3  0   K   | ]}|d          k    V  dS )r   NrF   )rI   r   
exact_pinss     r.   rt   z1_simplify_to_exact_constraints.<locals>.<genexpr>U  s,      FFC3*Q-/FFFFFFr0   zConflicting exact pins: rP   c              3  N   K   | ]}|d                      g|z             V   dS )rP   N)r   )rI   r   r>   s     r.   rt   z1_simplify_to_exact_constraints.<locals>.<genexpr>Z  s:       Q QCS Q4&3,!7!7 Q Q Q Q Q Qr0   )r/  rW   r   r   r   r   ensure_valid_specrU   r   rX   r*   r   allr   r   r2  )metadatar&  r@  r"  	deps_dictr   
spec_parts	deps_listvaluesrk   rH  r>   rY   s             @@@r.   _simplify_to_exact_constraintsrQ  8  sx   
 =$$^R88L) . . !1!1'2!>!>??%%	 	+ 	+C055;;==Ja=D:""$&&z!""~6666$&&r****	%OO-- 	R 	RLD&J / /s88a<<%(!WNGUFFFFoFFFFF /#QV,,"))#...6{{aF  &&&& RFFFF:FFFFF G$%L
%L%LMMM$$SXXtfz!}.D%E%EFFFF   Q Q Q Q6 Q Q QQQQQl""y"$-L!$0HM.!!!r0   c                L    |s }                                  r	d _        nd}t           j        j                            dg                     } j        j                            di                                           D ]}||v r|                    |           t                      }t           d          r#d  j	                                        D             }|s|r4t          j        d                    d ||z  D                                 }                     d	i           }|                                                      j        j        
          }d}	|rd|v sd|vrd                                 i}nd}	|r|d                                          k    rt!           |           t#          j        |                    di                     }
|
 j        d<                        d          x}
r@t#          j        |
 j        j        d           t#          j        |
 j        j        d           |                                                                                               t/           ||          \  }}                     d          }
|r1t          j        d                    d |D                                 } j        rdnd}|
                    |g           }|rLd|v rH|                    d                     j        j        d                              | j        d         |<   t7           | j        j        ||          \  }}}d |D             t9           j                  r,|
                    d          st=           j                  |
d<   |
                    dg           } fd|D             }d |D             }||
|<   ||
d<   |
 j        d<                                      j         dk    r#tC          j"         d           j        d         d<                        d          }|r8tG           fd|D                       }d |D             }| j        d         d<                        d          } j        j$        |d <   | j        d<                        d!          D ]}|                    d"          x}r5tK          |          s&tM          t           j'        |                    |d"<   N|                    d#          x}r8tK          |          s)d$|vr%tM          t           j'        |                    |d#<    j        (                    di            tS                      |s|rd _        t#          j*        tV                    }|,                    d% -                                 d&           |r|,                    d'|            |r|,                    d(|            nd _        |	r } S ))zEFully render a recipe.  Fill in versions for build/host dependencies.TNignore_versionr   other_outputsc                    h | ]\  }}|S rF   rF   )rI   r>   r^   s      r.   	<setcomp>z$finalize_metadata.<locals>.<setcomp>t  s    RRRwtRRRr0   |c              3  "   K   | ]
}d | dV  dS z(?:^z(?:\s|$|\Z))NrF   rI   excs     r.   rt   z$finalize_metadata.<locals>.<genexpr>x  s?        25-C---     r0   zextra/parent_recipe)r^   r   r>   Fr&  rk   rl   c              3  "   K   | ]
}d | dV  dS rY  rF   rZ  s     r.   rt   z$finalize_metadata.<locals>.<genexpr>  s.      OO3#333OOOOOOr0   r   z	python {})r]   r   c                    i | ]J}|                                 d          d                    |                                 dd                   KS )r   rP   r   N)rU   r   )rI   r   s     r.   
<dictcomp>z%finalize_metadata.<locals>.<dictcomp>  sO     #
 #
 #
:=CIIKKNCHHSYY[[_55#
 #
 #
r0   r,  c                2    g | ]}t          |          S rF   r   rI   r   full_build_dep_versionsr?   s     r.   rK   z%finalize_metadata.<locals>.<listcomp>  s4     
 
 
DGq#'>??
 
 
r0   c                :    g | ]}t          j        |d           S T)warnr   rJ  r   s     r.   rK   z%finalize_metadata.<locals>.<listcomp>  s5     
 
 
9=E#Dt444
 
 
r0   strictztest/requiresc                2    h | ]}t          |          S rF   r`  ra  s     r.   rV  z$finalize_metadata.<locals>.<setcomp>  s6        'q#/FGG  r0   c                :    g | ]}t          j        |d           S rd  rf  r   s     r.   rK   z%finalize_metadata.<locals>.<listcomp>  s5     # # #=A'4888# # #r0   testrequiresextracopy_test_source_filesr   rB   git_urlr   zReturning non-final recipe for z-; one or more dependencies was unsatisfiable:zBuild: zHost: ).skipfinalr   r8   r^   rW   r   remover:   rT  rR   rS   r   r   get_rendered_outputr>   r    r   r1  r/  rV   insert_variant_versionsget_output_metadatarA  r.  rX   formatr   r   requirements_pathr   append_requirementspin_dependsr   get_pinned_depsr   rm  r	   r   rB   r0  rQ  
get_logger__name__re  r=   )r?   parent_metadatar   r]   excludesrg   output_excludesparent_recipeoutputis_top_levelr&  r6  r;  pinning_env
build_reqsfull_build_depsrs   r>  versioned_run_deps	test_depsversioned_test_depsrl  source_dictsource_pathrn  logrb  s   `                         @r.   finalize_metadatar  `  s      vvxx Sqx'++,<bAABB8#''(:B??DDFF 	% 	%Ch$$$%%1o&& 	SRR1?;O;O;Q;QRRRO 	 	 j		  9AO9S     O $92>>
 !44QVVXXqxGW4XX 
	2F""fF&:&: !&&((+$  BM&$9QVVXX$E$E6q&AAA ,VZZ-K-KLLL%1AF>"==888< 	R),8H'RRR),8H&QQQ//0E0Eaffhh0O0OPP"3,o#
 #
Z
 }}^44
  	 j		OOOOOOO O !"
7ff!%%k266
  	=(j00k001A(1KLLMMM2<AF>";/ 4H+*G!
 !
 !
A#
 #
AP#
 #
 #
 !%&& 	F|/?/?/F/F 	F"01D"E"EL##E2..
 
 
 
 
KS
 
 

 
AS
 
 
 %4[!0U!-~ 	
=H$$,3,CAu,M,MAF>"5)KK00	 
	="&    (  # ## #EX# # # *=AF6N:&g&&*+(*I&'w
 ==22 
	I 
	IK*v666 	Ik@R@R 	I&.tAFK/H/H&I&IF##'OOI666I gI
 w&&)1$qvw2G2G)H)HI&	'2&&&&q))) 	* 	AG"8,,CHH%!&&(( % % %    20;00111 0.*..///AG Hr0   c                ,   | j         sa|s_	 t          j        |            nI# t          j        $ r7}t          d           t          d           t          |           Y d }~nd }~ww xY w| j         s"|rt          d          |rt          d          d S d S )NzgWarning: failed to download source.  If building, will try again after downloading recipe dependencies.zError was: zno_download_source specified, but can't fully render recipe without downloading source.  Please fix the recipe, or don't use no_download_source.zBFailed to download or patch source. Please see build log for info.)source_providedr   provide
subprocessCalledProcessErrorprintr   RuntimeError)rL  no_download_sourceraise_errorerrors       r.   try_downloadr    s    # ,> 	N8$$$$, 	 	 	?   -   %LLLLLLLL	 # 
 		&  
  	T  
 
	 	s     A&-A!!A&c                   d| _         t          j                            d| j        j                   t          j                            d| j        j                   d                    | j        j        d         	                    d          dd                   }t          j                            dt          j        | j        j        |                     |                                  t          |           } | S )zcSome things need to be parsed again after the build environment has been created
    and activated.Fr   .r   Nr   )rp  sysrB   insertr8   build_prefixhost_prefixr   r^   rU   r   get_site_packagesparse_until_resolvedr  )rL  py_vers     r.   reparser    s     HNHOOAx3444HOOAx2333XXho-h7==cBB2A2FGGFHOOAu.x/JFSSTTT!!### **HOr0   c           
     n   i }d}| j         s| j        rddlm t	          |                     d| j        j                            }g |D ]'}d|v r!|d         }	|	vr                    |	           (t          t          t                              fd          }
|dk     rd}n(|t                    dz
  k    rt                    dz
  }|
t                    dz
  |z
                    }t          |d|d	          }|| j        _        || j        _        |                                 }|                                 }||z   }t#          |d
          r|                                }|d         | j        _        |                     d          }|                     |          }|D ]d}ddlm}  ||           |                                 |j        _        |                    di           }j        rd|vrddd|d<   i }|D ]}||         ||<   |                                D ]7\  }}t          j        j        ||d          pj        j        j        _        8 |j        j                   |                    di           }j        rd|vrddd|d<   g }j        j        D ]}||d<   |                    |           |j        _        t9          j        j                  j        _        j        raj        rZ                                  tC          j"        j        j#                   tI          j%                                                     	 &                    ||           n# tN          $ r Y nw xY wj         pj(         }|d f|)                                j        j                            dj        j*                  tW          fd,                                D                       f<   ft[          |.                                          S )NTr   )VersionOrderzbuild/noarch_python_build_ager   c                X     |                               d          d                   S )NrP   r   r  )kr  versionss    r.   <lambda>z%distribute_variants.<locals>.<lambda>E  s)    Xa[=N=Ns=S=STU=V0W0W r0   )rg   r   noarch_python_reductionr   F)force_globalget_all_replacementsr   r   r   r   distribute_variants_reduction)allow_no_other_outputsbypass_env_checktarget_platformc              3  Z   K   | ]%}|j         j                            |          fV  &d S r(   )r8   r^   rW   )rI   varmvs     r.   rt   z&distribute_variants.<locals>.<genexpr>  s;      VVCsBI-11#667VVVVVVr0   )/r2   r7   conda_interfacer  intr   r8   noarch_python_build_agerX   r   r   r   r$   variantsinput_variantsextract_requirements_textextract_package_and_build_textr:   r   r^   get_used_loop_varsget_reduced_variant_setrk   r  copyrW   numpy_xxr*   r&   squished_variantsneeds_source_for_rendervariant_in_sourceparse_againr   rm_rfwork_dirr   r  r  
SystemExitr  r=   r@   r   get_used_varsr   rP  )rL  r  r   r  r  rendered_metadataneed_source_downloadager^   voversion_indices	build_verrecipe_requirementsrecipe_package_and_build_textrecipe_textused_variablestop_loopr  r   conform_dictrg   rP  numpy_pinned_variants_variantr  r  r  s                           @@@r.   distribute_variantsr  )  s     
  
(0 
111111/1X 
 

  	( 	(G7""X&X%%OOB''' #h--  &W&W&W&W&W
 
 
 77CC3x==1$$$h--!#C_S]]Q->-DEF	&h	+D
 

  (HO &.HO""<<>>$,$K$K$M$M!/2EEK{H%% +!((**&qkHO00e0DDN//??H ;- ;-//////W%%%]]__#	";;'92>>; 	M7*:::49e(L(LW%! 	- 	-C !(L'--// 	 	KC#I&V5T  & 9%	 I 	RY/000";;'92>>; 	M7*:::49e(L(LW% "	* 	3 	3H+;H'(!((22222	&DRYEW&X&X	#% 	"*> 	NNK	*+++N2NN	##'=!1 $      	 	 	D	#%#==WREWAW %t, 				!%%&79IJJVVVV2CSCSCUCUVVVVV	
 	
 !((**+++s   ,N
NNc                F   t                      }| D ]p\  }}}ddlm}  ||j                   ddlm}  ||                              d          D ].\  }} ||j                   ||f||                                <   /qt          |	                                          S )zVObtain all metadata objects for all outputs from recipe.  Useful for outputting paths.r   r  r   )deepcopyFr!  )
r   rk   r  r8   r  r  get_output_metadata_setr=   r   rP  )	metadata_tuplesexpanded_outputs_mdownloadr  r  r  output_dictr?   s	            r.   expand_outputsr    s    "}}!0 
: 
:Hg//////RY'''!!!!!!&hrllBB*/ C 
 
 	: 	:NK ! ****5q)9QVVXX&&		:
  ''))***r0   c                x   | }t          |          r|                    d          rUt          j                    }t	          j        |d          }	|	                    |           |	                                 d}
nL|                    d          rt          |          }d}
n%t          d|z             dS t          |          }d}
t          |          st          j        d	|z             	 t          ||
          }na# t          j        $ rO}t          j                            |                                           t          j        d           Y d}~nd}~ww xY wi }|j        rA|j                            |                                |                                |           |j        r|j        st7          ||           |j        rt;          |j        d          r|j        j        sd|j        _        t          tA          |j!        d                    r tA          |j!        d          g|j        _"        tG          ||          |j        _$        |j        j$        d         |j        _        |ddfg}n%tG          ||          }tK          |||d|          }|
rtM          j'        |           |S )zReturns a list of tuples, each consisting of

    (metadata-object, needs_download, needs_render_in_env)

    You get one tuple per variant.  Outputs are not factored in here (subpackages won't affect these
    results returned here.)
    )z.tarz.tar.gzz.tgzz.tar.bz2zr:*)rB   Tr   FzIgnoring non-recipe: %s)NNzError: no such directory: %s)r8   r   N)reset)r  r  zconda_build_config.yaml)r  r   )r   r  r  )(r   endswithtempfilemkdtempr   r   
extractallcloser   r  r   r
   r  exitr   r   YamlParsingErrorstderrwrite	error_msgset_build_idr8   compute_build_idr>   rY   r  r  r  rp  r:   r^   ignore_system_variantsr   rB   variant_config_filesr%   r  r  r   r  )recipe_pathr8   r  r  r   reset_build_idr  arg
recipe_dirtneed_cleanupr?   r   r  s                 r.   render_reciper    s     Cc{{ <<?@@ 	!)++JS%((ALLjL)))GGIIILL\\'"" 	 J LL+c1222:S\\
 >/*<===Z///&   
'''   O	!!!&&((AIIKK~!NNN 	  ?): ?Q+=>>>>w 
qx,, 	4AH4D 	4.2AH+d16#<==>> !:;;1- !5Q J J JAH x03AHu

 (H=== 0*G#'-
 
 
   Js   /D EAEE)	r   r   rk   r&  rj  apprO   aboutrl  c                      e Zd ZeZd ZdS )	_MetaYamlc                4      fdt           j        D             S )Nc                ,    g | ]}|v ||         fS rF   rF   )rI   fieldselfs     r.   rK   z%_MetaYaml.to_omap.<locals>.<listcomp>  s'    TTTetmmU$mmmr0   )r  fields)r  s   `r.   to_omapz_MetaYaml.to_omap  s     TTTT)2BTTTTr0   N)r{  
__module____qualname__FIELDSr  r  rF   r0   r.   r  r    s-        FU U U U Ur0   r  c                R    |                      d|                                          S )Nztag:yaml.org,2002:map)represent_mappingr  r+   s     r.   _represent_omapr  !  s!    ##$;T\\^^LLLr0   c                2    t          j        d|          }|S )Nztag:yaml.org,2002:str)tagrh   )r   
ScalarNode)r,   uninodes      r.   _unicode_representerr	  %  s    ?6cBBBDKr0   c                  &     e Zd Zd fd	Zd Z xZS )_IndentDumperFc                H    t                                          |d          S NF)superincrease_indent)r  flow
indentless	__class__s      r.   r  z_IndentDumper.increase_indent+  s    ww&&tU333r0   c                    dS )NTrF   )r  r-   s     r.   ignore_aliasesz_IndentDumper.ignore_aliases.  s    tr0   )FF)r{  r  r  r  r  __classcell__)r  s   @r.   r  r  *  sL        4 4 4 4 4 4      r0   r  c                   |                                  }|r|j        rd|j        v r|j        d= t          j        t          |j                  t          dd          }rt          fddD                       r3	 t          j	        t                               n# t          $ r Y nw xY wt          d          5 }|                    |           d d d            n# 1 swxY w Y   dz  S |S )	NrO   Fr   )Dumperdefault_flow_styleindentc              3      K   | ]}|v V  	d S r(   rF   )rI   sepfilenames     r.   rt   zoutput_yaml.<locals>.<genexpr>F  s'      663sh666666r0   )\/wzWrote yaml to %s)r  	is_outputr/  r   dumpr  r  r   osmakedirsr   OSErrorr   r  )rL  r  suppress_outputslocal_metadatar  r   s    `    r.   output_yamlr'  7  s[   ]]__N+$+ ,,,	*Y.%&& 	  F  
6666+66666 	GH--....   (C   	AGGFOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!H,,s$   =!B 
B,+B,?C!!C%(C%)NFT)r?   r   )F)r   r   r?   r   r   r   r   r   r  )FFF)FNTTF)]
__future__r   r   r"  rn   rR   rp   r  r  r   r  collectionsr   r   	functoolsr   os.pathr   r   r	   r
   r   r   r   pathlibr   r   rQ   r   r   r   r   r  r   r   r   r   r   r   deprecationsr   r   r   r  r   rL  r   r    r!   r"   r#   r  r$   r%   r&   r/   add_representerr   representerSafeRepresenterrepresent_listr   rC   rM   ri   r   r   r   r   r   r   argumentr  r  r$  rA  rQ  r  r  r  r  r  r  r   r   r  r  r	  r  r  r   unicoder'  rF   r0   r.   <module>r4     s   # " " " " "  				  				      



   0 0 0 0 0 0 0 0                               0 0 0 0 0 0 0 0 0 0 0 0                % $ $ $ $ $             4 4 4 4 4 4 " " " " " " F F F F F F F F         
         / / /  S$*:I J J J  UD,<K L L L  ["3 4 4 4  < Hh   8 8 8B "'&*C C C C CL    @  & 8=         @ 4& & &R Xx7CCCL L L DCL^ Xx7CCC" " " DC"J   .\# \# \# \#~%1 %1 %1T "'^ ^ ^ ^ ^B   6
 
 
  #( v, v, v, v,r+ + +* "&S S S Sn

 

 

U U U U U U U UM M M  
    DK     Y 0 0 0  S. / / /
     r0   