[Patches] [ python-Patches-479551 ] fix complex() with 2 string args

noreply@sourceforge.net noreply@sourceforge.net
Thu, 08 Nov 2001 08:02:42 -0800


Patches item #479551, was opened at 2001-11-08 05:21
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=305470&aid=479551&group_id=5470

Category: Core (C code)
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Michael Hudson (mwh)
Assigned to: Fred L. Drake, Jr. (fdrake)
Summary: fix complex() with 2 string args

Initial Comment:
reported on c.l.py

>>> complex ("1", "1")
(1+0j)

>From my reading of the docs, this should fail.  Patch
does this, adds test case.

Assigned to Fred, largely at random.

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

>Comment By: Skip Montanaro (montanaro)
Date: 2001-11-08 08:02

Message:
Logged In: YES 
user_id=44345

Yeah, I didn't think they were that different.  I had already completed (but not completed testing) my patch when I saw your c.l.py patch.  Once I completed testing I simple wrapped it up and uploaded it.  I figure Fred can merge our two versions as well as we can. ;-)

(As for diff-mode, it's likely the same thing as in Emacs 21.1, but XEmacs 21.1 didn't have a diff mode at all, so I was quite surprised the other day after upgrading to XEmacs 21.4 when I visited a .diff file and had it pop into diff-mode.  Today, to create my complex patch, I just cvs diff'd the entire Python tree, edited the file in diff-mode and used M-k/M-n to migrate around, deleting the stuff unrelated to this patch.  I didn't have to figure out what lines to cut.  When I deleted the last chunk for a particular file it automatically zapped the file's header as well.  I was in diff heaven... ;-)


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

Comment By: Michael Hudson (mwh)
Date: 2001-11-08 07:47

Message:
Logged In: YES 
user_id=6656

Agree with your changes to complexobject.c, though they're
not v. different from mine.

Your tests reproduce what's in test_b1.py so are probably
redunant.

I don't think you can read the current docs with your head
screwed on and get the wrong idea, but am willing to defer
to Fred on that one...

What does XEmacs 21.4's diff-mode do that GNU Emacs 21.1's
doesn't?

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

Comment By: Skip Montanaro (montanaro)
Date: 2001-11-08 07:31

Message:
Logged In: YES 
user_id=44345

I have a slightly different patch.  If the first arg is not
a string, the second arg can't be a string.  The current
implementation raises a TypeError with a not entirely
comprehensible message, so I added a special case to catch
that.  Also, my test cases are in test_complex.py instead of
test_b1.py and I have some doc changes.  (God, I just
*loooove* the new diff-mode in XEmacs 21.4.  Ya gotta try it
-- if you're not a vi-head, that is!)


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

Comment By: Grant Griffin (dspguru)
Date: 2001-11-08 07:13

Message:
Logged In: YES 
user_id=70844

I agree with the discussion on c.l.py as to the 
interpretation of the docs, so it sounds like Michael's 
patch is a good thing.  However, along with the patch, I'd 
like to see the docs clarified a little.  Specifically, it 
would be nice if the docs stated that the imaginary part 
(if any) can be specified as part of the string using the 
standard "j" suffix:

   ActivePython 2.1.1, build 212 (ActiveState)
   >>> complex('1+1j')
   (1+1j)

This feature appears to be the reason that a separate 
imaginary argument was disallowed in the string case, so 
spelling that aspect out will help people understand (and 
therefore remember) the rules on this.

=g2

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

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