ž Ÿ/{Yð7c@s¥dZddlZddlZddlZddlmZddlZddlmZddl m Z ddl m Z ddlm Z ddlmZdd lmZdd lmZmZmZmZmZmZmZmZdd l mZGd d „d eƒZGdd„deƒZGdd„de ƒZdd„Zdd„Z dd„Z!dd„Z"dd„Z#dd„Z$d$dd„Z&d d!„Z'd"d#„Z(dS(%uUsetuptools.command.egg_info Create a distribution's .egg-info directory and contentsiN(uCommand(ulog(usdist(u basestring(u svn_utils(u convert_path(uFileList(uparse_requirementsu safe_nameu parse_versionu safe_versionu yield_linesu EntryPointuiter_entry_pointsu to_filename(u walk_revctrlcBsë|EeZdZdZd-d.d/d0d1d2gZddgZidd6dd6Zdd„Zdd„Zdd„Z d3dd„Z dd„Z dd„Z d d!„Zd"d#„Zd$d%„Zed&d'„ƒZd(d)„Zd*d+„Zd,S(4uegg_infou+create a distribution's .egg-info directoryu egg-base=ueuLdirectory containing .egg-info directories (default: top of the source tree)utag-svn-revisionuru,Add subversion revision ID to version numberutag-dateudu0Add date stamp (e.g. 20050528) to version numberu tag-build=ubu-Specify explicit tag to add to version numberuno-svn-revisionuRu*Don't add subversion revision ID [default]uno-dateuDu"Don't include date stamp [default]cCsUd|_d|_d|_d|_d|_d|_d|_d|_ d|_ dS(NiF( uNoneuegg_nameu egg_versionuegg_baseuegg_infou tag_buildutag_svn_revisionutag_dateuFalseubroken_egg_infouvtags(uself((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyuinitialize_options)s        uegg_info.initialize_optionsc CsKddlm}tdtddddd|jƒƒƒ}|||ƒdS(Ni(u edit_configuegg_infoutag_svn_revisionutag_dateu tag_build(usetuptools.command.setoptu edit_configudictutags(uselfufilenameu edit_configuvalues((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyusave_version_info4suegg_info.save_version_infoc Cs²t|jjƒƒ|_|jƒ|_|jƒ|_y$tt d|j|jfƒƒWn4t k rt j j d|j|jfƒ‚YnX|jdkrÍ|jj}|pµijdtjƒ|_n|jdƒt|jƒd|_|jtjkr#tjj|j|jƒ|_nd|jkr?|jƒn|j|jj_|jj}|dk r®|j|jjƒkr®|j|_t |jƒ|_!d|j_ndS(Nu%s==%su2Invalid distribution name or version syntax: %s-%suuegg_baseu .egg-infou-("u safe_nameu distributionuget_nameuegg_nameutagsuvtagsutagged_versionu egg_versionulistuparse_requirementsu ValueErroru distutilsuerrorsuDistutilsOptionErroruegg_baseuNoneu package_dirugetuosucurdiruensure_dirnameu to_filenameuegg_infoupathujoinucheck_broken_egg_infoumetadatauversionu _patched_distukeyuloweru_versionu parse_versionu_parsed_version(uselfudirsupd((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyufinalize_options?s2!   ! !  $ uegg_info.finalize_optionscCsl|r|j|||ƒnLtjj|ƒrh|dkrX| rXtjd||ƒdS|j|ƒndS(u¹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). u$%s not set in setup(), but %s existsN(u write_fileuosupathuexistsuNoneuloguwarnu delete_file(uselfuwhatufilenameudatauforce((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyuwrite_or_delete_filegs  uegg_info.write_or_delete_filecCsjtjd||ƒtjdkr4|jdƒ}n|jsft|dƒ}|j|ƒ|jƒndS(uª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. uwriting %s to %siuutf-8uwbN(i( uloguinfousysu version_infouencodeudry_runuopenuwriteuclose(uselfuwhatufilenameudatauf((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyu write_file{s  uegg_info.write_filecCs-tjd|ƒ|js)tj|ƒndS(u8Delete `filename` (if not a dry run) after announcing itu deleting %sN(uloguinfoudry_runuosuunlink(uselfufilename((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyu delete_file‰s uegg_info.delete_filecCsE|jjƒ}|jr4|j|jƒr4t|ƒSt||jƒS(N(u distributionu get_versionuvtagsuendswithu safe_version(uselfuversion((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyutagged_versions uegg_info.tagged_versioncCsµ|j|jƒ|jj}xNtdƒD]@}|jd|ƒ}|||jtjj |j|jƒƒq)Wtjj |jdƒ}tjj |ƒr§|j |ƒn|j ƒdS(Nuegg_info.writersu installerunative_libs.txt( umkpathuegg_infou distributionufetch_build_egguiter_entry_pointsuloadunameuosupathujoinuexistsu delete_fileu find_sources(uselfu installeruepuwriterunl((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyurun—s ,u egg_info.runcCs’d}|jr||j7}n|jrctjjdƒsLtjjdƒrc|d|jƒ7}n|jrŽddl}||jdƒ7}n|S(Nuu.svnuPKG-INFOu-r%siu-%Y%m%d( u tag_buildutag_svn_revisionuosupathuexistsuget_svn_revisionutag_dateutimeustrftime(uselfuversionutime((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyutags¥s  $  u egg_info.tagscCsttjjtjƒjƒƒS(N(ustru svn_utilsuSvnInfouloaduosucurdiru get_revision(((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyuget_svn_revision±suegg_info.get_svn_revisioncCsJtjj|jdƒ}t|jƒ}||_|jƒ|j|_dS(u"Generate SOURCES.txt manifest fileu SOURCES.txtN( uosupathujoinuegg_infoumanifest_makeru distributionumanifesturunufilelist(uselfumanifest_filenameumm((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyu find_sourcesµs   uegg_info.find_sourcescCsŽ|jd}|jtjkr:tjj|j|ƒ}ntjj|ƒrŠtjddddd||j ƒ|j |_ ||_ ndS(Nu .egg-infou-iNu¦ 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. ( uegg_nameuegg_baseuosucurdirupathujoinuexistsuloguwarnuegg_infoubroken_egg_info(uselfubei((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyucheck_broken_egg_info½s   uegg_info.check_broken_egg_infoN(u egg-base=ueuLdirectory containing .egg-info directories (default: top of the source tree)(utag-svn-revisionuru,Add subversion revision ID to version number(utag-dateudu0Add date stamp (e.g. 20050528) to version number(u tag-build=ubu-Specify explicit tag to add to version number(uno-svn-revisionuRu*Don't add subversion revision ID [default](uno-dateuDu"Don't include date stamp [default]F(u__name__u __module__u __qualname__u descriptionu user_optionsuboolean_optionsu negative_optuinitialize_optionsusave_version_infoufinalize_optionsuFalseuwrite_or_delete_fileu write_fileu delete_fileutagged_versionurunutagsu staticmethoduget_svn_revisionu find_sourcesucheck_broken_egg_info(u __locals__((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyuegg_infos0     (      uegg_infocBs&|EeZdZdZdd„ZdS(uFileListu@File list that accepts only existing, platform-independent pathsc Cs |jdƒr"|dd…}nt|ƒ}tjdkràyDtjj|ƒsmtjj|jdƒƒr€|jj |ƒnWqt k rÜtjj|jdƒƒr¿|jj |ƒnt j d|tj ƒƒYqXn%tjj|ƒr|jj |ƒndS(Nu iiuutf-8u!'%s' not %s encodable -- skippingiÿÿÿÿ(i(uendswithu convert_pathusysu version_infouosupathuexistsuencodeufilesuappenduUnicodeEncodeErroruloguwarnugetfilesystemencoding(uselfuitemupath((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyuappendÏs -  uFileList.appendN(u__name__u __module__u __qualname__u__doc__uappend(u __locals__((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyuFileListÌsuFileListcBsn|EeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dS(umanifest_makeru MANIFEST.incCs(d|_d|_d|_d|_dS(Ni(u use_defaultsupruneu manifest_onlyuforce_manifest(uself((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyuinitialize_optionsès   u!manifest_maker.initialize_optionscCsdS(N((uself((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyufinalize_optionsîsumanifest_maker.finalize_optionscCs™tƒ|_tjj|jƒs.|jƒn|jjƒ|jƒtjj|j ƒrg|j ƒn|j ƒ|jj ƒ|jj ƒ|jƒdS(N(uFileListufilelistuosupathuexistsumanifestuwrite_manifestufindallu add_defaultsutemplateu read_templateuprune_file_listusorturemove_duplicates(uself((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyurunñs        umanifest_maker.runc Cs×tjd krg}xX|jjD]J}y|jdƒWn#tk r^tjd|ƒYq"X|j|ƒq"W||j_n|jj}t j dkr°dd„|Dƒ}n|j t |j |fd|j ƒdS( u²Write the file list in 'self.filelist' (presumably as filled in by 'add_defaults()' and 'read_template()') to the manifest file named by 'self.manifest'. iuutf-8u$'%s' not UTF-8 encodable -- skippingu/cSs%g|]}|jtjdƒ‘qS(u/(ureplaceuosusep(u.0uf((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyu s u1manifest_maker.write_manifest..uwriting manifest file '%s'N(i(usysu version_infoufilelistufilesuencodeuUnicodeEncodeErroruloguwarnuappenduosusepuexecuteu write_fileumanifest(uselfufilesufile((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyuwrite_manifestþs  umanifest_maker.write_manifestcCs&|jdƒs"tj||ƒndS(Nustandard file not found:(u startswithusdistuwarn(uselfumsg((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyuwarnsumanifest_maker.warncCs©tj|ƒ|jj|jƒ|jj|jƒttƒƒ}|r[|jj|ƒn"t j j |jƒr}|j ƒn|j dƒ}|jjdd|jƒdS(Nuegg_infou*uprefix(usdistu add_defaultsufilelistuappendutemplateumanifestulistu walk_revctrluextenduosupathuexistsu read_manifestuget_finalized_commanduinclude_patternuegg_info(uselfurcfilesuei_cmd((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyu add_defaultss  umanifest_maker.add_defaultscCs|jdƒ}|jjƒ}|jjdd|jƒ|jjdd|ƒtjt j ƒ}|jj|d|ddƒdS(Nubuilduprefixu(RCS|CVS|\.svn)uis_regexi( uget_finalized_commandu distributionu get_fullnameufilelistuexclude_patternuNoneu build_baseureuescapeuosusep(uselfubuildubase_dirusep((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyuprune_file_list%s umanifest_maker.prune_file_listN( u__name__u __module__u __qualname__utemplateuinitialize_optionsufinalize_optionsurunuwrite_manifestuwarnu add_defaultsuprune_file_list(u __locals__((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyumanifest_makeräs     umanifest_makercCsZdj|ƒ}tjdkr0|jdƒ}nt|dƒ}|j|ƒ|jƒdS(u{Create a file with the specified name and write 'contents' (a sequence of strings without line terminators) to it. u iuutf-8uwbN(i(ujoinusysu version_infouencodeuopenuwriteuclose(ufilenameucontentsuf((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyu write_file.s  u write_filec Cs»tjd|ƒ|js·|jj}|j|j|_}|j|j|_}z|j |j ƒWd|||_|_Xt |jddƒ}ddl m}|j|j |ƒndS(Nu writing %suzip_safei(u bdist_egg(uloguinfoudry_runu distributionumetadatau egg_versionuversionuegg_nameunameuwrite_pkg_infouegg_infougetattruNoneusetuptools.commandu bdist_egguwrite_safety_flag(ucmdubasenameufilenameumetadatauoldveruoldnameusafeu bdist_egg((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyuwrite_pkg_info9s  uwrite_pkg_infocCs&tjj|ƒr"tjdƒndS(NusWARNING: 'depends.txt' is not used by setuptools 0.6! Use the install_requires/extras_require setup() args instead.(uosupathuexistsuloguwarn(ucmdubasenameufilename((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyuwarn_depends_obsoleteJsuwarn_depends_obsoletec Cs–|j}djt|jpfƒƒg}xI|jp9ijƒD]2\}}|jd|djt|ƒƒfƒq@W|jd|dj|ƒƒdS(Nu u [%s] %su requirementsu(u distributionujoinu yield_linesuinstall_requiresuextras_requireuitemsuappenduwrite_or_delete_file(ucmdubasenameufilenameudistudatauextraureqs((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyuwrite_requirementsRs  !"*uwrite_requirementscCsItjdd„|jjƒDƒƒ}|jd|dj|ƒdƒdS(NcSs&g|]}|jddƒd‘qS(u.ii(usplit(u.0uk((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyu \s u(write_toplevel_names..utop-level namesu (udictufromkeysu distributionuiter_distribution_namesu write_fileujoin(ucmdubasenameufilenameupkgs((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyuwrite_toplevel_namesYs uwrite_toplevel_namescCst|||dƒdS(NT(u write_arguTrue(ucmdubasenameufilename((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyu overwrite_argcsu overwrite_argcCsgtjj|ƒd}t|j|dƒ}|dk rMdj|ƒd}n|j||||ƒdS(Niu (uosupathusplitextugetattru distributionuNoneujoinuwrite_or_delete_file(ucmdubasenameufilenameuforceuargnameuvalue((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyu write_argfs  u write_argcCsä|jj}t|tƒs'|dkr0|}nš|dk rÊg}xs|jƒD]e\}}t|tƒstj||ƒ}djt t |j ƒƒƒ}n|j d||fƒqOWdj|ƒ}n|j d||dƒdS(Nu u [%s] %s uu entry pointsT(u distributionu entry_pointsu isinstanceu basestringuNoneuitemsu EntryPointu parse_groupujoinumapustruvaluesuappenduwrite_or_delete_fileuTrue(ucmdubasenameufilenameuepudatausectionucontents((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyu write_entriesms   !u write_entriescCsntjjdƒrjtddƒ}x9|D]1}tjd|ƒ}|r(t|jdƒƒSq(W|jƒndS(NuPKG-INFOurUuVersion:.*-r(\d+)\s*$ii( uosupathuexistsuopenureumatchuintugroupuclose(ufulineumatch((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyuget_pkg_info_revision}s  uget_pkg_info_revisionF()u__doc__uosureusysu setuptoolsuCommandudistutils.errorsu distutilsulogusetuptools.command.sdistusdistusetuptools.compatu basestringu svn_utilsudistutils.utilu convert_pathudistutils.filelistuFileListu _FileListu pkg_resourcesuparse_requirementsu safe_nameu parse_versionu safe_versionu yield_linesu EntryPointuiter_entry_pointsu to_filenameu walk_revctrluegg_infoumanifest_makeru write_fileuwrite_pkg_infouwarn_depends_obsoleteuwrite_requirementsuwrite_toplevel_namesu overwrite_arguFalseu write_argu write_entriesuget_pkg_info_revision(((u4/tmp/pip-jy811g-build/setuptools/command/egg_info.pyus2    :¶J