
 X2!                 @   s   d  d l  Z  d  d l Z d  d l 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 d
 d d  Z Gd d   d e  Z d
 d d  Z e d e j d e j   e j g Z Gd d   d e  Z d S)    N)glob)sdist)convert_path)log)	svn_utilsREADME
README.rst
README.txt c             c   s@   x9 t  j d  D]( } x | j   |   D] } | Vq) Wq Wd S)z%Find all files under revision controlzsetuptools.file_findersN)pkg_resourcesiter_entry_pointsload)dirnameepitem r   J/home/ubuntu/projects/ifolica/build/setuptools/setuptools/command/sdist.pywalk_revctrl   s    r   c               @   sL   e  Z d  Z d Z d d   d d  Z d d   Z d d	 d
  Z e Z d S)	re_finderzc
    Finder that locates files based on entries in a file matched by a
    regular expression.
    c             C   s   |  S)Nr   )xr   r   r   <lambda>   s    zre_finder.<lambda>c             C   s%   | |  _  | |  _ t |  |  _ d  S)N)patternpostprocr   entries_path)selfpathr   r   r   r   r   __init__   s    		zre_finder.__init__c             c   s}   t  | d  } z | j   } Wd  | j   XxI |  j j |  D]5 } | j d  } |  j |  } t j | |  Vq@ Wd  S)NrU   )	openreadcloser   finditergroupr   r   joinpath)r   r   filenamefdatamatchr   r   r   r   _finder"   s    zre_finder._finderr
   c             c   s   t  j | |  j  } t j j |  s+ d  Sxh |  j | |  D]T } t j j |  r^ | Vq> t j j |  r> x |  j |  D] } | Vq Wq> q> Wd  S)N)	r   r$   r   osr   isfiler)   isdirfind)r   r   r   r   r   r   r   r-   /   s    zre_finder.findN)__name__
__module____qualname____doc__r   r)   r-   __call__r   r   r   r   r      s
   r   c             c   s1   x* t  D]" } x | |   D] } | Vq Wq Wd S)zPrimary svn_cvs entry pointN)finders)r   finderr   r   r   r   _default_revctrl>   s    r5   zCVS/Entriesz^\w?/([^/]+)/c               @   s   e  Z d  Z d Z d  d d d d f d! g Z i  Z d d   Z d d   Z e j	 d" k  p d# e j	 k ou d$ k  n p d% e j	 k o d& k  n Z
 e
 r e Z n  d d   Z d d   Z d d   Z d d   Z d d   Z d S)'r   z=Smart sdist that finds anything supported by revision controlformats=N6formats for source distribution (comma-separated list)z	keep-tempkz1keep the distribution tree around after creating zarchive file(s)	dist-dir=dFdirectory to put the source distribution archive(s) in [default: dist]c             C   s  |  j  d  |  j d  } | j |  _ |  j j t j j | j d   |  j   x! |  j	   D] } |  j  |  qa Wd d  l
 } d | j j k r |  j   n  |  j   t |  j d g   } x< |  j D]1 } d d | f } | | k r | j |  q q Wd  S)Negg_infozSOURCES.txtr   check
dist_filesr   r
   )run_commandget_finalized_commandfilelistappendr*   r   joinr<   check_readmeget_sub_commandsdistutils.commandcommand__all__Zcheck_metadataZmake_distributiongetattrdistributionZarchive_files)r   Zei_cmdcmd_name	distutilsr>   filer'   r   r   r   run[   s     "

z	sdist.runc          	   C   sD   y t  j |   Wn, t j   d j j j d j     Yn Xd  S)N   template)_sdistread_templatesysexc_infotb_nexttb_framef_localsr!   )r   r   r   r   Z__read_template_hackt   s
    !zsdist.__read_template_hackrO         r   r      c                s`  t  |  j j g } x | D] } t | t  r | } d } x: | D]2 } t j j |  rA d } |  j j	 |  PqA qA W| s |  j
 d d j |   q q t j j |  r |  j j	 |  q |  j
 d |  q Wd d g } xH | D]@ } t t t j j t |    } | r |  j j |  q q W|  j j   r|  j d  } |  j j | j    |  j j sxC | j D]5 \ }	   }	 }
 |  j j   f d	 d
   |
 D  qxWqn  |  j j   r|  j d  } |  j j | j    n  |  j j   r%|  j d  } |  j j | j    n  |  j j   r\|  j d  } |  j j | j    n  d  S)Nr   r   z,standard file not found: should have one of z, zstandard file '%s' not foundztest/test*.pyz	setup.cfgbuild_pyc                s%   g  |  ] } t  j j   |   q Sr   )r*   r   rC   ).0r%   )src_dirr   r   
<listcomp>   s   	z&sdist.add_defaults.<locals>.<listcomp>	build_ext
build_clibbuild_scripts)READMESrJ   script_name
isinstancetupler*   r   existsrA   rB   warnrC   listfilterr+   r   extendhas_pure_modulesr@   Zget_source_filesZinclude_package_data
data_fileshas_ext_moduleshas_c_librarieshas_scripts)r   Z	standardsfnZaltsZgot_itoptionalr   filesr[   _	filenamesr_   r`   ra   r   )r]   r   add_defaults   sL    	!zsdist.add_defaultsc             C   sE   x> t  D] } t j j |  r d  Sq W|  j d d j t    d  S)Nz,standard file not found: should have one of z, )rb   r*   r   rf   rg   rC   )r   r&   r   r   r   rD      s
    zsdist.check_readmec             C   s   t  j |  | |  t j j | d  } t t d  ri t j j |  ri t j |  |  j d |  n  |  j	 d  j
 |  d  S)Nz	setup.cfglinkr<   )rQ   make_release_treer*   r   rC   hasattrrf   unlink	copy_filer@   Zsave_version_info)r   base_dirrr   destr   r   r   rw      s    !zsdist.make_release_treec          
   C   sY   t  j j |  j  s d St |  j d  } z | j   } Wd  | j   X| d j   k S)NFrbUz+# file GENERATED by distutils, do NOT edit
)r*   r   r+   manifestr   readliner!   encode)r   fp
first_liner   r   r   _manifest_is_not_generated   s    z sdist._manifest_is_not_generatedc             C   s   t  j d |  j  t |  j d  } x | D] } t j d k r y | j d  } Wq t k
 r| t  j d |  w, Yq Xn  | j	   } | j
 d  s, | r q, n  |  j j |  q, W| j   d S)	zRead the manifest file (named by 'self.manifest') and use it to
        fill in 'self.filelist', the list of files to include in the source
        distribution.
        zreading manifest file '%s'r}   rY   zUTF-8z"%r not UTF-8 decodable -- skipping#N)rY   )r   infor~   r   rS   version_infodecodeUnicodeDecodeErrorrg   strip
startswithrA   rB   r!   )r   r~   liner   r   r   read_manifest   s    zsdist.read_manifest)r6   Nr7   )r9   r:   r;   )rO   rX   rO   )rY   r   )rY   r   rZ   )rY   rO   )rY   rO   r   )r.   r/   r0   r1   user_optionsnegative_optrN   Z_sdist__read_template_hackrS   r   Zhas_leaky_handlerR   ru   rD   rw   r   r   r   r   r   r   r   K   s*     		5	r   )r   r   r	   )r*   rerS   r   r   Zdistutils.command.sdistr   rQ   distutils.utilr   rL   r   
setuptoolsr   rb   r   objectr   r5   compileMZ
svn_finderr3   r   r   r   r   <module>   s   '