mfc@sdZddlZddlZddgZdejfdYZdeejfdYZedkrddl Z e j j ej d\Z Ze j je\ZZd ej krdd lmZde_ned ejndS( sA user-defined wrapper around string objects Note: string objects have grown methods in Python 1.6 This module requires Python 1.6 or later. iNt UserStringt MutableStringcBsoeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZeZdZdZdZdejdZd;d;dZd;d;dZdejdZddZdejdZdejdZdZ dZ!dZ"dZ#d Z$d!Z%d"Z&d#Z'd$Z(d%Z)d&Z*d'Z+d;d(Z,d)Z-d*d+Z.dejd,Z/dejd-Z0d.Z1d/Z2d;d0Z3d;d*d1Z4d;d*d2Z5dd3Z6dejd4Z7d;d5Z8d6Z9d7Z:d8Z;d9Z<d:Z=RS(<cCsMt|tr||_n.t|tr:|j|_nt||_dS(N(t isinstancet basestringtdataRtstr(tselftseq((s"/usr/lib64/python2.7/UserString.pyt__init__s  cCs t|jS(N(RR(R((s"/usr/lib64/python2.7/UserString.pyt__str__scCs t|jS(N(treprR(R((s"/usr/lib64/python2.7/UserString.pyt__repr__scCs t|jS(N(tintR(R((s"/usr/lib64/python2.7/UserString.pyt__int__scCs t|jS(N(tlongR(R((s"/usr/lib64/python2.7/UserString.pyt__long__scCs t|jS(N(tfloatR(R((s"/usr/lib64/python2.7/UserString.pyt __float__scCs t|jS(N(tcomplexR(R((s"/usr/lib64/python2.7/UserString.pyt __complex__scCs t|jS(N(thashR(R((s"/usr/lib64/python2.7/UserString.pyt__hash__scCs6t|tr"t|j|jSt|j|SdS(N(RRtcmpR(Rtstring((s"/usr/lib64/python2.7/UserString.pyt__cmp__scCs ||jkS(N(R(Rtchar((s"/usr/lib64/python2.7/UserString.pyt __contains__"scCs t|jS(N(tlenR(R((s"/usr/lib64/python2.7/UserString.pyt__len__%scCs|j|j|S(N(t __class__R(Rtindex((s"/usr/lib64/python2.7/UserString.pyt __getitem__&scCs5t|d}t|d}|j|j||!S(Ni(tmaxRR(Rtstarttend((s"/usr/lib64/python2.7/UserString.pyt __getslice__'scCsgt|tr&|j|j|jSt|trI|j|j|S|j|jt|SdS(N(RRRRRR(Rtother((s"/usr/lib64/python2.7/UserString.pyt__add__+s cCsAt|tr#|j||jS|jt||jSdS(N(RRRRR(RR$((s"/usr/lib64/python2.7/UserString.pyt__radd__2scCs|j|j|S(N(RR(Rtn((s"/usr/lib64/python2.7/UserString.pyt__mul__7scCs|j|j|S(N(RR(Rtargs((s"/usr/lib64/python2.7/UserString.pyt__mod__:scCs|j|jjS(N(RRt capitalize(R((s"/usr/lib64/python2.7/UserString.pyR+>scGs|j|jj||S(N(RRtcenter(RtwidthR)((s"/usr/lib64/python2.7/UserString.pyR,?sicCs|jj|||S(N(Rtcount(RtsubR!R"((s"/usr/lib64/python2.7/UserString.pyR.AscCs^|rD|r(|j|jj||S|j|jj|Sn|j|jjSdS(N(RRtdecode(Rtencodingterrors((s"/usr/lib64/python2.7/UserString.pyR0Cs cCs^|rD|r(|j|jj||S|j|jj|Sn|j|jjSdS(N(RRtencode(RR1R2((s"/usr/lib64/python2.7/UserString.pyR3Ks cCs|jj|||S(N(Rtendswith(RtsuffixR!R"((s"/usr/lib64/python2.7/UserString.pyR4SsicCs|j|jj|S(N(RRt expandtabs(Rttabsize((s"/usr/lib64/python2.7/UserString.pyR6UscCs|jj|||S(N(Rtfind(RR/R!R"((s"/usr/lib64/python2.7/UserString.pyR8WscCs|jj|||S(N(RR(RR/R!R"((s"/usr/lib64/python2.7/UserString.pyRYscCs |jjS(N(Rtisalpha(R((s"/usr/lib64/python2.7/UserString.pyR9[scCs |jjS(N(Rtisalnum(R((s"/usr/lib64/python2.7/UserString.pyR:\scCs |jjS(N(Rt isdecimal(R((s"/usr/lib64/python2.7/UserString.pyR;]scCs |jjS(N(Rtisdigit(R((s"/usr/lib64/python2.7/UserString.pyR<^scCs |jjS(N(Rtislower(R((s"/usr/lib64/python2.7/UserString.pyR=_scCs |jjS(N(Rt isnumeric(R((s"/usr/lib64/python2.7/UserString.pyR>`scCs |jjS(N(Rtisspace(R((s"/usr/lib64/python2.7/UserString.pyR?ascCs |jjS(N(Rtistitle(R((s"/usr/lib64/python2.7/UserString.pyR@bscCs |jjS(N(Rtisupper(R((s"/usr/lib64/python2.7/UserString.pyRAcscCs|jj|S(N(Rtjoin(RR((s"/usr/lib64/python2.7/UserString.pyRBdscGs|j|jj||S(N(RRtljust(RR-R)((s"/usr/lib64/python2.7/UserString.pyRCescCs|j|jjS(N(RRtlower(R((s"/usr/lib64/python2.7/UserString.pyRDgscCs|j|jj|S(N(RRtlstrip(Rtchars((s"/usr/lib64/python2.7/UserString.pyREhscCs|jj|S(N(Rt partition(Rtsep((s"/usr/lib64/python2.7/UserString.pyRGisicCs|j|jj|||S(N(RRtreplace(Rtoldtnewtmaxsplit((s"/usr/lib64/python2.7/UserString.pyRIkscCs|jj|||S(N(Rtrfind(RR/R!R"((s"/usr/lib64/python2.7/UserString.pyRMmscCs|jj|||S(N(Rtrindex(RR/R!R"((s"/usr/lib64/python2.7/UserString.pyRNoscGs|j|jj||S(N(RRtrjust(RR-R)((s"/usr/lib64/python2.7/UserString.pyROqscCs|jj|S(N(Rt rpartition(RRH((s"/usr/lib64/python2.7/UserString.pyRPsscCs|j|jj|S(N(RRtrstrip(RRF((s"/usr/lib64/python2.7/UserString.pyRQuscCs|jj||S(N(Rtsplit(RRHRL((s"/usr/lib64/python2.7/UserString.pyRRvscCs|jj||S(N(Rtrsplit(RRHRL((s"/usr/lib64/python2.7/UserString.pyRSxscCs|jj|S(N(Rt splitlines(Rtkeepends((s"/usr/lib64/python2.7/UserString.pyRTzscCs|jj|||S(N(Rt startswith(RtprefixR!R"((s"/usr/lib64/python2.7/UserString.pyRV{scCs|j|jj|S(N(RRtstrip(RRF((s"/usr/lib64/python2.7/UserString.pyRX}scCs|j|jjS(N(RRtswapcase(R((s"/usr/lib64/python2.7/UserString.pyRY~scCs|j|jjS(N(RRttitle(R((s"/usr/lib64/python2.7/UserString.pyRZscGs|j|jj|S(N(RRt translate(RR)((s"/usr/lib64/python2.7/UserString.pyR[scCs|j|jjS(N(RRtupper(R((s"/usr/lib64/python2.7/UserString.pyR\scCs|j|jj|S(N(RRtzfill(RR-((s"/usr/lib64/python2.7/UserString.pyR]sN(>t__name__t __module__RR R R RRRRRRRRR#R%R&R(t__rmul__R*R+R,tsystmaxintR.tNoneR0R3R4R6R8RR9R:R;R<R=R>R?R@RARBRCRDRERGRIRMRNRORPRQRRRSRTRVRXRYRZR[R\R](((s"/usr/lib64/python2.7/UserString.pyR sr                                            cBsheZdZddZd ZdZdZdZdZ dZ dZ d Z d Z RS( smutable 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-ddlm}|ddd||_dS(Ni(twarnpy3ksAthe class UserString.MutableString has been removed in Python 3.0t stackleveli(twarningsReR(RRRe((s"/usr/lib64/python2.7/UserString.pyRs cCs\t|trt|tr*|j}nt|tsHt|}n|jt|j\}}}|dkr|d|d}}|ddd}n|dkrtdnt ||}|j| ||j||_no|dkr |t|j7}n|dks,|t|jkr5t n|j| ||j|d|_dS(Niis"invalid step in slicing assignmenti( RtsliceRRRRtindicesRt TypeErrortmint IndexError(RRR/R!tstoptstep((s"/usr/lib64/python2.7/UserString.pyt __setitem__s$ !   " ! cCst|tr|jt|j\}}}|dkrT|d|d}}n|dkrltdnt||}|j| |j||_nk|dkr|t|j7}n|dks|t|jkrtn|j| |j|d|_dS(Niis invalid step in slicing deletioni(RRhRiRRRjRkRl(RRR!RmRn((s"/usr/lib64/python2.7/UserString.pyt __delitem__s!    ! cCst|d}t|d}t|trR|j| |j|j||_nVt|tr|j| ||j||_n%|j| t||j||_dS(Ni(R RRRRR(RR!R"R/((s"/usr/lib64/python2.7/UserString.pyt __setslice__s%"cCs=t|d}t|d}|j| |j||_dS(Ni(R R(RR!R"((s"/usr/lib64/python2.7/UserString.pyt __delslice__scCs t|jS(N(RR(R((s"/usr/lib64/python2.7/UserString.pyt immutablescCs^t|tr$|j|j7_n6t|trE|j|7_n|jt|7_|S(N(RRRRR(RR$((s"/usr/lib64/python2.7/UserString.pyt__iadd__s cCs|j|9_|S(N(R(RR'((s"/usr/lib64/python2.7/UserString.pyt__imul__scCs||||+dS(N((RRtvalue((s"/usr/lib64/python2.7/UserString.pytinsertsN(R^R_t__doc__RRcRRoRpRqRrRsRtRuRw(((s"/usr/lib64/python2.7/UserString.pyRs        t__main__is-q(t test_supports test.test_(RxRat collectionst__all__tSequenceRtMutableSequenceRR^tostpathRRtargvt called_in_dirt called_astsplitexttpyttestRztverboset __import__RD(((s"/usr/lib64/python2.7/UserString.pyts   xW