[Python-checkins] peps: Choose cancelled. Add/remove connector. Misc small additions.
guido.van.rossum
python-checkins at python.org
Thu Dec 20 18:26:16 CET 2012
http://hg.python.org/peps/rev/74117f4eaa3d
changeset: 4624:74117f4eaa3d
user: Guido van Rossum <guido at google.com>
date: Thu Dec 20 09:26:11 2012 -0800
summary:
Choose cancelled. Add/remove connector. Misc small additions.
files:
pep-3156.txt | 42 +++++++++++++++++++++++----------------
1 files changed, 25 insertions(+), 17 deletions(-)
diff --git a/pep-3156.txt b/pep-3156.txt
--- a/pep-3156.txt
+++ b/pep-3156.txt
@@ -160,7 +160,7 @@
- No more calls scheduled with ``call_later()``,
``call_repeatedly()``, ``call_soon()``, or
- ``call_soon_threadsafe()``, except for canceled calls.
+ ``call_soon_threadsafe()``, except for cancelled calls.
- No more registered file descriptors. It is up to the registering
party to unregister a file descriptor when it is closed.
@@ -171,6 +171,8 @@
Note: if you schedule a call with ``call_repeatedly()``, ``run()``
will not exit until you cancel it.
+ TBD: A method to run the loop forever, i.e. until ``stop()`` is called?
+
- ``stop()``. Stops the event loop as soon as it is convenient. It
is fine to restart the loop with ``run()`` (or one of its variants)
subsequently.
@@ -203,7 +205,7 @@
- ``call_later(delay, callback, *args)``. Arrange for
``callback(*args)`` to be called approximately ``delay`` seconds in
- the future, once, unless canceled. Returns
+ the future, once, unless cancelled. Returns
a ``Handler`` object representing the callback, whose
``cancel()`` method can be used to cancel the callback.
@@ -226,7 +228,7 @@
- TBD: A way to register a callback that is already wrapped in a
``Handler``. Maybe ``call_soon()`` could just check
``isinstance(callback, Handler)``? It should silently skip
- a canceled callback.
+ a cancelled callback.
Some methods in the standard conforming interface return Futures:
@@ -335,6 +337,13 @@
- ``remove_writer(fd)``. This is to ``add_writer()`` as
``remove_reader()`` is to ``add_reader()``.
+- ``add_connector(fd, callback, *args)``. Like ``add_writer()`` but
+ meant to wait for ``connect()`` operations, which on some platforms
+ require different handling (e.g. ``WSAPoll()`` on Windows).
+
+- ``remove_connector(fd)``. This is to ``remove_writer()`` as
+ ``add_connector()`` is to ``add_writer()``.
+
TBD: What about multiple callbacks per fd? The current semantics is
that ``add_reader()/add_writer()`` replace a previously registered
callback. Change this to raise an exception if a callback is already
@@ -433,7 +442,7 @@
- ``args``. The argument tuple with which to call the callback function.
-- ``canceled``. True if ``cancel()`` has been called.
+- ``cancelled``. True if ``cancel()`` has been called.
Note that some callbacks (e.g. those registered with ``call_later()``)
are meant to be called only once. Others (e.g. those registered with
@@ -552,8 +561,6 @@
t.write(b'e')
t.write(b'f')
- (TBD: What about datagram transports?)
-
- ``writelines(iterable)``. Equivalent to::
for data in iterable:
@@ -638,8 +645,6 @@
p.data_received(b'abc')
p.data_received(b'def')
- (TBD: What about datagram transports?)
-
- ``eof_received()``. This is called when the other end called
``write_eof()`` (or something equivalent). The default
implementation calls ``close()`` on the transport, which causes
@@ -761,9 +766,9 @@
returns a result, that becomes the task's result, if it raises an
exception, that becomes the task's exception.
-Canceling a task that's not done yet prevents its coroutine from
+Cancelling a task that's not done yet prevents its coroutine from
completing; in this case an exception is thrown into the coroutine
-that it may catch to further handle cancelation, but it doesn't have
+that it may catch to further handle cancellation, but it doesn't have
to (this is done using the standard ``close()`` method on generators,
described in PEP 342).
@@ -822,7 +827,7 @@
Cancellation
------------
-TBD. When a Task is canceled its coroutine may see an exception at
+TBD. When a Task is cancelled its coroutine may see an exception at
any point where it is yielding to the scheduler (i.e., potentially at
any ``yield from`` operation). We need to spell out which exception
is raised.
@@ -833,12 +838,9 @@
Open Issues
===========
-- How to spell the past tense of 'cancel'? American usage prefers
- (though not absolutely dictates) 'canceled' (one ell), but outside
- the US 'cancelled' (two ells) prevails. PEP 3148, whose author
- currently lives in Australia, uses ``cancelled()`` as a method name
- on its Future class. Also, even in the US, 'cancellation' seems
- to be preferred over cancelation.
+- A debugging API? E.g. something that logs a lot of stuff, or logs
+ unusual conditions (like queues filling up faster than they drain)
+ or even callbacks taking too much time...
- Do we need introspection APIs? E.g. asking for the read callback
given a file descriptor. Or when the next scheduled call is. Or
@@ -883,6 +885,12 @@
fs.remove(f)
<inspect f>
+- Support for datagram protocols, "connected" or otherwise? Probably
+ need more socket I/O methods, e.g. ``sock_sendto()`` and
+ ``sock_recvfrom()``. Or users can write their own (it's not rocket
+ science). Is it reasonable to map ``write()``, ``writelines()``,
+ ``data_received()`` to single datagrams?
+
- Task or callback priorities? (I hope not.)
--
Repository URL: http://hg.python.org/peps
More information about the Python-checkins
mailing list