[pypy-commit] pypy py3.5: epoll() objects now support the `with` statement
amauryfa
pypy.commits at gmail.com
Sun Nov 6 12:10:50 EST 2016
Author: Amaury Forgeot d'Arc <amauryfa at 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
More information about the pypy-commit
mailing list