[Python-checkins] CVS: python/dist/src/Misc NEWS,1.154,1.155

Tim Peters tim_one@users.sourceforge.net
Fri, 04 May 2001 20:56:39 -0700


Update of /cvsroot/python/python/dist/src/Misc
In directory usw-pr-cvs1:/tmp/cvs-serv17966/python/dist/src/Misc

Modified Files:
	NEWS 
Log Message:
Generalize tuple() to work nicely with iterators.
NEEDS DOC CHANGES.
This one surprised me!  While I expected tuple() to be a no-brainer, turns
out it's actually dripping with consequences:
1. It will *allow* the popular PySequence_Fast() to work with any iterable
   object (code for that not yet checked in, but should be trivial).
2. It caused two std tests to fail.  This because some places used
   PyTuple_Sequence() (the C spelling of tuple()) as an indirect way to test
   whether something *is* a sequence.  But tuple() code only looked for the
   existence of sq->item to determine that, and e.g. an instance passed
   that test whether or not it supported the other operations tuple()
   needed (e.g., __len__).  So some things the tests *expected* to fail
   with an AttributeError now fail with a TypeError instead.  This looks
   like an improvement to me; e.g., test_coercion used to produce 559
   TypeErrors and 2 AttributeErrors, and now they're all TypeErrors.  The
   error details are more informative too, because the places calling this
   were *looking* for TypeErrors in order to replace the generic tuple()
   "not a sequence" msg with their own more specific text, and
   AttributeErrors snuck by that.


Index: NEWS
===================================================================
RCS file: /cvsroot/python/python/dist/src/Misc/NEWS,v
retrieving revision 1.154
retrieving revision 1.155
diff -C2 -r1.154 -r1.155
*** NEWS	2001/05/04 13:40:18	1.154
--- NEWS	2001/05/05 03:56:37	1.155
***************
*** 25,31 ****
      reduce()
      XXX TODO string.join(), unicode.join()
!     XXX TODO tuple()
      XXX TODO zip()
!     XXX TODO 'x in y' (!) (?)
  
  What's New in Python 2.1 (final)?
--- 25,31 ----
      reduce()
      XXX TODO string.join(), unicode.join()
!     tuple()
      XXX TODO zip()
!     XXX TODO 'x in y'
  
  What's New in Python 2.1 (final)?