summaryrefslogtreecommitdiffstats
path: root/Lib/asyncio/unix_events.py
diff options
context:
space:
mode:
authorAndrew Svetlov <andrew.svetlov@gmail.com>2017-11-29 16:23:43 (GMT)
committerGitHub <noreply@github.com>2017-11-29 16:23:43 (GMT)
commitcc83920ad267c992bc421987829da04d88ae816b (patch)
treef0d5468502f7c857b6f8afc412898439a257dfad /Lib/asyncio/unix_events.py
parent5d39e0429029324cae90bba2f19fb689b007c7d6 (diff)
downloadcpython-cc83920ad267c992bc421987829da04d88ae816b.zip
cpython-cc83920ad267c992bc421987829da04d88ae816b.tar.gz
cpython-cc83920ad267c992bc421987829da04d88ae816b.tar.bz2
bpo-32166: Drop Python 3.4 code from asyncio (#4612)
* Drop Python 3.4 code from asyncio * Fix notes * Add missing imports * Restore comment * Resort imports * Drop Python 3.4-3.5 specific code * Drop redunant check * Fix tests * Restore _COROUTINE_TYPES order * Remove useless code
Diffstat (limited to 'Lib/asyncio/unix_events.py')
-rw-r--r--Lib/asyncio/unix_events.py58
1 files changed, 9 insertions, 49 deletions
diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py
index 06bcdcc..ab818da 100644
--- a/Lib/asyncio/unix_events.py
+++ b/Lib/asyncio/unix_events.py
@@ -38,13 +38,6 @@ def _sighandler_noop(signum, frame):
pass
-try:
- _fspath = os.fspath
-except AttributeError:
- # Python 3.5 or earlier
- _fspath = lambda path: path
-
-
class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop):
"""Unix event loop.
@@ -74,7 +67,7 @@ class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop):
Raise RuntimeError if there is a problem setting up the handler.
"""
if (coroutines.iscoroutine(callback)
- or coroutines.iscoroutinefunction(callback)):
+ or coroutines.iscoroutinefunction(callback)):
raise TypeError("coroutines cannot be used "
"with add_signal_handler()")
self._check_signal(sig)
@@ -226,7 +219,7 @@ class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop):
raise ValueError(
'path and sock can not be specified at the same time')
- path = _fspath(path)
+ path = os.fspath(path)
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM, 0)
try:
sock.setblocking(False)
@@ -260,7 +253,7 @@ class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop):
raise ValueError(
'path and sock can not be specified at the same time')
- path = _fspath(path)
+ path = os.fspath(path)
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
# Check for abstract socket. `str` and `bytes` paths are supported.
@@ -272,7 +265,8 @@ class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop):
pass
except OSError as err:
# Directory may have permissions only to create socket.
- logger.error('Unable to check or remove stale UNIX socket %r: %r', path, err)
+ logger.error('Unable to check or remove stale UNIX socket '
+ '%r: %r', path, err)
try:
sock.bind(path)
@@ -306,18 +300,6 @@ class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop):
return server
-if hasattr(os, 'set_blocking'):
- def _set_nonblocking(fd):
- os.set_blocking(fd, False)
-else:
- import fcntl
-
- def _set_nonblocking(fd):
- flags = fcntl.fcntl(fd, fcntl.F_GETFL)
- flags = flags | os.O_NONBLOCK
- fcntl.fcntl(fd, fcntl.F_SETFL, flags)
-
-
class _UnixReadPipeTransport(transports.ReadTransport):
max_size = 256 * 1024 # max bytes we read in one event loop iteration
@@ -340,7 +322,7 @@ class _UnixReadPipeTransport(transports.ReadTransport):
self._protocol = None
raise ValueError("Pipe transport is for pipes/sockets only.")
- _set_nonblocking(self._fileno)
+ os.set_blocking(self._fileno, False)
self._loop.call_soon(self._protocol.connection_made, self)
# only start reading when connection_made() has been called
@@ -469,7 +451,7 @@ class _UnixWritePipeTransport(transports._FlowControlMixin,
raise ValueError("Pipe transport is only for "
"pipes, sockets and character devices")
- _set_nonblocking(self._fileno)
+ os.set_blocking(self._fileno, False)
self._loop.call_soon(self._protocol.connection_made, self)
# On AIX, the reader trick (to be notified when the read end of the
@@ -648,22 +630,6 @@ class _UnixWritePipeTransport(transports._FlowControlMixin,
self._loop = None
-if hasattr(os, 'set_inheritable'):
- # Python 3.4 and newer
- _set_inheritable = os.set_inheritable
-else:
- import fcntl
-
- def _set_inheritable(fd, inheritable):
- cloexec_flag = getattr(fcntl, 'FD_CLOEXEC', 1)
-
- old = fcntl.fcntl(fd, fcntl.F_GETFD)
- if not inheritable:
- fcntl.fcntl(fd, fcntl.F_SETFD, old | cloexec_flag)
- else:
- fcntl.fcntl(fd, fcntl.F_SETFD, old & ~cloexec_flag)
-
-
class _UnixSubprocessTransport(base_subprocess.BaseSubprocessTransport):
def _start(self, args, shell, stdin, stdout, stderr, bufsize, **kwargs):
@@ -675,12 +641,6 @@ class _UnixSubprocessTransport(base_subprocess.BaseSubprocessTransport):
# other end). Notably this is needed on AIX, and works
# just fine on other platforms.
stdin, stdin_w = socket.socketpair()
-
- # Mark the write end of the stdin pipe as non-inheritable,
- # needed by close_fds=False on Python 3.3 and older
- # (Python 3.4 implements the PEP 446, socketpair returns
- # non-inheritable sockets)
- _set_inheritable(stdin_w.fileno(), False)
self._proc = subprocess.Popen(
args, shell=shell, stdin=stdin, stdout=stdout, stderr=stderr,
universal_newlines=False, bufsize=bufsize, **kwargs)
@@ -1035,8 +995,8 @@ class _UnixDefaultEventLoopPolicy(events.BaseDefaultEventLoopPolicy):
super().set_event_loop(loop)
- if self._watcher is not None and \
- isinstance(threading.current_thread(), threading._MainThread):
+ if (self._watcher is not None and
+ isinstance(threading.current_thread(), threading._MainThread)):
self._watcher.attach_loop(loop)
def get_child_watcher(self):