
6Uc           @   s  d  Z  d d k l Z d d k l Z d d k l Z d d k Z d d k Z d d k	 Z	 d d k
 Z
 d d k Z y d d k l Z Wn e j
 o n Xd d k l Z d d k l Z d d	 k l Z l Z l Z d d
 k l Z d d k l Z l Z l Z l Z l Z l Z l Z l  Z  d d k! i" Z" d d k l# Z# d e f d     YZ$ d e f d     YZ d e f d     YZ% d   Z& d   Z' d   Z( d   Z) d   Z* d   Z+ d   Z, d   Z- e. d  Z/ d   Z0 d   Z1 d S(   sU   setuptools.command.egg_info

Create a distribution's .egg-info directory and contentsi(   t   FileList(   t   convert_path(   t   logN(   t	   svn_utils(   t   Command(   t   sdist(   t
   basestringt   PY3t   StringIO(   t   walk_revctrl(   t   parse_requirementst	   safe_namet   parse_versiont   safe_versiont   yield_linest
   EntryPointt   iter_entry_pointst   to_filename(   t	   packagingt   egg_infoc           B   s   e  Z d  Z d d  d! d" d# d$ g Z d d g Z h d d 6d d 6Z d   Z d   Z d   Z e	 d  Z
 d   Z d   Z d   Z d   Z d   Z e d    Z d   Z d   Z RS(%   s+   create a distribution's .egg-info directorys	   egg-base=t   esL   directory containing .egg-info directories (default: top of the source tree)s   tag-svn-revisiont   rs,   Add subversion revision ID to version numbers   tag-datet   ds0   Add date stamp (e.g. 20050528) to version numbers
   tag-build=t   bs-   Specify explicit tag to add to version numbers   no-svn-revisiont   Rs*   Don't add subversion revision ID [default]s   no-datet   Ds"   Don't include date stamp [default]c         C   sU   d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d |  _ d |  _ t |  _	 d  |  _
 d  S(   Ni    (   t   Nonet   egg_namet   egg_versiont   egg_baseR   t	   tag_buildt   tag_svn_revisiont   tag_datet   Falset   broken_egg_infot   vtags(   t   self(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   initialize_options1   s    								c      
   C   sK   d d k  l } t d t d d d d d |  i     } | | |  d  S(   Ni(   t   edit_configR   R   i    R    R   (   t   setuptools.command.setoptR&   t   dictt   tags(   R$   t   filenameR&   t   values(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   save_version_info<   s    c         C   s  t  |  i i    |  _ |  i   |  _ |  i   |  _ t |  i  } yM t	 | t
 i i  } | o d n d } t t | |  i |  i f   Wn5 t j
 o) t i i d |  i |  i f   n X|  i d  j o/ |  i i } | p h  i d t i  |  _ n |  i d  t |  i  d |  _ |  i t i j o" t i i |  i |  i  |  _ n d |  i j o |  i   n |  i |  i i _ |  i i  } | d  j	 oG | i! |  i i"   j o. |  i | _# t |  i  | _$ d  |  i _  n d  S(   Ns   %s==%ss   %s===%ss2   Invalid distribution name or version syntax: %s-%st    R   s	   .egg-infot   -(%   R   t   distributiont   get_nameR   R)   R#   t   tagged_versionR   R   t
   isinstanceR   t   versiont   Versiont   listR
   t
   ValueErrort	   distutilst   errorst   DistutilsOptionErrorR   R   t   package_dirt   gett   ost   curdirt   ensure_dirnameR   R   t   patht   joint   check_broken_egg_infot   metadatat   _patched_distt   keyt   lowert   _versiont   _parsed_version(   R$   t   parsed_versiont
   is_versiont   spect   dirst   pd(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   finalize_optionsH   s8    !	#"&c         C   ss   | o |  i  | | |  nR t i i |  o> | d j o  | o t i d | |  d S|  i |  n d S(   s  Write `data` to `filename` or delete if empty

        If `data` is non-empty, this routine is the same as ``write_file()``.
        If `data` is empty but not ``None``, this is the same as calling
        ``delete_file(filename)`.  If `data` is ``None``, then this is a no-op
        unless `filename` exists, in which case a warning is issued about the
        orphaned file (if `force` is false), or deleted (if `force` is true).
        s$   %s not set in setup(), but %s existsN(   t
   write_fileR<   R?   t   existsR   R   t   warnt   delete_file(   R$   t   whatR*   t   datat   force(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   write_or_delete_filew   s    	c         C   se   t  i d | |  t o | i d  } n |  i p* t | d  } | i |  | i   n d S(   s   Write `data` to `filename` (if not a dry run) after announcing it

        `what` is used in a log message to identify what is being written
        to the file.
        s   writing %s to %ss   utf-8t   wbN(   R   t   infoR   t   encodet   dry_runt   opent   writet   close(   R$   RR   R*   RS   t   f(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyRN      s    
c         C   s/   t  i d |  |  i p t i |  n d S(   s8   Delete `filename` (if not a dry run) after announcing its   deleting %sN(   R   RW   RY   R<   t   unlink(   R$   R*   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyRQ      s    
c         C   sH   |  i  i   } |  i o | i |  i  o t |  St | |  i  S(   N(   R/   t   get_versionR#   t   endswithR   (   R$   R3   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyR1      s    c         C   s   |  i  |  i  |  i i } xX t d  D]J } | i d |  | i   } | |  | i t i	 i
 |  i | i   q) Wt i	 i
 |  i d  } t i	 i |  o |  i |  n |  i   d  S(   Ns   egg_info.writerst	   installers   native_libs.txt(   t   mkpathR   R/   t   fetch_build_eggR   t   requiret   resolvet   nameR<   R?   R@   RO   RQ   t   find_sources(   R$   Ra   t   ept   writert   nl(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   run   s     ,c         C   s   d } |  i  o | |  i  7} n |  i o) |  i   } | o | d | 7} qT n |  i o# d d  k } | | i d  7} n | S(   NR-   s   -r%sis   -%Y%m%d(   R   R   t   get_svn_revisionR    t   timet   strftime(   R$   R3   t   revRm   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyR)      s    


c           C   s4   d t    j o d St t i i t i  i    S(   NR   t   0(   t   globalst   strR   t   SvnInfot   loadR<   R=   t   get_revision(    (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyRl      s    c         C   sJ   t  i i |  i d  } t |  i  } | | _ | i   | i |  _ d S(   s"   Generate SOURCES.txt manifest files   SOURCES.txtN(	   R<   R?   R@   R   t   manifest_makerR/   t   manifestRk   t   filelist(   R$   t   manifest_filenamet   mm(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyRg      s
    	
c         C   s   |  i  d } |  i t i j o t i i |  i |  } n t i i |  o? t i d d d d d | |  i	  |  i	 |  _
 | |  _	 n d  S(   Ns	   .egg-infoR.   iN   s   
Note: Your current .egg-info directory has a '-' in its name;
this will not work correctly with "setup.py develop".

Please rename %s to %s to correct this problem.
(   R   R   R<   R=   R?   R@   RO   R   RP   R   R"   (   R$   t   bei(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyRA      s    (   s	   egg-base=R   sL   directory containing .egg-info directories (default: top of the source tree)(   s   tag-svn-revisionR   s,   Add subversion revision ID to version number(   s   tag-dateR   s0   Add date stamp (e.g. 20050528) to version number(   s
   tag-build=R   s-   Specify explicit tag to add to version number(   s   no-svn-revisionR   s*   Don't add subversion revision ID [default](   s   no-dateR   s"   Don't include date stamp [default](   t   __name__t
   __module__t   descriptiont   user_optionst   boolean_optionst   negative_optR%   R,   RM   R!   RU   RN   RQ   R1   Rk   R)   t   staticmethodRl   Rg   RA   (    (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyR      s0     	

			/						R    c           B   s2   e  Z d  Z d   Z d   Z d   Z d   Z RS(   s@   File list that accepts only existing, platform-independent pathsc         C   sR   | i  d  o | d  } n t |  } |  i |  o |  i i |  n d  S(   Ns   i(   R`   R   t
   _safe_patht   filest   append(   R$   t   itemR?   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyR      s
    c         C   s    |  i  i t |  i |   d  S(   N(   R   t   extendt   filterR   (   R$   t   paths(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyR      s    c         C   s"   t  t |  i |  i   |  _ d S(   s   
        Replace self.files with only safe paths

        Because some owners of FileList manipulate the underlying
        ``files`` attribute directly, this method must be called to
        repair those paths.
        N(   R5   R   R   R   (   R$   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   _repair   s    c         C   s   d } t  i |  } | d  j o t i d |  t St  i | d  } | d  j o t i | | d  t Sy/ t i i	 |  p t i i	 |  o t
 SWn, t j
 o  t i | | t i    n Xd  S(   Ns!   '%s' not %s encodable -- skippings'   '%s' in unexpected encoding -- skippings   utf-8(   t   unicode_utilst   filesys_decodeR   R   RP   R!   t
   try_encodeR<   R?   RO   t   Truet   UnicodeEncodeErrort   syst   getfilesystemencoding(   R$   R?   t   enc_warnt   u_patht	   utf8_path(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyR      s    &	(   R|   R}   t   __doc__R   R   R   R   (    (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyR       s
   			
Rv   c           B   s_   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z RS(
   s   MANIFEST.inc         C   s(   d |  _  d |  _ d |  _ d |  _ d  S(   Ni   (   t   use_defaultst   prunet   manifest_onlyt   force_manifest(   R$   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyR%     s    			c         C   s   d  S(   N(    (   R$   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyRM     s    c         C   s   t    |  _ t i i |  i  p |  i   n |  i i   |  i   t i i |  i	  o |  i
   n |  i   |  i i   |  i i   |  i   d  S(   N(   R    Rx   R<   R?   RO   Rw   t   write_manifestt   findallt   add_defaultst   templatet   read_templatet   prune_file_listt   sortt   remove_duplicates(   R$   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyRk     s    

c         C   s"   t  i |  } | i t i d  S(   Nt   /(   R   R   t   replaceR<   t   sep(   R$   R?   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   _manifest_normalize+  s    c         C   sj   |  i  i   g  } |  i  i D] } | |  i |  q ~ } d |  i } |  i t |  i | f |  d S(   so   
        Write the file list in 'self.filelist' to the manifest file
        named by 'self.manifest'.
        s   writing manifest file '%s'N(   Rx   R   R   R   Rw   t   executeRN   (   R$   t   _[1]R]   R   t   msg(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyR   /  s    0c         C   s(   | i  d  p t i |  |  n d  S(   Ns   standard file not found:(   t
   startswithR   RP   (   R$   R   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyRP   ;  s    c         C   s   t  i |   |  i i |  i  |  i i |  i  t t    } | o |  i i |  n% t	 i
 i |  i  o |  i   n |  i d  } |  i d |  |  i i d d | i d  S(   NR   t   cmdt   *t   prefix(   R   R   Rx   R   R   Rw   R5   R	   R   R<   R?   RO   t   read_manifestt   get_finalized_commandt   _add_egg_infot   include_patternR   (   R$   t   rcfilest   ei_cmd(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyR   ?  s    c            sZ     i  t i j o d St i i   i   }   f d   | D } |  i i i |  d S(   s  
        Add paths for egg-info files for an external egg-base.

        The egg-info files are written to egg-base. If egg-base is
        outside the current working directory, this method
        searchs the egg-base directory for files to include
        in the manifest. Uses distutils.filelist.findall (which is
        really the version monkeypatched in by setuptools/__init__.py)
        to perform the search.

        Since findall records relative paths, prefix the returned
        paths with cmd.egg_base, so add_default's include_pattern call
        (which is looking for the absolute cmd.egg_info) will match
        them.
        Nc         3   s+   x$ |  ] } t  i i   i |  Vq Wd  S(   N(   R<   R?   R@   R   (   t   .0R?   (   R   (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pys	   <genexpr>a  s   	 (   R   R<   R=   R7   Rx   R   t   allfilesR   (   R$   R   t
   discoveredt   resolved(    (   R   s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyR   L  s
    c         C   s   |  i  d  } |  i i   } |  i i d  d | i |  i i d  d | t i t	 i
  } |  i i d | d | d d d  S(   Nt   buildR   s   (^|s   )(RCS|CVS|\.svn)t   is_regexi   (   R   R/   t   get_fullnameRx   t   exclude_patternR   t
   build_baset   ret   escapeR<   R   (   R$   R   t   base_dirR   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyR   d  s    (   R|   R}   R   R%   RM   Rk   R   R   RP   R   R   R   (    (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyRv     s   								c         C   s[   d i  |  } | i d  } t |  d  i i   } z | ~ } | i |  Wd QXd S(   s{   Create a file with the specified name and write 'contents' (a
    sequence of strings without line terminators) to it.
    s   
s   utf-8RV   N(   R@   RX   RZ   t   __exit__t	   __enter__R[   (   R*   t   contentsR   R]   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyRN   n  s    &c         C   s   t  i d |  |  i p |  i i } |  i | i | _ } |  i | i | _ } z | i	 |  i
  Wd  | | | _ | _ Xt |  i d d   } d d k l } | i |  i
 |  n d  S(   Ns
   writing %st   zip_safei(   t	   bdist_egg(   R   RW   RY   R/   RB   R   R3   R   Rf   t   write_pkg_infoR   t   getattrR   t   setuptools.commandR   t   write_safety_flag(   R   t   basenameR*   RB   t   oldvert   oldnamet   safeR   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyR   {  s    
c         C   s(   t  i i |  o t i d  n d  S(   Nss   WARNING: 'depends.txt' is not used by setuptools 0.6!
Use the install_requires/extras_require setup() args instead.(   R<   R?   RO   R   RP   (   R   R   R*   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   warn_depends_obsolete  s    c         C   s<   t  | p d  } d   } t | |  } |  i |  d  S(   Nc         S   s   |  d  S(   s   
(    (   t   line(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   <lambda>  s    (    (   R   t   mapt
   writelines(   t   streamt   reqst   linest	   append_cr(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   _write_requirements  s    	c         C   s   |  i  } t   } t | | i  | i p h  } x> t |  D]0 } | i d i t      t | | |  q? W|  i	 d | | i
    d  S(   Ns   
[{extra}]
t   requirements(   R/   R   R   t   install_requirest   extras_requiret   sortedR[   t   formatt   varsRU   t   getvalue(   R   R   R*   t   distRS   R   t   extra(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   write_requirements  s    		 c         C   s9   t    } t | |  i i  |  i d | | i    d  S(   Ns   setup-requirements(   R   R   R/   t   setup_requiresRU   R   (   R   R   R*   RS   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   write_setup_requirements  s    	c         C   sm   t  i g  } |  i i   D] } | | i d d  d q ~  } |  i d | d i t |   d  d  S(   Nt   .i   i    s   top-level namess   
(   R(   t   fromkeysR/   t   iter_distribution_namest   splitRN   R@   R   (   R   R   R*   R   t   kt   pkgs(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   write_toplevel_names  s    6c         C   s   t  |  | | t  d  S(   N(   t	   write_argR   (   R   R   R*   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   overwrite_arg  s    c         C   si   t  i i |  d } t |  i | d   } | d  j	 o d i |  d } n |  i | | | |  d  S(   Ni    s   
(   R<   R?   t   splitextR   R/   R   R@   RU   (   R   R   R*   RT   t   argnamet   value(    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyR     s
    c         C   s   |  i  i } t | t  p | d  j o
 | } n | d  j	 o g  } x t | i    D]m \ } } t | t  p: t i | |  } d i	 t t
 t | i      } n | i d | | f  qY Wd i	 |  } n |  i d | | t  d  S(   Ns   
s	   [%s]
%s

R-   s   entry points(   R/   t   entry_pointsR2   R   R   R   t   itemsR   t   parse_groupR@   R   Rr   R+   R   RU   R   (   R   R   R*   Rh   RS   t   sectionR   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   write_entries  s    
 (c          C   sr   t  i i d  o[ t d d  }  x; |  D]3 } t i d |  } | o t | i d   Sq) W|  i   n d S(   Ns   PKG-INFOt   rUs   Version:.*-r(\d+)\s*$i   i    (	   R<   R?   RO   RZ   R   t   matcht   intt   groupR\   (   R]   R   R   (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   get_pkg_info_revision  s     (2   R   t   distutils.filelistR    t	   _FileListt   distutils.utilR   R7   R   t   distutils.errorsR<   R   R   t   setuptools_svnR   t   ImportErrort
   setuptoolsR   t   setuptools.command.sdistR   t   setuptools.compatR   R   R   R	   t   pkg_resourcesR
   R   R   R   R   R   R   R   t   setuptools.unicode_utilsR   R   R   Rv   RN   R   R   R   R   R   R   R   R!   R   R   R   (    (    (    s?   /usr/lib/python2.6/site-packages/setuptools/command/egg_info.pyt   <module>   sB   :0\							
		