/{Yc@s?ddlZddlZddlZddlmZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddlmZyddlZWn ek rddljZnXddlmZmZeedddZdZd Zd Zd Zd ZeZ dd Z!dZ"ddZ#dZ$dZ%de&fdYZ'de'fdYZ(de(fdYZ)de'fdYZ*ddZ+de&fdYZ,de,fdYZ-d e,fd!YZ.e/d"kr;x#e+ej0d#D] Z1e1GHq)WndS($iN(tlog(tunicode(tunescape(tPopentPIPEic Csly;t|d|d|dtjdk}|j|}Wntk rOdSXt||}|j|fS(Ntstdouttstderrtshelltwin32it(iR (t_Popentsystplatformt communicatetOSErrortdecode_as_stringt returncode(targsRRtencodingtstreamtproctdata((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyt _run_commands cCsK|jdd}djg|jD]!}|j|jkr#|j^q#S(NtscheduleiR (tgetElementsByTagNametjoint childNodestnodeTypet TEXT_NODEt nodeValue(tentryRtt((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyt_get_entry_schedule0s  cCsK|jdd}djg|jD]!}|j|jkr#|j^q#S(NtpropertyiR (RRRRRR(ttargett property_textR((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyt_get_target_property7s  cCs+tjdkr!|jd}n|}|S(Niisutf-8(ii(R t version_infotencode(t decoded_strR((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyt _get_xml_data>scGs6| s|dkr#tjj|Stjj||S(Nt.(tostpathR(tprefixtsuffix((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pytjoinpathGscCsyLtj}| s"|dkr5tjd}n|rKtj|nWn tjtfk rnd}nXtj dk}|sddg|S|j dr|rdS|SdS(NsUS-ASCIIitdarwinsutf-8smac-( tlocaletgetpreferredencodingtgetdefaultlocaletcodecstlookuptErrort LookupErrortNoneR R t startswith(Rtis_osx((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pytdetermine_console_encodingLs  cCsL|dkrt}nt|ts6|j|}ntjd|}|S(s Decode the console or file output explicitly using getpreferredencoding. The text paraemeter should be a encoded string, if not no decode occurs If no encoding is given, getpreferredencoding is used. If encoding is specified, that is used instead. This would be needed for SVN --xml output. Unicode is explicitly put in composed NFC form. --xml should be UTF-8 (SVN Issue 2938) the discussion on the Subversion DEV List from 2007 seems to indicate the same. tNFCN(R7t_console_encodingt isinstanceRtdecodet unicodedatat normalize(ttextR((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRis  cCstjjjt|}t}x||D]t\}}|dkr+|jdkr+|j|t|j ds|j |j d|j dfqq+q+W|dS(s+Parse the entries from a recursive info xmlt START_ELEMENTRtdeleteR+tkindi( txmltdomtpulldomt parseStringR(tlisttnodeNamet expandNodeR R8tappendt getAttribute(R'tdoctentriesteventtnode((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pytparse_dir_entriess  R c Cstjj|}tjj|}tjjjt|}t }x|D]\}}|dkrO|j dkrO|j |tjj|j d}tjj|j |r|t|d}nt|}x-t|D]}|jt||qWqOqOW|S(s!Parse a propget svn:externals xmlRBR"R+i(R*R+tnormpathtnormcaseRERFRGRHR(RIRJRKRMR8tlenR$tparse_external_propRLR.( R'R,RNt externalsRPRQR+Rtexternal((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pytparse_externals_xmls   !cCsg}x|jD]}|j}|s1qntjdkrR|jd}ntj|}tjdkrg|D]}|jd^qw}ntj |ddr|d}n |d}t |dd}|j t j j|qW|S(s Parse the value of a retrieved svn:externals entry. possible token setups (with quotng and backscaping in laters versions) URL[@#] EXT_FOLDERNAME [-r#] URL EXT_FOLDERNAME EXT_FOLDERNAME [-r#] URL iisutf-8iR(ii(ii(t splitlinestlstripR R%R&tshlextsplitR>turlparseturlsplitRRLR*R+RS(tlinesRWtlinetxRX((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRVs  %  c Cst}t|d}d}zxt|jdD]}|j}t|dkr1|\}}|jt|}|dkr||krt}q|dkr|rPqq1q1WWd|j X|S(NtrtR itKtV( tFalsetopentitertreadlineR]RUtreadtinttTruetclose( tfilenametkeytfoundtfRRatpartsRDtlength((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pytparse_prop_files    tSvnInfocBseZdZedZejdejZe ddZ ddZ dZ e dZe dZd Zd Zed Zd Zd ZRS(s Generic svn_info object. No has little knowledge of how to extract information. Use cls.load to instatiate according svn version. Paths are not filesystem encoded. cCs?tdddg\}}|dkr7|r7|jSdSdS(Ntsvns --versions--quietiR (Rtstrip(tcodeR((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pytget_svn_versions s!(?:([\-0-9]+):)?(\d+)([a-z]*)\s*$R c Cs^tjj|}tdd|g\}}tjj|d}tjjtjj|dptjjtjj|dptjjtjj|d}t|jjd}ytd|d D}Wnt k rt}nX|s t |S|s$| s$|dkr>t j d t t|S|dkrTt|St|S(NRvtinfos.svnROs dir-propss dir-prop-baseR)css|]}t|VqdS(N(Rk(t.0Rb((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pys siiis?No SVN 1.3+ command found: falling back on pre 1.7 .svn parsingi(ii(ii(R*R+RSRRtisfilettupleRyR]t ValueErrorRutwarningstwarntDeprecationWarningt SvnFileInfot Svn13Infot Svn15Info( tclstdirnametnormdirRxRtsvn_dirthas_svnt svn_versiontbase_svn_version((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pytloads(!!!       cCs||_d|_d|_dS(N(R+R7t_entriest _externals(tselfR+((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyt__init__s  cCshtdd|jg\}}|r5tjddS|jj|}|r`t|jdSdSdS(s<Retrieve the directory revision informatino using svnversiont svnversions-cssvnversion failediiN(RR+RRt revision_retmatchRktgroup(RRxRtparsed((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyt get_revisions cCs(|jdkr!|j|_n|jS(N(RR7t get_entries(R((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRO(scCs(|jdkr!|j|_n|jS(N(RR7t get_externals(R((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRW.sccsx|jD] }|Vq WdS(sR Iterate over the svn:external references in the repository path. N(RW(Rtitem((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pytiter_externals4sccs8x1|jD]&\}}|jdkr |Vq q WdS(sR Iterate over the non-deleted file entries in the repository path tfileN(ROtlower(RRRD((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyt iter_files;sccsI|r|jVnx1|jD]&\}}|jdkr|VqqWdS(sR Iterate over the non-deleted file entries in the repository path tdirN(R+ROR(Rt include_rootRRD((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyt iter_dirsCs  cCsgS(N((R((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRMscCsgS(N((R((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRPs(t__name__t __module__t__doc__t staticmethodRytretcompiletIRt classmethodRRRR!RORWRRRlRRR(((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRus      RcBseZdZdZRS(cCsKtdddd|jgdd\}}|rAtjdgSt|S(NRvRzs-Rs--xmlRsutf-8ssvn info failed(RR+RtdebugRR(RRxR((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRUs  cCsdddg}g}x|jD]}t||gdd\}}|dkrdtjdgSxKt|D]=}|rtjj||}n|jtjj |qqWq"W|S(NRvtpropgets svn:externalsRsutf-8issvn propget failed( RRRRRVR*R+RRLRS(RtcmdtresulttfolderRxR`RX((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyR_s  !(RRRR(((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRTs RcBseZdZRS(cCsiddd|jddg}t|dd\}}|rJtjdgSt|d tjj|jS( NRvRs svn:externalss-Rs--xmlRsutf-8ssvn propget failedR,(R+RRRRYR*tabspath(RRRxR`((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRss  (RRR(((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRrsRcBsAeZddZdZdZdZdZdZRS(R cCs,tt|j|d|_d|_dS(N(tsuperRRR7t _directoriest _revision(RR+((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyR~s ccst|dd}tjj|rtj|}|t|jfVx|jD]x}t |}t||}tjj|r|t dfVqTtjj |rTx|j |D] }|VqWqTqTWndS(Ns.svnRO(R.R*R+R|tSVNEntriesFileRRftparse_revisiontget_undeleted_recordsRRlR7tisdirt _walk_svn(Rtbaset entry_fileROR+R((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRs cCst}d}xa|j|jD]M\}}}|rM|j|dfq"|j|dft||}q"W||_||_dS(NiRR(RIRR+RLtmaxRR(RROtrevR+R|tdir_rev((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyt_build_entriess " cCs#|jdkr|jn|jS(N(RR7R(R((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRs cCs#|jdkr|jn|jS(N(RR7R(R((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRs cCsddgddgg}g}x|jD]}d}x8|D]0}t||}tjj|r>|}q>q>W|dk r+t|d}t|dd}|jt |q+q+W|S(Ns.svns dir-prop-bases dir-propss svn:externalsRsutf-8( RR7R.R*R+R|RtRtextendRV(Rt prop_filesRWRt prop_filet rel_partsRntext_prop((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRs    (RRRRRRRR(((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyR|s      ccsqtj|}x|jD] }|VqWx?|jD]1}tj|}x|jD] }|VqZWq8WdS(N(RuRRR(RRzR+tsub_infotsub_path((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyt svn_finders RcBs8eZdZedZedZdZRS(cCs ||_dS(N(R(RR((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRscCsItjj|dd}t|}ztj|}Wd|jX|S(Ns.svnRO(R*R+RRgRRjRm(tclass_RRnRqR((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRs   cCs5|j}|jd}ttg|}||S(Nssi(R(Rt undeletedRR((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRs  ( RRRRRRRRR(((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRs      RcBs,eZdZdZdZdZRS(cCstS(N(Rl(R((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRscCs(tjd}|j|jjdS(sGet repository URLs url="([^"]+)"i(RRtsearchRR(Rturlre((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRscCsAtjd}g|j|jD]}t|jd^q"S(Nscommitted-rev="(\d+)"i(RRtfinditerRRkR(Rtrevretm((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyR!scCsMtjdtj}g|j|jD]}t|jd^q(}|S(Ns%name="([^"]+)"(?![^>]+deleted="true")i(RRRRRRR(Rtentries_patternRtresults((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyR(s1(RRRRRR(((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pyRs   t__main__i(2R*RR t distutilsRtxml.dom.pulldomRER\R0R3R?Rtsetuptools.compatRtxml.sax.saxutilsRR^t ImportErrort urllib.parsetparset subprocessRR Rt_PIPER7RR R$R(R.R:R<RRRRYRVRttobjectRuRRRRRRRRtargvtname(((sE/opt/alt/python33/lib/python3.3/site-packages/setuptools/svn_utils.pytsN                    $ t B 3