Commit 58530c92 authored by Jason Madden's avatar Jason Madden Committed by GitHub

Merge pull request #923 from gevent/issue915-appveyor

Add 3.6.0 to appveyor
parents bcd19af2 448ca394
...@@ -7,6 +7,10 @@ ...@@ -7,6 +7,10 @@
1.2.1 (unreleased) 1.2.1 (unreleased)
================== ==================
- CI services now test on 3.6.0.
- Windows: Provide ``socket.socketpair`` on 3.6.
- Windows: List ``subprocess.STARTUPINFO`` in ``subprocess.__all__``
on 3.6.
- The ``_DummyThread`` objects created by calling - The ``_DummyThread`` objects created by calling
:func:`threading.current_thread` from inside a raw :func:`threading.current_thread` from inside a raw
:class:`greenlet.greenlet` now clean up after themselves when the :class:`greenlet.greenlet` now clean up after themselves when the
......
...@@ -17,43 +17,43 @@ environment: ...@@ -17,43 +17,43 @@ environment:
# PYTHON_VERSION: "2.7.x" # PYTHON_VERSION: "2.7.x"
# PYTHON_ARCH: "32" # PYTHON_ARCH: "32"
- PYTHON: "C:\\Python34-x64" - PYTHON: "C:\\Python36-x64"
PYTHON_VERSION: "3.4.x" # currently 3.4.3 PYTHON_VERSION: "3.6.x" # currently 3.6.0
PYTHON_ARCH: "64" PYTHON_ARCH: "64"
PYTHON_EXE: python PYTHON_EXE: python
- PYTHON: "C:\\Python27-x64" - PYTHON: "C:\\Python27-x64"
PYTHON_VERSION: "2.7.x" # currently 2.7.11 PYTHON_VERSION: "2.7.x" # currently 2.7.13
PYTHON_ARCH: "64" PYTHON_ARCH: "64"
PYTHON_EXE: python PYTHON_EXE: python
- PYTHON: "C:\\Python35-x64" - PYTHON: "C:\\Python34-x64"
PYTHON_VERSION: "3.5.x" # currently 3.5.1 PYTHON_VERSION: "3.4.x" # currently 3.4.4
PYTHON_ARCH: "64" PYTHON_ARCH: "64"
PYTHON_EXE: python PYTHON_EXE: python
- PYTHON: "C:\\Python33-x64" - PYTHON: "C:\\Python35-x64"
PYTHON_VERSION: "3.3.x" # currently 3.3.5 PYTHON_VERSION: "3.5.x" # currently 3.5.2
PYTHON_ARCH: "64" PYTHON_ARCH: "64"
PYTHON_EXE: python PYTHON_EXE: python
- PYTHON: "C:\\Python35" - PYTHON: "C:\\Python35"
PYTHON_VERSION: "3.5.x" # currently 3.5.0 PYTHON_VERSION: "3.5.x" # currently 3.5.2
PYTHON_ARCH: "32" PYTHON_ARCH: "32"
PYTHON_EXE: python PYTHON_EXE: python
- PYTHON: "C:\\Python27" - PYTHON: "C:\\Python27"
PYTHON_VERSION: "2.7.x" # currently 2.7.11 PYTHON_VERSION: "2.7.x" # currently 2.7.13
PYTHON_ARCH: "32" PYTHON_ARCH: "32"
PYTHON_EXE: python PYTHON_EXE: python
- PYTHON: "C:\\Python33" - PYTHON: "C:\\Python34"
PYTHON_VERSION: "3.3.x" # currently 3.3.5 PYTHON_VERSION: "3.4.x" # currently 3.4.3
PYTHON_ARCH: "32" PYTHON_ARCH: "32"
PYTHON_EXE: python PYTHON_EXE: python
- PYTHON: "C:\\Python34" - PYTHON: "C:\\Python36"
PYTHON_VERSION: "3.4.x" # currently 3.4.3 PYTHON_VERSION: "3.6.x" # currently 3.6.0
PYTHON_ARCH: "32" PYTHON_ARCH: "32"
PYTHON_EXE: python PYTHON_EXE: python
......
...@@ -655,8 +655,55 @@ if hasattr(_socket, "socketpair"): ...@@ -655,8 +655,55 @@ if hasattr(_socket, "socketpair"):
b = socket(family, type, proto, b.detach()) b = socket(family, type, proto, b.detach())
return a, b return a, b
elif sys.version_info[:2] >= (3, 6):
# Origin: https://gist.github.com/4325783, by Geert Jansen. Public domain.
# gevent: taken from 3.6 release. Expected to be used only on Win/3.6
# gevent: for testing on < 3.5, pass the default value of 128 to lsock.listen()
# (3.5+ uses this as a default and the original code passed no value)
# gevent: TODO: Expose this for all versions?
_LOCALHOST = '127.0.0.1'
_LOCALHOST_V6 = '::1'
def socketpair(family=AF_INET, type=SOCK_STREAM, proto=0):
if family == AF_INET:
host = _LOCALHOST
elif family == AF_INET6:
host = _LOCALHOST_V6
else:
raise ValueError("Only AF_INET and AF_INET6 socket address families "
"are supported")
if type != SOCK_STREAM:
raise ValueError("Only SOCK_STREAM socket type is supported")
if proto != 0:
raise ValueError("Only protocol zero is supported")
# We create a connected TCP socket. Note the trick with
# setblocking(False) that prevents us from having to create a thread.
lsock = socket(family, type, proto)
try:
lsock.bind((host, 0))
lsock.listen(128)
# On IPv6, ignore flow_info and scope_id
addr, port = lsock.getsockname()[:2]
csock = socket(family, type, proto)
try:
csock.setblocking(False)
try:
csock.connect((addr, port))
except (BlockingIOError, InterruptedError):
pass
csock.setblocking(True)
ssock, _ = lsock.accept()
except:
csock.close()
raise
finally:
lsock.close()
return (ssock, csock)
elif 'socketpair' in __implements__: elif 'socketpair' in __implements__:
# Win32: not available # Win32: not available prior to 3.6
# Multiple imports can cause this to be missing if _socketcommon # Multiple imports can cause this to be missing if _socketcommon
# was successfully imported, leading to subsequent imports to cause # was successfully imported, leading to subsequent imports to cause
# ValueError # ValueError
......
...@@ -141,6 +141,11 @@ if sys.version_info[:2] >= (3, 5): ...@@ -141,6 +141,11 @@ if sys.version_info[:2] >= (3, 5):
except: except:
MAXFD = 256 MAXFD = 256
if sys.version_info[:2] >= (3, 6):
# This was added to __all__ for windows in 3.6
__extra__.remove('STARTUPINFO')
__imports__.append('STARTUPINFO')
actually_imported = copy_globals(__subprocess__, globals(), actually_imported = copy_globals(__subprocess__, globals(),
only_names=__imports__, only_names=__imports__,
ignore_missing_names=True) ignore_missing_names=True)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment