;ò ª>PCc@sÅdZdZdZdddfZdieeeƒƒZdkZdk Z dk Z dk Z dk Z dk Z dkZdkZdkZdkZdkZdefd „ƒYZhZd fd „ƒYZnoeeiƒZneeiƒZd „Zd „Zd„Zd„Zd„Zeeds      cCsŸtid djo|d djoftii|ƒotii|ƒSnyti|ƒWntj o dSq›Xtii |ƒSntii|ƒSdS(sÄos.path.isdir() doesn't work for UNC mount points. Fake it. # For an existing mount point (want: _isdir() == 1) os.path.ismount(r"\\crimper\apps") -> 1 os.path.exists(r"\\crimper\apps") -> 0 os.path.isdir(r"\\crimper\apps") -> 0 os.listdir(r"\\crimper\apps") -> [...contents...] # For a non-existant mount point (want: _isdir() == 0) os.path.ismount(r"\\crimper\foo") -> 1 os.path.exists(r"\\crimper\foo") -> 0 os.path.isdir(r"\\crimper\foo") -> 0 os.listdir(r"\\crimper\foo") -> WindowsError # For an existing dir under a mount point (want: _isdir() == 1) os.path.mount(r"\\crimper\apps\Komodo") -> 0 os.path.exists(r"\\crimper\apps\Komodo") -> 1 os.path.isdir(r"\\crimper\apps\Komodo") -> 1 os.listdir(r"\\crimper\apps\Komodo") -> [...contents...] # For a non-existant dir/file under a mount point (want: _isdir() == 0) os.path.ismount(r"\\crimper\apps\foo") -> 0 os.path.exists(r"\\crimper\apps\foo") -> 0 os.path.isdir(r"\\crimper\apps\foo") -> 0 os.listdir(r"\\crimper\apps\foo") -> [] # as if empty contents # For an existing file under a mount point (want: _isdir() == 0) os.path.ismount(r"\\crimper\apps\Komodo\latest.komodo-devel.txt") -> 0 os.path.exists(r"\\crimper\apps\Komodo\latest.komodo-devel.txt") -> 1 os.path.isdir(r"\\crimper\apps\Komodo\latest.komodo-devel.txt") -> 0 os.listdir(r"\\crimper\apps\Komodo\latest.komodo-devel.txt") -> WindowsError iswinis\\iN( ssyssplatformsdirnamesosspathsexistssisdirslistdirs WindowsErrorsismount(sdirname((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pys_isdirqs% cCs t|ƒonŒtii|ƒotd|ƒ‚netii|ƒ\}}|o t|ƒ ot |ƒn|o"t i d|ƒti |ƒndS(sÍworks the way a good mkdir should :) - already exists, silently complete - regular file in the way, raise an exception - parent directory(ies) does not exist, make them as well sCa file with the same name as the desired dir, '%s', already exists.s mkdir "%s"N( s_isdirsnewdirsosspathsisfilesOSErrorssplitsheadstails_mkdirslogsinfosmkdir(snewdirsheadstail((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pys_mkdir›s cCs6dk} dk} dk}||jptd||f‚| i|dƒdjp/| i|dƒdjp| i|dƒdjod}| i|ƒ}nd}|g}x€|D]x} t i i | ƒoc|o‡t i i | ƒ\}}t i i |ƒ\}} t i i |ƒ\}}|| jot i i||ƒ}qct i i||ƒ}n|}t i i |ƒ\} }| o t| ƒ ot| ƒnt|ƒo%t i i|t i i| ƒƒ}nt i i |ƒot i|d ƒntid | |fƒ|i| |ƒt i|d ƒq¶t| ƒoÍt i| ƒ}t i i |ƒ ot|ƒnx»|D]}t i i| |ƒ}t i i||ƒ}yt$||ƒWqwt%t i&fj o4}t(d t)|ƒt)|ƒt*|ƒfƒ‚qwXqwWq¶| ot(d t)| ƒƒ‚q¶q¶WdS( sIworks the way a good copy should :) - no source, raise an exception - destination directory, make a file in that dir named after src - source directory, recursively copy the directory to the destination - filename wildcarding allowed NOTE: - This copy CHANGES THE FILE ATTRIBUTES. Ns@You are try to copy a file to itself. Bad you! src='%s' dst='%s's*iÿÿÿÿs?s[iiiíscopy "%s" "%s"sCan't copy %s to %s: %ssSource file %s does not exist(+sstringsglobsshutilssrcsdstsAssertionErrorsfindsusingWildcardsssrcFilesssrcFilesosspathsisfilessplits srcFileHeads srcFileTailssrcHeadssrcTailsdstHeadsdstTailsjoinsdstFiles dstFileHeads dstFileTails_isdirs_mkdirsbasenameschmodslogsinfoscopyslistdirsexistssfsssds_copysIOErrorserrorswhysOSErrorsreprsstr(ssrcsdstsdstFiles dstFileTailsshutilsdstHeadsdstTailswhyssrcFiless dstFileHeadsstringssrcFilesglobssrcTails srcFileTailsdssrcHeadsfs srcFileHeadsssusingWildcards((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pys_copy¯sV!K   % 8cCs|iddƒSdS(s5Escape the given command line argument for the shell.s"s\"N(sargsreplace(sarg((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pys _escapeArgðscCs|d}xM|D]E}d|jo|dt|ƒ7}n|t|ƒ7}|d7}q W|idƒo|d }n|SdS(s–Join an arglist to a string appropriate for running. >>> import os >>> _joinArgv(['foo', 'bar "baz']) 'foo "bar \\"baz"' ss s"%s"iÿÿÿÿN(scmdstrsargvsargs _escapeArgsendswith(sargvscmdstrsarg((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pys _joinArgvös s _joinArgvs_ListCmdcBsDtZdZdZed„Zd„Zd„Zd„Zd„Z RS(sAPass arglists instead of command strings to commands. Modify the std Cmd class to pass arg lists instead of command lines. This seems more appropriate for integration with sys.argv which handles the proper parsing of the command line arguments (particularly handling of quoting of args with spaces). s_ListCmdcCs t‚dS(N(sNotImplementedError(sselfsintro((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pyscmdloopscCsò| o|iƒSn||_|d}yt|d|ƒ}Wn tj o|i|ƒSnXy||ƒSWnzt j on}t i i d|i||fƒt i i d|i|fƒno!Hdk}|it iƒŒqînXdS(Nisdo_s %s %s: %s s(Try `%s help %s'.) i(sargvsselfs emptylineslastcmdscmdNamesgetattrsfuncsAttributeErrorsdefaults TypeErrorsexssyssstderrswritesnames tracebacksprint_exceptionsexc_info(sselfsargvs tracebackscmdNamesfuncsex((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pysonecmds"    cCs=tiid|idi|ƒ|ifƒtiiƒdS(Ns(%s: unknown syntax: %s (Try `%s help'.) s (ssyssstdoutswritesselfsnamesjoinsargssflush(sselfsargs((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pysdefault-s,cCs!ti|di|dƒƒdS(Ns i(sCmdsdo_helpsselfsjoinsargv(sselfsargv((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pysdo_help2scCsdS(N((sself((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pys emptyline5s( s__name__s __module__s__doc__snamesNonescmdloopsonecmdsdefaultsdo_helps emptyline(((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pys_ListCmd s     s _FindErrorcBstZRS(N(s__name__s __module__(((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pys _FindError;sc Csp|\}}}g} xått|ƒƒD]Ñ}ti i |||ƒ}ti i |ƒoFxœ|D]7}ti|ti i|ƒƒo| i|ƒPqaqaWq(ti i|ƒoFxC|D]7}ti|ti i|ƒƒo| i|ƒPqºqºWq(q(W| iƒx| D] }||=qWxJ|D]B}ti i ||ƒ}ti i |ƒoq&n|i|ƒq&WdS(s{Add all files in the current directory to "files" unless should skip. os.path.walk() callback used by _findFiles() N(sfiless filesToSkips dirsToSkipstoDelsrangeslens filesInDirsisosspathsjoinsdirNamesfilesisdirspatternsresmatchsbasenamesappendsisfilesreverse( s.0sdirNames filesInDirsfiless filesToSkips dirsToSkipsisfilespatternstoDel((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pys_addOrSkipFiles=s6     c CsN|ddjoÆtii|ƒpti}d|jp d|jotd|ƒ‚ntii|ƒotd|ƒ‚ntii|ƒ otd|ƒ‚ng}tii |t |||fƒ|Sntti|ƒ}g}xW|D]O}tii|ƒ\}}| o ti}nt |||f||gƒqóW|SdS( seReturn a list of local files described by the given filespec. A 'filespec' may include normal file glob syntax *OR* trailing a trailing '...' after a directory separator to indicate everything recursively found under that directory. (Note: this syntax is not quite as general as Perforce's which allows mixing of glob syntax and '...' and allows '...' anywhere.) Directories are NOT included in the results (because Perforce doesn't talk about directories). A list of file and dir regex patterns to explicitly skip can be specified. By default no files are skipped. iýÿÿÿs...s*s?s1Do not support both glob patterns and '...': '%s's(Only support '...' on directories: '%s'.s'%s' directory does not exist.N(sfilespecsosspathsdirnamescurdirsstartDirs _FindErrorsisfilesisdirsfilesswalks_addOrSkipFiless filesToSkips dirsToSkipsglobsallFilessfilessplitsdirNamesfileName( sfilespecs filesToSkips dirsToSkipsfilessfilesallFilessfileNamesstartDirsdirName((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pys _findFilesZs. sPxShellcBs›tZdZdZd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„ZRS(sŽ This 'p4' is being wrapped by 'px'. See 'px -h' for details and try: px help px list 'px' extensions to 'p4' Summary of 'px' changes: px --help See 'px help usage'. px -V, --version See 'px help usage'. px -g ... See 'px help usage'. px annotate ... See 'px help annotate'. px backout ... See 'px help backout'. px changes -d ... See 'px help changes'. px diff -sn --skip ... See 'px help diff'. px diff -c ... See 'px help diff'. px genpatch [] See 'px help genpatch'. spxcCsŠ||_d|ijo&d|i|iidƒ ... Limit diffing to files opened in the given pending change. See 'px help diff'. px genpatch [] Generate a patch (usable by the GNU 'patch' program) from a pending or submitted chagelist. See 'px help genpatch'. (ssyssstdoutswritesflush(sself((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pyshelp_pxHs*c/ Csõy ti|ddƒ\} }Wn@tij o1} tiid| ƒtiidƒdSnXd}x7| D]/\}}+|djod}t dƒ‚qpqpWt |ƒdjo(tiidƒtiidƒdSn}tid |dƒ}!tid |dƒ}|!o|!iƒ\} }n4|o|iƒ\} }n|dd f\} }d g|i}*xd |*jo|*id ƒqmWtiti|iƒ}#|#i| |ƒ}| o tiid| |ƒdSn4t |ƒdjo tiid| |ƒdSn|dddjo2tiid|dd|ddfƒdSn|#i| |ƒd}ti d|dƒx]|dD]Q}|di"dƒdjo1tiid|d|d|dfƒdSq“q“Wh}-h}ti%dƒ}xÝ|dD]Ñ}|d}.|d|-|. Like 'cvs annotate' (and 'p4pr.pl') this will markup each line in the given file with information on where the last change to that line originated (which user submitted that change, the change number, the file revision). A specific file revision may be specified via #... and @... notation. isispx annotate: error: %s sTry 'px help annotate'. is-is-i not supported yets-px annotate: error: incorrect number of args s (.*)(@\d+)s (.*)(#\d+)ssp4s-ss(px annotate: error: '%s' - no such file s4px annotate: error: '%s' maps to more than one file sactionsdeletes'px annotate: error: '%s#%s' is deleted s depotFilesrevs depotFile: %ssrevsstypesbinaryiÿÿÿÿs,px annotate: error: '%s#%s' is of type '%s' sB^(?Pcopy|branch|merge) from (?P\/\/.*)#(?P\d+)$schangesnotessfroms/susercCst|d|dƒS(Nsrev(scmpsasb(sasb((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pysÝss%s#%sstexts s ^(\d+),?(\d*)([acd])(\d+),?(\d*)s#sasds%internal error applying diffs to '%s'is%5s %23s %6s %4s %s s%5s %15s %6s %4s %s slines author/branchs@%(depotFile)s#%(rev)s - %(action)s change %(change)s (%(type)s) s-N(Ssgetoptsargvsoptlistsargss GetoptErrorsexssyssstderrswritesfollowBranchessoptsoptargsNotImplementedErrorslensressearchschangesrevisionsgroupssfilessuffsselfs_PxShell__p4optvsp4argvsremovesp4libsP4s parseOptvsp4sfilessfilelogslogsdebugsrevsfinds rev2changesrev2userscompiles branchFromResrevnumsnotesmatchsgroupsfrom_szipssplitsfsnshas_keysrevsssortsprint_sstrsfile_1slines_1sappends_[1]sislinedatasheaderResdiff2sdiffs difflinessreverseslineslaslbsopsrasrbsintsranges file_headstextsPxErrorsvaluessusersfmtsfieldssstdoutstuplesfieldsflush(/sselfsargvsusersfilessfilelogssuffsrev2userslinedatastextsoptlistsexsfilesdiffslineslbslasheaderResrevsnotes file_headsfollowBranchessrbsfrom_smatchsrevisionsoptsfieldsargssfile_1s branchFromResraslines_1srevsschangesopsp4sfsisfieldssns_[1]s difflinessp4argvsoptargsfmts rev2changesrevnum((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pys do_annotateusî      * )        +8  2   0  U  E ;c Csûy ti|ddƒ\}} Wn@tij o1}tiid|ƒtiidƒdSnXd}d} t } t }d}x|D]…\}}|djo d}qˆ|djo d} qˆ|djot|ƒ} qˆ|d jo |}qˆ|d jo d}qˆqˆW|oÒtiti|iƒ} | i| d |d | d | d|ƒ}gi}|D]} || dƒqh~}tid|ƒx^|D]E}|i ddt!|ƒgƒ}|ot#dt$|fƒ‚qqWn|i |ƒSdS(sš px additional options: -d Print the full 'p4 describe -du' output for each change. This overrides the -l option. isilm:s:dspx changes: error: %s sTry 'px help changes'. is-is-ls-ms-ss-dsfollowIntegrationss longOutputsmaxsstatusschangesChangenums to describe: %ssdescribes-dusError running '%s': retval=%sN(%sgetoptsargvsoptlistsargss GetoptErrorsexssyssstderrswritesfollowIntegrationss longOutputsNonesmaxsstatussdescribesoptsoptargsintsp4libsP4s parseOptvsselfs_PxShell__p4optvsp4schangessappends_[1]scs changeNumsslogsinfosnums_p4runsstrsretvalsPxErrorscmd(sselfsargvsoptsdescribesoptlistsnumsexsoptargsstatuss longOutputsmaxsargsscsp4sretvals_[1]s changeNumssfollowIntegrationsschanges((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pys do_changessJ             +"cCs y&ti|dddgƒ\}}Wn@tij o1}tiid|ƒtiidƒdSnXd}d}d}t }g} x|D]þ\}}|djo |idƒo| o d}nd}qŽ|d jo d}qŽ|d joY|}yt|ƒ}WqŒtj o0|d jotiid |ƒdSqLqŒXqŽ| i|ƒ|o| i|ƒn|djo d}qŽqŽW|o| otiid ƒdSn|t j o|otiidƒdSn|otid||fƒtiti|iƒ}|i|pdƒ}gi}|D]$}|d o||dƒq@q@~}tid||fƒ|oddg} dg} n g} g} g} xM|D]E} y| t%| | | ƒ7} Wq½t&j o}ti'|ƒq½Xq½Wtidt(i)| ƒƒgi}|i*|ƒD]}||dƒq7~}tidt(i)|ƒƒh}x|D]}d|| option: -sn Local files not in the p4 client. Px also adds the --skip option (which only makes sense together with -sn) to specify that regularly skipped file (CVS control files, *~) should be skipped. The '-c' option can be used to limit diff'ing to files in the given changelist. '-c' cannot be used with any of the '-s' options. isd:fs:tc:sskipspx diff: error: %s sTry 'px help diff'. is-ssns--skips-csdefaults Invalid changelist number '%s'. s5px diff: error: '--skip' only makes sense with '-sn' s8px diff: error: cannot use '-c' with '-s' options s!list new files (skip=%d) under %ss//...sminuss localFiles3list new files (skip=%d) under these local files %ss \.cvsignores.*~sCVSslocal files: %ss p4 files: %ss schangesChange %s unknown.sstatuss submittedsChange %d is already commited.s depotFileN(5sgetoptsargvsoptlistsfiless GetoptErrorsexssyssstderrswrites listNewFiless haveSeenSOptsskipsNoneschangessafeOptvsoptsoptargs startswithsints ValueErrorsappendslogsdebugsp4libsP4s parseOptvsselfs_PxShell__p4optvsp4swheres_[1]sfslocalfilespecss filesToSkips dirsToSkips localfilesslfss _findFiless _FindErrorsinfospprintspformatshavesp4filess p4filemapsnewFilesshas_keysstdoutsflushschs P4LibErrorsopeneds_p4run(sselfsargvs p4filemapsoptschsskipsoptlistslocalfilespecssexslfsssafeOptvs dirsToSkips filesToSkips localfilessoptargsfilessnewFilessp4filesschanges haveSeenSOptsp4sfs_[1]swheres listNewFiles((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pysdo_diffIs® &          ;  4    :cCs^t|dƒdjo(tiidƒtiidƒdSnyt|dƒ}Wn1tj o%}tiid|dƒdSnXt i t i |i ƒ}|i|ddƒ}gi}|dD]}||dƒqÉ~}gi}|i|ƒD]}||dƒqý~} | o d|| f}t|ƒ‚ngi}|dD]}||d ƒqS~}xQ|D]I}|d d d d dfjo'dti|dƒ}t|ƒ‚qwqwWgi}|dD])}d|djo||dƒqÖqÖ~} | otd| ƒ‚ntid|dƒgi}|dD]@}|d dd d fjo |d|d|dfƒqJqJ~}|o|i!|ƒntidƒgi}|dD]/}|d d d fjo||dƒqÊqÊ~}|o|i#|ƒntidƒgi}|dD])}|d djo||dƒq9q9~} | o|i%| ƒntidƒgi}|dD]}|d|d|fƒq¢~}|i!|ƒtidƒ|i'|ddƒtidƒ|i!|ƒtidƒ|i'|ƒgi}|i'|ddƒD]}||dƒqG~} | od| }t|ƒ‚ntidƒgi}|dD]/}|d d d fjo||dƒq¤q¤~}|o|i*|ƒntidƒ|i+|d |ƒ} ti-id!| d"|fƒti-id#| d"ƒti-i.ƒd$S(%sQ backout -- backout a specific change number in perforce px backout Provide all the general steps for rolling back a perforce change. c.f. http://www.perforce.com/perforce/technotes/note014.html Limitations: - Cannot handle changes that include filenames with spaces. isUsage: backout s#Missing/wrong number of arguments. s Invalid changelist number '%s'. s shortFormsfiless depotFilesOThe following files that are part of change %d are currently open. Aborting. %ssactionsaddsbranchsedits integratesdeletesqDon't know how to backout a change with actions other than 'add', 'branch', 'edit', 'integrate', or 'delete': %s s sYThe following files in this change have spaces. This implementation cannot handlethat: %ss&(1/9) Sync to the change before (%d). s%s@%ds#(2/9) Open editted files for edit. s"(3/9) Open deleted files for add. s&(4/9) Sync to the change to back out. s+(5/9) 'Resolve'-away the unwanted changes. sautoModesys)(6/9) Sync to the latest depot revision. s<(7/9) Resolve any conflicts with the latest depot revision. sdryrunsVThe following files still need to be manually resolved. Aborting with opened files. %ss%(8/9) Open added files for deletion. s((9/9) Setup a pending change to submit. sBackout change #%ds(Change %d created to backout change %d. schangesSubmit with 'px submit -c %d'. N(/slensargvssyssstderrswritesintscnums ValueErrorsexsp4libsP4s parseOptvsselfs_PxShell__p4optvsp4sdescribesdescsappends_[1]sfsallFilessopeneds openedFilesserrsPxErrorsactionssactionspprintspformatsfilesWithSpacesslogsinfos prevFilesssyncs editFilesseditsdelFilessadds currFilessresolves conflictFilessaddFilessdeleteschangescsstdoutsflush(sselfsargvsallFilesscnumsactionssexs prevFiless currFilessdescs openedFilessdelFiless conflictFilessfilesWithSpacesscsp4serrsfs editFiless_[1]saddFilessaction((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pys do_backoutÏsx  /4/D[ J D 9      :  J cCsŒd} | djoddf}n| djoddf}n|d o d}n¥t|dƒdjoi|d}yt|ƒ}Wqútj o<|iƒ}|djoti i d|ƒdSqÒqúXn%ti i d ƒti i d ƒdSt i t i |iƒ}gi}|id d ƒD]}||d ƒq/~}gi}|id dƒD]}||d ƒqf~} ||jo d } n7|| dgjo d} nti i d|ƒdS| d jo7|i|ddƒ}|d}|d}|d}nœ| djoŽ|id |ƒ}|djo t}n|id |ƒd}|o>|igi}|D]}||dƒq{~ddƒ}q¯g}nd}t"i#ƒ} x|D]û}|i%dƒo5|d|7}|do|d7}n|d7}n|d|7}|dtdƒ}|i%dƒo~|d|7}|d|d || f7}|d!|d|| f7}|di'|dƒ7}|d"djo|d#7}qÃqÈqÈWgi}|D]+}|d$d%d&fjo||ƒqÕqÕ~}x$|D]}| d jo#|i|dƒd d'|d'] Generate a patch (i.e. can later be used as input for the 'patch' program) for a given changelist number. If no change number is given then a patch for the 'default' changelist is generated. The patch is printed on stdout. Files opened for 'add', 'delete' or 'branch' are inlined such that application with 'patch' will create or delete the intended files. sus---s+++scs***isdefaults Invalid changelist number '%s'. s Usage: genpatch [] s#Missing/wrong number of arguments. sstatuss submittedschangespendingsChange %s unknown.s diffFormats descriptionsfilessdiffs depotFiless localFiles/==== %(depotFile)s#%(rev)s - %(localFile)s ====sbinarys (binary)s s+==== %(depotFile)s#%(rev)s (%(type)s) ==== s//depot/stexts Index: %s s %s %s.~1~ %s is %s %s %s iÿÿÿÿs \ No newline at end of file sactionsaddsbranchstypes(Cannot inline '%s' because it is binary.srs%s#%ssrevs, ==== %(depotFile)s#%(rev)s (%(type)s) ==== is,s@@ -0,0 +1%s @@ s+s End of Patch.s differencessdiff N(=s diffFormatsprefixessargvschangeslensints ValueErrorslowerssyssstderrswritesp4libsP4s parseOptvsselfs_PxShell__p4optvsp4sappends_[1]schangesscs submittedspendingsstatussdescribesdsdescsfilessdiffssopenedsNonesdiffsfsdiffstrstimesasctimes timestampshas_keysfnamesjoins addedfiless startswithslogswarnswheres localFilesosspathsexistssopens readlinesslinessfnameRevsprint_ssplitslineslnsstrsmakeFormspatchsstdout(sselfsargvsfiless addedfilessdiffslnsprefixess localFilesfnamespendingsstatuss timestamps diffFormatslineschangesdescsdiffsscsdsp4sfsliness submittedspatchs_[1]sfnameRevsdiffstr((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pys do_genpatch\sÄ       77         .    B #   +  (s__name__s __module__s__doc__snames__init__s_p4runs _p4pcapturesdefaults emptylines _do_one_helpsdo_helps help_commandss help_usageshelp_pxs do_annotates do_changessdo_diffs do_backouts do_genpatch(((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pysPxShell‡s"   0       - ¤ 0 † c Cs¤ti|dddddgƒ\}}g}xV|D]N\}}|dfjotƒdSn|ddd fjoeti i t d ƒti i d ƒti i ƒt id ƒ}ti i tƒti i ƒ|Sn|d dfjopti i dtƒti i ƒx%d |jod||id ƒ        cCs8dGHtiidƒdk}dk}|i|ƒSdS(NsRunning px's self test.s-v(ssyssargvsappendsdoctestspxstestmod(spxsdoctest((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pys_test,ss__main__(*s__doc__s pxOptionsDocs __revision__s__version_info__sjoinsmapsstrs __version__sosssyssgetoptspprintscmdsrestypessglobsmarshalstimesp4libs ExceptionsPxErrors__test__s_LoggersWARNslogsDEBUGs_isdirs_mkdirs_copys _escapeArgs _joinArgvsCmds_ListCmds _FindErrors_addOrSkipFiless _findFilessPxShellspxs_tests__name__sexitsargv(s_tests _joinArgvs_isdirs __revision__slogs_LoggersPxShellspxspprints _escapeArgsres _FindErrorsgetopts __version__s pxOptionsDocs_mkdirsglobssyss_copys__test__sp4libsPxErrorstypess_addOrSkipFilesscmds _findFiless__version_info__s_ListCmdstimesossmarshal((s2/mnt/gmirror/ports/devel/py-px/work/px-0.9.1/px.pys?sN            + *  A   2 -ÿÿÿƒ %