1. 05 May, 2001 9 commits
    • Andrew M. Kuchling's avatar
      Skeletal version; I'm checking this in now so I can keep a list of changes, · a8defaae
      Andrew M. Kuchling authored
         but don't plan on actually writing any text until, ooh, say, July or
         thereabouts.
      a8defaae
    • Tim Peters's avatar
    • Tim Peters's avatar
      Remove redundant line. · 1434299a
      Tim Peters authored
      1434299a
    • Tim Peters's avatar
      Make 'x in y' and 'x not in y' (PySequence_Contains) play nice w/ iterators. · de9725f1
      Tim Peters authored
      NEEDS DOC CHANGES
      A few more AttributeErrors turned into TypeErrors, but in test_contains
      this time.
      The full story for instance objects is pretty much unexplainable, because
      instance_contains() tries its own flavor of iteration-based containment
      testing first, and PySequence_Contains doesn't get a chance at it unless
      instance_contains() blows up.  A consequence is that
          some_complex_number in some_instance
      dies with a TypeError unless some_instance.__class__ defines __iter__ but
      does not define __getitem__.
      de9725f1
    • Tim Peters's avatar
      Make unicode.join() work nice with iterators. This also required a change · 2cfe3682
      Tim Peters authored
      to string.join(), so that when the latter figures out in midstream that
      it really needs unicode.join() instead, unicode.join() can actually get
      all the sequence elements (i.e., there's no guarantee that the sequence
      passed to string.join() can be iterated over *again* by unicode.join(),
      so string.join() must not pass on the original sequence object anymore).
      2cfe3682
    • Tim Peters's avatar
      Mark string.join() as done. Turns out string_join() works "for free" now, · 432b42aa
      Tim Peters authored
      because PySequence_Fast() started working for free as soon as
      PySequence_Tuple() learned how to work with iterators.  For some reason
      unicode.join() still doesn't work, though.
      432b42aa
    • Tim Peters's avatar
      Fix a tiny and unlikely memory leak. Was there before too, and actually · 12d0a6c7
      Tim Peters authored
      several of these turned up and got fixed during the iteration crusade.
      12d0a6c7
    • Tim Peters's avatar
      Generalize tuple() to work nicely with iterators. · 6912d4dd
      Tim Peters authored
      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.
      6912d4dd
    • Tim Peters's avatar
      Make PyIter_Next() a little smarter (wrt its knowledge of iterator · f4848dac
      Tim Peters authored
      internals) so clients can be a lot dumber (wrt their knowledge).
      f4848dac
  2. 04 May, 2001 4 commits
  3. 03 May, 2001 13 commits
  4. 02 May, 2001 12 commits
  5. 01 May, 2001 2 commits