Author: Amaury Forgeot d'Arc <amaur...@gmail.com> Branch: py3.5 Changeset: r88152:332f1e3f75da Date: 2016-11-06 17:09 +0100 http://bitbucket.org/pypy/pypy/changeset/332f1e3f75da/
Log: epoll() objects now support the `with` statement diff --git a/pypy/module/select/interp_epoll.py b/pypy/module/select/interp_epoll.py --- a/pypy/module/select/interp_epoll.py +++ b/pypy/module/select/interp_epoll.py @@ -177,6 +177,13 @@ ) return space.newlist(elist_w) + def descr_enter(self, space): + self.check_closed(space) + return self + + def descr_exit(self, space, __args__): + self.close() + W_Epoll.typedef = TypeDef("select.epoll", __new__ = interp2app(W_Epoll.descr__new__.im_func), @@ -189,5 +196,7 @@ unregister = interp2app(W_Epoll.descr_unregister), modify = interp2app(W_Epoll.descr_modify), poll = interp2app(W_Epoll.descr_poll), + __enter__ = interp2app(W_Epoll.descr_enter), + __exit__ = interp2app(W_Epoll.descr_exit), ) W_Epoll.typedef.acceptable_as_base_class = False diff --git a/pypy/module/select/test/test_epoll.py b/pypy/module/select/test/test_epoll.py --- a/pypy/module/select/test/test_epoll.py +++ b/pypy/module/select/test/test_epoll.py @@ -57,6 +57,16 @@ assert ep.closed raises(ValueError, ep.fileno) + def test_with(self): + import select + + ep = select.epoll(16) + assert ep.fileno() > 0 + with ep: + assert not ep.closed + assert ep.closed + raises(ValueError, ep.__enter__) + def test_badcreate(self): import select _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit