[Patches] [ python-Patches-680863 ] replace() method in unicode objects

SourceForge.net noreply at sourceforge.net
Thu Oct 21 04:47:56 CEST 2004


Patches item #680863, was opened at 2003-02-05 08:15
Message generated for change (Comment added) made by nnorwitz
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=680863&group_id=5470

Category: Core (C code)
Group: Python 2.2.x
>Status: Closed
>Resolution: Rejected
Priority: 5
Submitted By: Fredrik Juhlin (faeltir)
Assigned to: Nobody/Anonymous (nobody)
Summary: replace() method in unicode objects

Initial Comment:
Hi,

I found that unlike the string object, the replace()
method in the unicode object doesn't throw an exception
when you supply an empty pattern string. Instead it
slaps on the replace string a few times at the end. 

I'm supplying a patch to make the unicode object behave
like the string object.

I realize that in 2.3, doing replace() with an empty
pattern string will work differently so maybe you don't
consider throwing an exception the Right Way(TM), but
I'm presenting it to you in case you (like me) thinks
it's just better if unicode and string objects behave
in the same way while not changing the way that string
objects currently work in 2.2.

Best regards,
Fredrik Juhlin

----------------------------------------------------------------------

>Comment By: Neal Norwitz (nnorwitz)
Date: 2004-10-20 22:47

Message:
Logged In: YES 
user_id=33168

This patch appears to only be useful for 2.2.x which isn't
maintained any longer.  Since it would also change
behaviour, I'm rejecting it.

----------------------------------------------------------------------

Comment By: Just van Rossum (jvr)
Date: 2003-02-11 04:40

Message:
Logged In: YES 
user_id=92689

Sorry, it was me who was sleeping. I thought there was both an issue with 2.2.2 as well as with 2.3... It seems 2.3 is fine. Sorry for the added confusion!

----------------------------------------------------------------------

Comment By: Fredrik Juhlin (faeltir)
Date: 2003-02-11 04:15

Message:
Logged In: YES 
user_id=386805

Hello again,

I'm sorry for being unclear, I meant in the release22-maint
branch of the CVS, which I (perhaps mistakenly?) assumed is
the branch that all 2.2.* releases are made from.

Since I thought (apparently correctly) that the change in
2.3 was deliberate, I didn't think it was an issue for the
trunk.

Again, I'm sorry for not being clear on that.


----------------------------------------------------------------------

Comment By: Just van Rossum (jvr)
Date: 2003-02-11 03:37

Message:
Logged In: YES 
user_id=92689

I'm not following you, in 2.3 CVS, "a".replace("", "x") yields "xax", yet with your patch the same thing with a unicode string raises an exception...

----------------------------------------------------------------------

Comment By: Fredrik Juhlin (faeltir)
Date: 2003-02-11 02:30

Message:
Logged In: YES 
user_id=386805

I checked the CVS and saw that it had not been touched,
which is why I supplied the patch to make it act in the same
manner as strings :)

The two options seems to be to either solve it in the manner
that my patch does or make both behave like in 2.3. 

While I realize that my opinion weighs light, not being part
of the coding team in any way, it seems to me like the road
of least surprise is the better way to go for a minor
release and that would be to not change the obviously
deliberate behaviour of the string object.

Well, that's my two cents :)

----------------------------------------------------------------------

Comment By: Neal Norwitz (nnorwitz)
Date: 2003-02-10 15:20

Message:
Logged In: YES 
user_id=33168

The change for 2.3 was on purpose.  See
Objects/stringobject.c 2.184 which fixed SF bug 595350.

Hmmm, unicode doesn't even do it right in 2.2.2+

>>> u"x".replace("", "a")
u'xaa'

Not sure what to do to fix for 2.2.3. :-(


----------------------------------------------------------------------

Comment By: Just van Rossum (jvr)
Date: 2003-02-10 14:36

Message:
Logged In: YES 
user_id=92689

What I'm not sure of is whether the fact that this:
"x".replace("", "a")
raises an exception in 2.2 and "works" in 2.3 is intentional. It returns this in 2.3: 'axa'.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=680863&group_id=5470


More information about the Patches mailing list