mò %U²Ic@sädZdklZdkZddgZdfd„ƒYZdefd„ƒYZedjo‚dkZei i ei dƒ\Z Z ei ie ƒ\Z Zd ei jod klZde_ned e iƒƒndS( sŽA user-defined wrapper around string objects Note: string objects have grown methods in Python 1.6 This module requires Python 1.6 or later. (s StringTypesNt UserStringt MutableStringcBs]tZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zd„Zd„Zd„ZeZd„Zd„Zd„Zdeid„Zddd„Zddd„Zdeid„Zdd„Zdeid„Zdeid„Zd„Z d„Z!d„Z"d „Z#d!„Z$d"„Z%d#„Z&d$„Z'd%„Z(d&„Z)d'„Z*d(„Z+dd)„Z,d*d+„Z-deid,„Z.deid-„Z/d.„Z0dd/„Z1dd*d0„Z2dd*d1„Z3dd2„Z4deid3„Z5dd4„Z6d5„Z7d6„Z8d7„Z9d8„Z:d9„Z;RS(:NcCsQt|tƒo ||_n1t|tƒo|i|_nt|ƒ|_dS(N(t isinstancetseqt StringTypestselftdataRtstr(RR((t'/data/zmath/lib/python2.4/UserString.pyt__init__s  cCs t|iƒS(N(RRR(R((Rt__str__scCs t|iƒS(N(treprRR(R((Rt__repr__scCs t|iƒS(N(tintRR(R((Rt__int__scCs t|iƒS(N(tlongRR(R((Rt__long__scCs t|iƒS(N(tfloatRR(R((Rt __float__scCs t|iƒS(N(tcomplexRR(R((Rt __complex__scCs t|iƒS(N(thashRR(R((Rt__hash__scCs;t|tƒot|i|iƒSnt|i|ƒSdS(N(RtstringRtcmpRR(RR((Rt__cmp__scCs ||ijS(N(tcharRR(RR((Rt __contains__"scCs t|iƒS(N(tlenRR(R((Rt__len__%scCs|i|i|ƒS(N(Rt __class__Rtindex(RR((Rt __getitem__&scCs5t|dƒ}t|dƒ}|i|i||!ƒS(Ni(tmaxtstarttendRRR(RR"R#((Rt __getslice__'scCsqt|tƒo|i|i|iƒSnCt|tƒo|i|i|ƒSn|i|it|ƒƒSdS(N(RtotherRRRRRR(RR%((Rt__add__+s cCsFt|tƒo|i||iƒSn|it|ƒ|iƒSdS(N(RR%RRRRR(RR%((Rt__radd__2scCs|i|i|ƒS(N(RRRtn(RR(((Rt__mul__7scCs|i|i|ƒS(N(RRRtargs(RR*((Rt__mod__:scCs|i|iiƒƒS(N(RRRt capitalize(R((RR,>scGs|i|ii||ŒƒS(N(RRRtcentertwidthR*(RR.R*((RR-?sicCs|ii|||ƒS(N(RRtcounttsubR"R#(RR0R"R#((RR/AscCse|oD|o |i|ii||ƒƒSqa|i|ii|ƒƒSn|i|iiƒƒSdS(N(tencodingterrorsRRRtdecode(RR1R2((RR3Cs  cCse|oD|o |i|ii||ƒƒSqa|i|ii|ƒƒSn|i|iiƒƒSdS(N(R1R2RRRtencode(RR1R2((RR4Ks  cCs|ii|||ƒS(N(RRtendswithtsuffixR"R#(RR6R"R#((RR5SsicCs|i|ii|ƒƒS(N(RRRt expandtabsttabsize(RR8((RR7UscCs|ii|||ƒS(N(RRtfindR0R"R#(RR0R"R#((RR9WscCs|ii|||ƒS(N(RRRR0R"R#(RR0R"R#((RRYscCs |iiƒS(N(RRtisalpha(R((RR:[scCs |iiƒS(N(RRtisalnum(R((RR;\scCs |iiƒS(N(RRt isdecimal(R((RR<]scCs |iiƒS(N(RRtisdigit(R((RR=^scCs |iiƒS(N(RRtislower(R((RR>_scCs |iiƒS(N(RRt isnumeric(R((RR?`scCs |iiƒS(N(RRtisspace(R((RR@ascCs |iiƒS(N(RRtistitle(R((RRAbscCs |iiƒS(N(RRtisupper(R((RRBcscCs|ii|ƒS(N(RRtjoinR(RR((RRCdscGs|i|ii||ŒƒS(N(RRRtljustR.R*(RR.R*((RRDescCs|i|iiƒƒS(N(RRRtlower(R((RREgscCs|i|ii|ƒƒS(N(RRRtlstriptchars(RRG((RRFhsiÿÿÿÿcCs|i|ii|||ƒƒS(N(RRRtreplacetoldtnewtmaxsplit(RRIRJRK((RRHiscCs|ii|||ƒS(N(RRtrfindR0R"R#(RR0R"R#((RRLkscCs|ii|||ƒS(N(RRtrindexR0R"R#(RR0R"R#((RRMmscGs|i|ii||ŒƒS(N(RRRtrjustR.R*(RR.R*((RRNoscCs|i|ii|ƒƒS(N(RRRtrstripRG(RRG((RROqscCs|ii||ƒS(N(RRtsplittsepRK(RRQRK((RRPrscCs|ii||ƒS(N(RRtrsplitRQRK(RRQRK((RRRtscCs|ii|ƒS(N(RRt splitlinestkeepends(RRT((RRSvscCs|ii|||ƒS(N(RRt startswithtprefixR"R#(RRVR"R#((RRUwscCs|i|ii|ƒƒS(N(RRRtstripRG(RRG((RRWyscCs|i|iiƒƒS(N(RRRtswapcase(R((RRXzscCs|i|iiƒƒS(N(RRRttitle(R((RRY{scGs|i|ii|ŒƒS(N(RRRt translateR*(RR*((RRZ|scCs|i|iiƒƒS(N(RRRtupper(R((RR[~scCs|i|ii|ƒƒS(N(RRRtzfillR.(RR.((RR\s(<t__name__t __module__R R R RRRRRRRRR R$R&R'R)t__rmul__R+R,R-tsystmaxintR/tNoneR3R4R5R7R9RR:R;R<R=R>R?R@RARBRCRDRERFRHRLRMRNRORPRRRSRURWRXRYRZR[R\(((RR sn                                          cBsbtZdZdd„Zd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z RS( sœmutable string objects Python strings are immutable objects. This has the advantage, that strings may be used as dictionary keys. If this property isn't needed and you insist on changing string values in place instead, you may cheat and use MutableString. But the purpose of this class is an educational one: to prevent people from inventing their own mutable string class derived from UserString and than forget thereby to remove (override) the __hash__ method inherited from UserString. This would lead to errors that would be very hard to track down. A faster and better solution is to rewrite your program using lists.tcCs ||_dS(N(RRR(RR((RR scCs td‚dS(Nsunhashable type (it is mutable)(t TypeError(R((RR’scCsT|djp|t|iƒjo t‚n|i| ||i|d|_dS(Nii(RRRRt IndexErrorR0(RRR0((Rt __setitem__”s# cCsP|djp|t|iƒjo t‚n|i| |i|d|_dS(Nii(RRRRRe(RR((Rt __delitem__—s# cCs°t|dƒ}t|dƒ}t|tƒo&|i| |i|i||_nYt|tƒo#|i| ||i||_n&|i| t |ƒ|i||_dS(Ni( R!R"R#RR0RRRRR(RR"R#R0((Rt __setslice__šs &#cCs=t|dƒ}t|dƒ}|i| |i||_dS(Ni(R!R"R#RR(RR"R#((Rt __delslice__¢scCs t|iƒS(N(RRR(R((Rt immutable¥scCsbt|tƒo|i|i7_n9t|tƒo|i|7_n|it|ƒ7_|S(N(RR%RRRRR(RR%((Rt__iadd__§s cCs|i|9_|S(N(RRR((RR(((Rt__imul__¯s( R]R^t__doc__R RRfRgRhRiRjRkRl(((RRs         t__main__is-q(s test_supports test.test_(RmttypesRR`t__all__RRR]tostpathRPtargvt called_in_dirt called_astsplitexttpyttestt test_supporttverboset __import__RE( RyRpRqRtRwR`RRRuR((Rt?s   t2