JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbra XC?h=J@sddlZddlZddlmZddlmZddlmZddlmZddlm Z ddlm Z ddl m Z dd l mZdd lmZdd lmZdd lmZmZd dZGdddeZdS)N)glob)warn)Command)dir_util) file_util) archive_util)TextFile)FileList)log) convert_path)DistutilsTemplateErrorDistutilsOptionErrorcCs`ddlm}ddlm}g}|D] }|d|d||dfq$|||ddS)Nr) FancyGetopt)ARCHIVE_FORMATSformats=z.List of available source distribution formats:)Zdistutils.fancy_getoptrZdistutils.archive_utilrkeysappendsortZ print_help)rrformatsformatrt|_|D]}||q||jr2dS|dSr)r filelistZget_sub_commandsZ run_command get_file_listr5make_distribution)rZcmd_namerrrruns  z sdist.runcCs*tdt|jd}||dS)Nzadistutils.command.sdist.check_metadata is deprecated, use the check command insteadr0)rPendingDeprecationWarning distributionZget_command_objZensure_finalizedr@)rr0rrrcheck_metadatas  zsdist.check_metadatacCstj|j}|s:|r:||j|jdS|sN| d|j|j |j rf| |rr| |jr||j|j|dS)Nz?manifest template '%s' does not exist (using default file list))ospathisfiler2_manifest_is_not_generated read_manifestr=rZremove_duplicatesrfindallr4 add_defaults read_templater$prune_file_listwrite_manifest)rZtemplate_existsrrrr>s(      zsdist.get_file_listcCs<|||||||dSr)_add_defaults_standards_add_defaults_optional_add_defaults_python_add_defaults_data_files_add_defaults_ext_add_defaults_c_libs_add_defaults_scriptsrrrrrJszsdist.add_defaultscCs:tj|sdStj|}tj|\}}|t|vS)NF)rDrEexistsabspathsplitlistdir)fspathrVZ directoryfilenamerrr_cs_path_existss  zsdist._cs_path_existscCs|j|jjg}|D]~}t|trj|}d}|D]"}||r,d}|j|qPq,|s|dd |q||r|j|q|d|qdS)NFTz,standard file not found: should have one of z, zstandard file '%s' not found) READMESrBZ script_name isinstancetupler[r=rrjoin)rZ standardsfnZaltsZgot_itrrrrNs"    zsdist._add_defaults_standardscCs4ddg}|D]"}ttjjt|}|j|q dS)Nz test/test*.pyz setup.cfg)filterrDrErFrr=extend)rZoptionalpatternfilesrrrrOszsdist._add_defaults_optionalcCs\|d}|jr$|j||jD],\}}}}|D]}|jtj ||q:q*dS)Nbuild_py) get_finalized_commandrBZhas_pure_modulesr=rbget_source_files data_filesrrDrEr_)rreZpkgZsrc_dirZ build_dir filenamesrZrrrrPs   zsdist._add_defaults_pythoncCsz|jrv|jjD]b}t|trBt|}tj|rt|j |q|\}}|D]$}t|}tj|rN|j |qNqdSr) rBZhas_data_filesrhr]strr rDrErFr=r)ritemdirnamerir)rrrrQ$s     zsdist._add_defaults_data_filescCs(|jr$|d}|j|dS)N build_ext)rBZhas_ext_modulesrfr=rbrg)rrmrrrrR5s  zsdist._add_defaults_extcCs(|jr$|d}|j|dS)N build_clib)rBZhas_c_librariesrfr=rbrg)rrnrrrrS:s  zsdist._add_defaults_c_libscCs(|jr$|d}|j|dS)N build_scripts)rBZ has_scriptsrfr=rbrg)rrorrrrT?s  zsdist._add_defaults_scriptsc Cstd|jt|jddddddd}zr|}|dur:qz|j|Wq(ttfy}z$| d|j |j |fWYd}~q(d}~00q(W| n | 0dS)Nzreading manifest template '%s'r1)Zstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_wsZ collapse_joinz%s, line %d: %s) r infor2rreadliner=Zprocess_template_liner ValueErrorrrZZ current_lineclose)rr2linemsgrrrrKDs"  "zsdist.read_templatecCsz|d}|j}|jjd|jd|jjd|dtjdkrFd}nd}gd}d|d||f}|jj|d d dS) Nbuild)prefixZwin32z/|\\/)ZRCSZCVSz\.svnz\.hgz\.gitz\.bzrZ_darcsz(^|%s)(%s)(%s).*|r1)Zis_regex) rfrB get_fullnamer=Zexclude_patternZ build_basesysplatformr_)rrvbase_dirZsepsZvcs_dirsZvcs_ptrnrrrrLas   zsdist.prune_file_listcCsX|rtd|jdS|jjdd}|dd|tj |j|fd|jdS)Nz5not writing to manually maintained manifest file '%s'rz*# file GENERATED by distutils, do NOT editzwriting manifest file '%s') rGr rpr3r=rdinsertZexecuterZ write_file)rZcontentrrrrMys zsdist.write_manifestcCsDtj|jsdSt|j}z|}W|n |0|dkS)NFz+# file GENERATED by distutils, do NOT edit )rDrErFr3openrqrs)rfpZ first_linerrrrGs  z sdist._manifest_is_not_generatedcCsjtd|jt|j>}|D](}|}|ds|s:q|j|qWdn1s\0YdS)Nzreading manifest file '%s'#)r rpr3rstrip startswithr=r)rr3rtrrrrHs zsdist.read_manifestcCs||tj|||jdttdr4d}d|}n d}d|}|sPtdn t||D]<}tj |s|td|q^tj ||}|j |||dq^|j j|dS) Ndry_runlinkZhardzmaking hard links in %s...zcopying files to %s...z)no files to distribute -- empty manifest?z#'%s' not a regular file -- skipping)r)ZmkpathrZ create_treerhasattrrDr rrprErFr_Z copy_filerBmetadataZwrite_pkg_info)rr}rdrrufiledestrrrmake_release_trees      zsdist.make_release_treecCs|j}tj|j|}|||jjg}d|j vrT|j |j |j d|j D]:}|j ||||j|jd}| ||jj dd|fqZ||_|jstj||jddS)NZtar)r}r9r:rr)rBrzrDrEr_r7rr=rdrrpopindexZ make_archiver9r:Z dist_filesr8r6rZ remove_treer)rr}Z base_namer8Zfmtrrrrr?s     zsdist.make_distributioncCs|jSr)r8rrrrget_archive_filesszsdist.get_archive_files)#__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsZ negative_optZ sub_commandsr\r;r<r@rCr>rJ staticmethodr[rNrOrPrQrRrSrTrKrLrMrGrHrr?rrrrrr$sH' (  *r)rDr{rwarningsrZdistutils.corerZ distutilsrrrZdistutils.text_filerZdistutils.filelistr r Zdistutils.utilr Zdistutils.errorsr r rrrrrrs