ó
@K7]c           @` sz  d  d l  m Z m Z m Z m Z d  d l m 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 „  Z y" d  d l Z d	 „  e j j _ Wn e k
 r¼ n Xe e ƒ e d
 ƒ k Z e e ƒ e d ƒ k Z e e ƒ e d ƒ k Z e e ƒ e d ƒ k Z e e ƒ e d ƒ k Z e e ƒ e d ƒ k Z e rxd  d l m Z m Z m Z m  Z  n" d  d l! m Z m Z m Z m  Z  e e e Z Z Z e  Z  y d  d l m" Z" Wn! e k
 rëd  d l# m" Z" n Xe" Z" d  d l m$ Z$ m% Z% m& Z& d  d l m' Z' m( Z( d  d l m) Z) m* Z* m+ Z+ m, Z, m- Z- d  d l m. Z. m/ Z/ m0 Z0 m1 Z1 m2 Z2 m3 Z3 m4 Z4 d  d l m5 Z5 d  d l m6 Z6 m7 Z7 m8 Z8 m9 Z9 m: Z: m; Z; m< Z< d  d l m= Z= d  d l m> Z> m? Z? m@ Z@ mA ZA mB ZB mC ZC mD ZD d  d l mE ZE d  d l mF ZF mG ZG mH ZH mI ZI mJ ZJ mK ZK mL ZL mM ZM d  d l mN ZN e$ Z$ e% e& e' e( f \ Z% Z& Z' Z( e) e+ e- Z) Z+ Z- e. e/ e0 e1 f \ Z. Z/ Z0 Z1 e2 e3 e4 Z2 Z3 Z4 e5 e6 e7 Z5 Z6 Z7 e8 e9 Z8 Z9 e: e; e< Z: Z; Z< e> e? e@ eA f \ Z> Z? Z@ ZA eB eC eD ZB ZC ZD eF eH eI eJ eK f \ ZF ZH ZI ZJ ZK eL eM ZL ZM e= eE eN Z= ZE ZN d  d lO mP ZP d  d lQ mR ZR mS ZS eP ZP eR eS ZR ZS eF rÆd  d lT ZT n d  d lU ZT eT ZT d  d l mV ZV mW ZW eV eW ZV ZW d  d  l mX ZX eX eV eW ZX ZV ZW e d! d" ƒ ZY e d! d# ƒ ZZ e d! d$ ƒ Z[ e d! d% ƒ Z\ e d! d& ƒ Z] e d! d' ƒ Z^ e d! d( ƒ Z_ e d) d* ƒ Z` e d) d+ ƒ Za e d) d, ƒ Zb e d) d- ƒ Zc e d. d/ ƒ Zd ea je Ze ea jf Zf ea jg Zg ea jh Zh ea ji Zi ej ea jk ƒ Zk ea jl Zm ea jn Zn ea jo Zo ea jp Zp ea jq Zq d0 „  Zr e eb ea ƒ Zs et ea d1 ƒ rlea ju n i  Zv y d  d2 l mw Zw Wn d  d2 lx mw Zw n Xew jy Zz e{ d3 ƒ e j| e{ d4 ƒ <ec ƒ  d5 „  Z} ea j~ Z~ eY eZ es e[ f \ ZY ZZ Zs Z[ e\ e` e] Z\ Z` Z] e^ e_ Z^ Z_ d6 e f d7 „  ƒ  YZ€ d8 e f d9 „  ƒ  YZ‚ d: „  Zƒ d; „  Z„ d< „  Z… e j| j† d= d ƒ Zˆ d S(>   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literals(   t   partialN(   t   lstat(   t   import_module(   t   parse_version(   t   __version__c         C` s?   y t  t d ƒ | ƒ SWn! t k
 r: t  t |  ƒ | ƒ SXd  S(   Nu   conda.exports(   t   getattrR   t   AttributeError(   t   modulet   attr(    (    s:   lib/python2.7/site-packages/conda_build/conda_interface.pyt   try_exports   s    c         C` s   d  S(   N(   t   None(   t   x(    (    s:   lib/python2.7/site-packages/conda_build/conda_interface.pyt   <lambda>   t    u   4.3.0a0u   4.4.0a0u   4.5.0a0u   4.6.0a0u   4.7.0a0u   4.8.0a0(   t   display_actionst   execute_actionst   execute_plant   install_actions(   t	   _toposort(   t   TmpDownloadt   downloadt   handle_proxy_407(   t	   untrackedt   walk_prefix(   t	   MatchSpect   NoPackagesFoundt   Resolvet   Unsatisfiablet   normalized_version(   t   human_bytest   hashsum_filet   md5_filet   memoizedt   unix_path_to_wint   win_path_to_unixt   url_path(   t	   get_index(   t	   Completert   InstalledPackagest   add_parser_channelst   add_parser_prefixt   specs_from_argst   spec_from_linet   specs_from_url(   t   ArgumentParser(   t	   is_linkedt   linkedt   linked_datat   prefix_placeholdert   rm_rft   symlink_condat   package_cache(   t   CondaSession(   t   PY3t   StringIOt   inputt	   iteritemst   lchmodt   string_typest	   text_typet   TemporaryDirectory(   t   VersionOrder(   t   ProgressiveFetchExtract(   t   Distt   IndexRecord(   t   FileModet   PathType(   t   EntityEncoderu   conda.exceptionsu
   CondaErroru   CondaHTTPErroru	   LinkErroru	   LockErroru   NoPackagesFoundErroru   PaddingErroru   UnsatisfiableErroru   conda.base.contextu   non_x86_linux_machinesu   contextu
   get_prefixu   reset_contextu   conda.models.channelu   get_conda_build_local_urlc           C` s   t  t j ƒ S(   N(   t   listt   contextt   channels(    (    (    s:   lib/python2.7/site-packages/conda_build/conda_interface.pyR   ƒ   R   u   conda_build(   t   Channelu   falseu   CONDA_ALLOW_SOFTLINKSc           C` s   t  t ƒ  ƒ p g  S(   N(   RH   t   get_conda_build_local_url(    (    (    s:   lib/python2.7/site-packages/conda_build/conda_interface.pyR   ‘   R   t   CrossPlatformStLinkc           B` sS   e  Z d Z d  „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z	 RS(   c         C` s   |  j  | ƒ S(   N(   t   st_nlink(   t   selft   path(    (    s:   lib/python2.7/site-packages/conda_build/conda_interface.pyt   __call__    s    c         C` s)   |  j  d  k r |  j ƒ  n  |  j  | ƒ S(   N(   t	   _st_nlinkR   t   _initialize(   t   clsRP   (    (    s:   lib/python2.7/site-packages/conda_build/conda_interface.pyRN   £   s    c         C` s   t  | ƒ j S(   N(   R   RN   (   RT   RP   (    (    s:   lib/python2.7/site-packages/conda_build/conda_interface.pyt   _standard_st_nlink©   s    c   
      C` sæ   |  j  | ƒ } | d k r | Sd } d } d } |  j | | | d  | d d  ƒ } | d  k r d d l m } | d | ƒ ‚ n  |  j ƒ  } |  j | | ƒ }	 |  j | ƒ |	 d k rÛ d d l m } | d | ƒ ‚ n  | j Sd  S(   Ni    I   €    i   i   (   t   WinErroru8   Could not determine determine number of hardlinks for %su+   Could not determine file information for %s(	   RU   t
   CreateFileR   t   ctypesRV   t   BY_HANDLE_FILE_INFORMATIONt   GetFileInformationByHandlet   CloseHandlet   nNumberOfLinks(
   RT   RP   RN   t   GENERIC_READt   FILE_SHARE_READt   OPEN_EXISTINGt   hfileRV   t   infot   rv(    (    s:   lib/python2.7/site-packages/conda_build/conda_interface.pyt   _windows_st_nlink­   s&    c         ` sX  t  j d k r |  j |  _ n6d d  l } d d l m } d d l m ‰  m } m	 } | j
 j j |  _ | j ˆ  ˆ  | j ˆ  ˆ  | g |  j _ | |  j _ | j
 j j |  _ | g |  j _ | |  j _ d | j f ‡  f d †  ƒ  Y‰ d | j f ‡  ‡ f d †  ƒ  Y} | |  _ | j
 j j |  _ | | | ƒ g |  j _ | |  j _ |  j |  _ d  S(	   Nu   nti    (   t   POINTER(   t   DWORDt   HANDLEt   BOOLt   FILETIMEc           ` s    e  Z d  ˆ  f d ˆ  f g Z RS(   u   dwLowDateTimeu   dwHighDateTime(   t   __name__t
   __module__t   _fields_(    (   Re   (    s:   lib/python2.7/site-packages/conda_build/conda_interface.pyRh   Û   s   	RY   c           ` sh   e  Z d  ˆ  f d ˆ f d ˆ f d ˆ f d ˆ  f d ˆ  f d ˆ  f d ˆ  f d ˆ  f d	 ˆ  f g
 Z RS(
   u   dwFileAttributesu   ftCreationTimeu   ftLastAccessTimeu   ftLastWriteTimeu   dwVolumeSerialNumberu   nFileSizeHighu   nFileSizeLowu   nNumberOfLinksu   nFileIndexHighu   nFileIndexLow(   Ri   Rj   Rk   (    (   Re   Rh   (    s:   lib/python2.7/site-packages/conda_build/conda_interface.pyRY   ß   s   									(   t   ost   nameRU   RR   RX   Rd   t   ctypes.wintypesRe   Rf   Rg   t   windllt   kernel32t   CreateFileWRW   t	   c_wchar_pt   c_void_pt   argtypest   restypeR[   t	   StructureRY   RZ   Rc   (   RT   RX   Rd   Rf   Rg   RY   (    (   Re   Rh   s:   lib/python2.7/site-packages/conda_build/conda_interface.pyRS   Ç   s(    "	N(
   Ri   Rj   R   RR   RQ   t   classmethodRN   RU   Rc   RS   (    (    (    s:   lib/python2.7/site-packages/conda_build/conda_interface.pyRM      s   	t   SignatureErrorc           B` s   e  Z RS(    (   Ri   Rj   (    (    (    s:   lib/python2.7/site-packages/conda_build/conda_interface.pyRx   ö   s   c         #` s¨   d d l  m ‰  m ‰ ˆ  ˆ ƒ ‰ t ˆ ƒ ‰ ˆ d k rM t d ˆ ƒ ‚ n  xT t ˆ ƒ D]F } t ˆ | ƒ } t ‡  ‡ ‡ ‡ f d †  | d Dƒ ƒ rZ | VqZ qZ Wd S(   u­   
    given the path (of a (presumably) conda installed file) iterate over
    the conda packages the file came from.  Usually the iteration yields
    only one package.
    i    (   t   abspatht   joinu)   could not determine conda prefix from: %sc         3` s*   |  ]  } ˆ  ˆ ˆ | ƒ ƒ ˆ k Vq d  S(   N(    (   t   .0t   f(   Ry   Rz   RP   t   prefix(    s:   lib/python2.7/site-packages/conda_build/conda_interface.pys	   <genexpr>  s    u   filesN(	   t   os.pathRy   Rz   t   which_prefixR   t   RuntimeErrorR2   R1   t   any(   RP   t   distt   meta(    (   Ry   Rz   RP   R}   s:   lib/python2.7/site-packages/conda_build/conda_interface.pyt   which_packageú   s    )c         C` s–   d d l  m } m } m } m } | |  ƒ } d } x[ | d k  r‘ | | | d ƒ ƒ r\ Pn  | | | ƒ k rx d } Pn  | | ƒ } | d 7} q7 W| S(   u€   
    given the path (to a (presumably) conda installed file) return the
    environment prefix in which the file in located
    i    (   Ry   Rz   t   isdirt   dirnamei   u
   conda-metai   N(   R~   Ry   Rz   R…   R†   R   (   RP   Ry   Rz   R…   R†   R}   t	   iteration(    (    s:   lib/python2.7/site-packages/conda_build/conda_interface.pyR     s    "c         C` sÎ   d d l  m } | | ƒ } t |  ƒ } i  } x™ | D]‘ } g  | D]X } | j d d ƒ d j d d ƒ d | k rB | j d d ƒ d j d d ƒ d ^ qB } t | ƒ d k r¼ | d n d | | <q5 W| S(	   uo   Primarily used by conda-forge, but may be useful in general for checking when a package
    needs to be updatedi    (   t   ensure_listu   ::i   iÿÿÿÿu   -i   N(   t   conda_build.utilsRˆ   R2   t   splitt   rsplitt   lenR   (   R}   t   pkgsRˆ   t   linked_pkgst   versionst   pkgR‚   t	   vers_inst(    (    s:   lib/python2.7/site-packages/conda_build/conda_interface.pyt   get_installed_version   s    X*u   CONDA_PATH_BACKUP(‰   t
   __future__R    R   R   R   t	   functoolsR   Rl   R   t	   importlibR   t   pkg_resourcesR   t   condaR   t   CONDA_VERSIONR   t   conda.cli.commont   clit   commont   ensure_use_localt   ImportErrort   conda_43t   conda_44t   conda_45t   conda_46t   conda_47t   conda_48t   conda.exportsR   R   R   R   t
   conda.planR   t   conda.toposortR   R   R   R   R   R   R   R   R   R    R!   R"   R#   R$   R%   R&   R'   R(   R)   R*   R+   R,   R-   R.   R/   R0   R1   R2   R3   R4   R5   R6   R7   R8   R9   R:   R;   R<   R=   R>   R?   R@   RA   t   conda.core.package_cacheRB   t   conda.models.distRC   RD   t   configparsert   ConfigParserRE   RF   RG   t
   CondaErrort   CondaHTTPErrort	   LinkErrort	   LockErrort   NoPackagesFoundErrort   PaddingErrort   UnsatisfiableErrort   non_x86_linux_machinesRI   t   context_get_prefixt   reset_contextRL   t   binstar_uploadt   bitst   conda_privatet   default_pythont	   envs_dirsRH   t	   pkgs_dirst   platformt   cc_platformt   root_dirt   root_writablet   subdirt   create_default_packagest   get_rc_urlst
   get_prefixt   hasattrt   conda_buildt   cc_conda_buildRK   t   conda.models.channelt
   from_valuet   get_conda_channelt   strt   environt   get_local_urlst	   arch_namet   objectRM   t	   ExceptionRx   R„   R   R’   t   getR   t   env_path_backup_var_exists(    (    (    s:   lib/python2.7/site-packages/conda_build/conda_interface.pyt   <module>   sØ   "	%"(444:$														Y			