[Zope-Checkins] SVN: Zope/z212-deprecation-cleanup/lib/python/ZTUtils/ deprecated and removed

Andreas Jung andreas at andreas-jung.com
Mon Jun 30 14:30:52 EDT 2008


Log message for revision 87863:
  deprecated and removed
  

Changed:
  D   Zope/z212-deprecation-cleanup/lib/python/ZTUtils/Iterator.py
  D   Zope/z212-deprecation-cleanup/lib/python/ZTUtils/tests/testIterator.py

-=-
Deleted: Zope/z212-deprecation-cleanup/lib/python/ZTUtils/Iterator.py
===================================================================
--- Zope/z212-deprecation-cleanup/lib/python/ZTUtils/Iterator.py	2008-06-30 18:19:30 UTC (rev 87862)
+++ Zope/z212-deprecation-cleanup/lib/python/ZTUtils/Iterator.py	2008-06-30 18:30:51 UTC (rev 87863)
@@ -1,176 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2002 Zope Corporation and Contributors. All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE
-#
-##############################################################################
-"""Iterator class
-
-BBB 2005/05/01 -- to be removed after 12 months
-
-$Id$
-"""
-import zope.deprecation
-zope.deprecation.deprecated(
-    'Iterator',
-    'Iterator has been deprecated and will be removed in Zope 2.12.  '
-    'PageTemplates now use the Zope 3 implementation.  Use ZopeIterator '
-    'from Products.PageTemplates.Expressions instead.'
-    )
-
-class Iterator:
-    '''Simple Iterator class'''
-
-    __allow_access_to_unprotected_subobjects__ = 1
-
-    nextIndex = 0
-    def __init__(self, seq):
-        self.seq = seq
-        if iterInner._supports(seq, self):
-            self._inner = iterInner
-            self._prep_next = iterInner.prep_next
-            return
-        raise TypeError, "Iterator does not support %s" % `seq`
-
-    def __getattr__(self, name):
-        try:
-            inner = getattr(self._inner, 'it_' + name)
-        except AttributeError:
-            raise AttributeError, name
-        return inner(self)
-
-    def next(self):
-        if not (hasattr(self, '_next') or self._prep_next(self)):
-            return 0
-        self.index = i = self.nextIndex
-        self.nextIndex = i+1
-        self._advance(self)
-        return 1
-
-    def _advance(self, it):
-        self.item = self._next
-        del self._next
-        del self.end
-        self._advance = self._inner.advance
-        self.start = 1
-
-    def number(self): return self.nextIndex
-
-    def even(self): return not self.index % 2
-
-    def odd(self): return self.index % 2
-
-    def parity(self):
-        if self.index % 2:
-            return 'odd'
-        return 'even'
-
-    def letter(self, base=ord('a'), radix=26):
-        index = self.index
-        s = ''
-        while 1:
-            index, off = divmod(index, radix)
-            s = chr(base + off) + s
-            if not index: return s
-
-    def Letter(self):
-        return self.letter(base=ord('A'))
-
-    def Roman(self, rnvalues=(
-                    (1000,'M'),(900,'CM'),(500,'D'),(400,'CD'),
-                    (100,'C'),(90,'XC'),(50,'L'),(40,'XL'),
-                    (10,'X'),(9,'IX'),(5,'V'),(4,'IV'),(1,'I')) ):
-        n = self.index + 1
-        s = ''
-        for v, r in rnvalues:
-            rct, n = divmod(n, v)
-            s = s + r * rct
-        return s
-
-    def roman(self):
-        return self.Roman().lower()
-
-    def first(self, name=None):
-        if self.start: return 1
-        return not self.same_part(name, self._last, self.item)
-
-    def last(self, name=None):
-        if self.end: return 1
-        return not self.same_part(name, self.item, self._next)
-
-    def length(self):
-        return len(self.seq)
-
-    def same_part(self, name, ob1, ob2):
-        if name is None:
-            return ob1 == ob2
-        no = []
-        return getattr(ob1, name, no) == getattr(ob2, name, no) is not no
-
-    def __iter__(self):
-        return IterIter(self)
-
-class InnerBase:
-    '''Base Inner class for Iterators'''
-    # Prep sets up ._next and .end
-    def prep_next(self, it):
-        it.next = self.no_next
-        it.end = 1
-        return 0
-
-    # Advance knocks them down
-    def advance(self, it):
-        it._last = it.item
-        it.item = it._next
-        del it._next
-        del it.end
-        it.start = 0
-
-    def no_next(self, it):
-        return 0
-
-    def it_end(self, it):
-        if hasattr(it, '_next'):
-            return 0
-        return not self.prep_next(it)
-
-class IterInner(InnerBase):
-    '''Iterator inner class for objects with Python iterators'''
-
-    def _supports(self, ob, it):
-        try:
-            it.iter = iter(ob)
-            return 1
-        except:
-            return 0
-
-    def prep_next(self, it):
-        try:
-            it._next = it.iter.next()
-        except StopIteration:
-            it._prep_next = self.no_next
-            it.end = 1
-            return 0
-        it.end = 0
-        return 1
-
-class IterIter:
-    def __init__(self, it):
-        self.it = it
-        self.skip = it.nextIndex > 0 and not it.end
-    def next(self):
-        it = self.it
-        if self.skip:
-            self.skip = 0
-            return it.item
-        if it.next():
-            return it.item
-        raise StopIteration
-
-iterInner = IterInner()

Deleted: Zope/z212-deprecation-cleanup/lib/python/ZTUtils/tests/testIterator.py
===================================================================
--- Zope/z212-deprecation-cleanup/lib/python/ZTUtils/tests/testIterator.py	2008-06-30 18:19:30 UTC (rev 87862)
+++ Zope/z212-deprecation-cleanup/lib/python/ZTUtils/tests/testIterator.py	2008-06-30 18:30:51 UTC (rev 87863)
@@ -1,148 +0,0 @@
-from __future__ import generators
-import os, sys, unittest
-
-import zope.deprecation
-zope.deprecation.__show__.off()
-from ZTUtils import Iterator
-zope.deprecation.__show__.on()
-
-try:
-    iter
-    do_piter_test = 1
-except NameError:
-    do_piter_test = 0
-
-class itemIterator:
-    'Ignore the __getitem__ argument in order to catch non-monotonic access.'
-    def __init__(self, n):
-        self.n = n
-        self.i = 0
-    def __getitem__(self, i):
-        if self.i >= self.n:
-            raise IndexError
-        i = self.i
-        self.i = self.i + 1
-        return i
-
-class genIterator:
-    'Generator-based iteration'
-    def __init__(self, n):
-        self.n = n
-    def __iter__(self):
-      for i in range(self.n):
-        yield i
-
-class IteratorTests(unittest.TestCase):
-
-    def testIterator0(self):
-        it = Iterator(())
-        assert not it.next(), "Empty iterator"
-
-    def testIterator1(self):
-        it = Iterator((1,))
-        assert it.next() and not it.next(), "Single-element iterator"
-
-    def testIteratorMany(self):
-        it = Iterator('text')
-        for c in 'text':
-            assert it.next(), "Multi-element iterator"
-        assert not it.next(), "Multi-element iterator"
-
-    def testStart(self):
-        for size in range(4):
-            it = Iterator(range(size+1))
-            it.next()
-            assert it.start, "Start true on element 1 of %s" % (size + 1)
-            el = 1
-            while it.next():
-                el = el + 1
-                assert not it.start, (
-                    "Start false on element %s of %s" % (el, size+1))
-
-    def testEnd(self):
-        for size in range(4):
-            size = size + 1
-            it = Iterator(range(size))
-            el = 0
-            while it.next():
-                el = el + 1
-                if el == size:
-                    assert it.end, "End true on element %s" % size
-                else:
-                    assert not it.end, (
-                        "End false on element %s of %s" % (el, size))
-
-    def assertRangeMatch(self, ob, n):
-        it = Iterator(ob)
-        for el in range(n):
-            assert it.next(), "Iterator stopped too soon"
-            assert it.index == el, "Incorrect index"
-            assert it.number() == el + 1, "Incorrect number"
-            assert it.item == el, "Incorrect item"
-
-    def testIndex(self):
-        self.assertRangeMatch(range(5), 5)
-        self.assertRangeMatch((0,1,2,3,4), 5)
-        self.assertRangeMatch({0:0, 1:1, 2:2, 3:3, 4:4}, 5)
-        self.assertRangeMatch(itemIterator(5), 5)
-        self.assertRangeMatch(genIterator(5), 5)
-
-    def testFirstLast(self):
-        it = Iterator([1])
-        it.next()
-        assert it.first() == it.last() == 1, "Bad first/last on singleton"
-        four = range(4)
-        for a in 2,3:
-            for b in four:
-                for c in four:
-                    s = 'a' * a + 'b' * b + 'c' * c
-                    it = Iterator(s)
-                    it.next()
-                    assert it.first(), "First element not first()"
-                    last = s[0]
-                    lastlast = it.last()
-                    while it.next():
-                        assert ((it.item != last) == it.first()), (
-                            "first() error")
-                        assert ((it.item != last) == lastlast), (
-                            "last() error" % (it.item,
-                            last, lastlast))
-                        last = it.item
-                        lastlast = it.last()
-                    assert lastlast, "Last element not last()"
-
-    if do_piter_test:
-        def testIterOfIter(self):
-            for i in range(4):
-                r = range(i)
-                it1 = Iterator(r)
-                it2 = Iterator(iter(r))
-                while it1.next() and it2.next():
-                    assert it1.item == it2.item, "Item mismatch with iter()"
-                    assert it1.index == it2.index, (
-                        "Index mismatch with iter()")
-                assert not (it1.next() or it2.next()), (
-                    "Length mismatch with iter()")
-
-        def testIterIter(self):
-            wo_iter = map(lambda x:(x, x), range(4))
-            for i in range(4):
-                r = range(i)
-                w_iter = []
-                it = Iterator(r)
-                for x in it:
-                    w_iter.append((x, it.index))
-                assert w_iter == wo_iter[:i], (
-                    "for-loop failure on full iterator")
-            it = Iterator(range(4))
-            it.next(); it.next(); it.next()
-            w_iter = []
-            for x in it:
-                w_iter.append((x, it.index))
-            assert w_iter == wo_iter[2:], "for-loop failure on half iteration"
-
-def test_suite():
-    return unittest.makeSuite(IteratorTests)
-
-if __name__=='__main__':
-    main()



More information about the Zope-Checkins mailing list