[pypy-commit] pypy default: support length of a builder

fijal noreply at buildbot.pypy.org
Thu Oct 6 04:05:34 CEST 2011


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: 
Changeset: r47837:b9e14afe8066
Date: 2011-10-04 16:08 +0200
http://bitbucket.org/pypy/pypy/changeset/b9e14afe8066/

Log:	support length of a builder

diff --git a/pypy/module/__pypy__/interp_builders.py b/pypy/module/__pypy__/interp_builders.py
--- a/pypy/module/__pypy__/interp_builders.py
+++ b/pypy/module/__pypy__/interp_builders.py
@@ -40,6 +40,12 @@
             self.builder = None
             return w_s
 
+        def descr_len(self, space):
+            if self.builder is None:
+                raise OperationError(space.w_ValueError,
+                                     space.wrap('no lenght of built builder'))
+            return space.wrap(self.builder.getlength())
+
     W_Builder.__name__ = "W_%s" % name
     W_Builder.typedef = TypeDef(name,
         __new__ = interp2app(func_with_new_name(
@@ -48,6 +54,7 @@
         append = interp2app(W_Builder.descr_append),
         append_slice = interp2app(W_Builder.descr_append_slice),
         build = interp2app(W_Builder.descr_build),
+        __len__ = interp2app(W_Builder.descr_len),
     )
     W_Builder.typedef.acceptable_as_base_class = False
     return W_Builder
diff --git a/pypy/module/__pypy__/test/test_builders.py b/pypy/module/__pypy__/test/test_builders.py
--- a/pypy/module/__pypy__/test/test_builders.py
+++ b/pypy/module/__pypy__/test/test_builders.py
@@ -38,7 +38,9 @@
         b = StringBuilder()
         b.append("abc")
         b.append("123")
+        assert len(b) == 6
         b.append("you and me")
         s = b.build()
+        raises(ValueError, len, b)
         assert s == "abc123you and me"
-        raises(ValueError, b.build)
\ No newline at end of file
+        raises(ValueError, b.build)


More information about the pypy-commit mailing list