ó <¿CVc@@sŠddlmZddlZddlmZmZmZmZdefd„ƒYZ de fd„ƒYZ edefd „ƒYƒZ dS( i(tabsolute_importN(t basestringtimplements_to_stringtPY2t binary_typetComparableMixincB@sMeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z RS(s(Implements rich operators for an object.cC@s<y||jƒ|jƒƒSWnttfk r7tSXdS(N(t_cmpkeytAttributeErrort TypeErrortNotImplemented(tselftothertmethod((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyt_compare scC@s|j|d„ƒS(NcS@s ||kS(N((tsto((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyts(R (R R ((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyt__lt__scC@s|j|d„ƒS(NcS@s ||kS(N((RR((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyRs(R (R R ((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyt__le__scC@s|j|d„ƒS(NcS@s ||kS(N((RR((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyRs(R (R R ((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyt__eq__scC@s|j|d„ƒS(NcS@s ||kS(N((RR((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyRs(R (R R ((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyt__ge__scC@s|j|d„ƒS(NcS@s ||kS(N((RR((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyR s(R (R R ((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyt__gt__scC@s|j|d„ƒS(NcS@s ||kS(N((RR((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyR#s(R (R R ((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyt__ne__"s( t__name__t __module__t__doc__R RRRRRR(((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyRs      tBlobComparableMixincB@seZdZd„ZRS(s@Allow blob objects to be comparable with both strings and blobs.cC@s;t|tƒr"||jƒ|ƒStt|ƒj||ƒS(N(t isinstanceRRtsuperRR (R R R ((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyR *s(RRRR (((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyR&stStringlikeMixincB@seZdZd„Zd„Zd„Zd„Zd„Zd„Zde j d„Z de j d „Z de j d „Z de j d „Zde j d „Zde j d „ZeZeZd„Zd„Zde j d„Zdd„Zd„Zd„Zd„Ze j d„ZRS(sMake blob objects behave like Python strings. Expects that classes that use this mixin to have a _strkey() method that returns the string to apply string methods to. Using _strkey() instead of __str__ ensures consistent behavior between Python 2 and 3. cC@s_|jj}tr'|jƒjdƒn t|ƒ}djd|d|ƒ}tr[t|ƒS|S(s.Returns a string representation for debugging.sutf-8s{cls}("{text}")tclsttext(t __class__RRt __unicode__tencodetstrtformatR(R t class_nameRtret((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyt__repr__;s  ' cC@s |jƒS(sQReturns a string representation used in print statements or str(my_blob).(t_strkey(R ((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyt__str__CscC@st|jƒƒS(s#Returns the length of the raw text.(tlenR((R ((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyt__len__HscC@st|jƒƒS(sqMakes the object iterable as if it were a string, iterating through the raw string's characters. (titerR((R ((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyt__iter__LscC@s||jƒkS(s1Implements the `in` keyword like a Python string.(R((R tsub((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyt __contains__RscC@s8t|tƒr|jƒ|S|j|jƒ|ƒSdS(sÅReturns a substring. If index is an integer, returns a Python string of a single character. If a range is given, e.g. `blob[3:5]`, a new instance of the class is returned. N(RtintR(R (R tindex((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyt __getitem__VsicC@s|jƒj|||ƒS(sÁBehaves like the built-in str.find() method. Returns an integer, the index of the first occurrence of the substring argument sub in the sub-string given by [start:end]. (R(tfind(R R.tstarttend((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyR3ascC@s|jƒj|||ƒS(sÎBehaves like the built-in str.rfind() method. Returns an integer, the index of he last (right-most) occurence of the substring argument sub in the sub-sequence given by [start:end]. (R(trfind(R R.R4R5((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyR6hscC@s|jƒj|||ƒS(sWLike blob.find() but raise ValueError when the substring is not found. (R(R1(R R.R4R5((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyR1oscC@s|jƒj|||ƒS(sTLike blob.rfind() but raise ValueError when substring is not found. (R(trindex(R R.R4R5((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyR7uscC@s|jƒj|||ƒS(s6Returns True if the blob starts with the given prefix.(R(t startswith(R tprefixR4R5((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyR8{scC@s|jƒj|||ƒS(s4Returns True if the blob ends with the given suffix.(R(tendswith(R tsuffixR4R5((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyR:scC@s|j|jƒjƒƒS(s2Returns a blob object with the text in title-case.(R R(ttitle(R ((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyR<‡scO@s|j|jƒj||ŽƒS(sPerform a string formatting operation, like the built-in `str.format(*args, **kwargs)`. Returns a blob object. (R R(R$(R targstkwargs((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyR$‹scC@s|jƒj||ƒS(s/Behaves like the built-in str.split(). (R(tsplit(R tseptmaxsplit((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyR?‘scC@s|j|jƒj|ƒƒS(s…Behaves like the built-in str.strip([chars]) method. Returns an object with leading and trailing whitespace removed. (R R(tstrip(R tchars((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyRB–scC@s|j|jƒjƒƒS(sNLike str.upper(), returns new object with all upper-cased characters. (R R(tupper(R ((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyRDœscC@s|j|jƒjƒƒS(sNLike str.lower(), returns new object with all lower-cased characters. (R R(tlower(R ((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyRE¡scC@s|j|jƒj|ƒƒS(sÉBehaves like the built-in `str.join(iterable)` method, except returns a blob object. Returns a blob which is the concatenation of the strings or blobs in the iterable. (R R(tjoin(R titerable((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyRF¦scC@s"|j|jƒj|||ƒƒS(s\Return a new blob object with all the occurence of `old` replaced by `new`. (R R(treplace(R toldtnewtcount((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyRH¯sN(RRRR'R)R+R-R/R2tsystmaxsizeR3R6R1R7R8R:t starts_witht ends_withR<R$tNoneR?RBRDRERFRH(((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyR1s.            ( t __future__RRLttextblob.compatRRRRtobjectRRR(((se/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/mixins.pyts  "