[Python-modules-commits] [uvloop] 01/03: Import uvloop_0.8.1+ds1.orig.tar.gz

Piotr Ożarowski piotr at moszumanska.debian.org
Fri Sep 15 10:46:24 UTC 2017


This is an automated email from the git hooks/post-receive script.

piotr pushed a commit to branch master
in repository uvloop.

commit 2d93eb1eccfe0362caa2666c5242ae2274bb69dd
Author: Piotr Ożarowski <piotr at debian.org>
Date:   Fri Sep 15 12:16:58 2017 +0200

    Import uvloop_0.8.1+ds1.orig.tar.gz
---
 Makefile                     |   19 +-
 PKG-INFO                     |    3 +-
 docs/conf.py                 |    2 +-
 examples/bench/echoclient.py |    2 +-
 setup.py                     |   25 +-
 tests/__init__.py            |   17 +
 tests/test_base.py           |    6 +-
 tests/test_tcp.py            |    3 +
 tests/test_udp.py            |   18 +
 tests/test_unix.py           |    3 +
 uvloop.egg-info/PKG-INFO     |    3 +-
 uvloop.egg-info/SOURCES.txt  |    1 +
 uvloop/__init__.py           |    6 +-
 uvloop/_testbase.py          |   11 +-
 uvloop/loop.c                | 1623 ++++++++++++++++++++++--------------------
 uvloop/loop.pyx              |    5 +-
 16 files changed, 932 insertions(+), 815 deletions(-)

diff --git a/Makefile b/Makefile
index 669b254..20eadcf 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-.PHONY: _default clean clean-libuv distclean compile debug docs test release
+.PHONY: _default clean clean-libuv distclean compile debug docs test testinstalled release
 
 
 PYTHON ?= python
@@ -8,8 +8,8 @@ _default: compile
 
 
 clean:
-	rm -fr dist/ doc/_build/ *.egg-info build/ uvloop/loop.*.pyd
-	rm -fr build/lib.* build/temp.*
+	rm -fr dist/ doc/_build/ *.egg-info uvloop/loop.*.pyd
+	rm -fr build/lib.* build/temp.* build/libuv
 	rm -fr uvloop/*.c uvloop/*.html uvloop/*.so
 	rm -fr uvloop/handles/*.html uvloop/includes/*.html
 	find . -name '__pycache__' | xargs rm -rf
@@ -20,6 +20,7 @@ clean-libuv:
 
 
 distclean: clean clean-libuv
+	rm -fr build/
 
 
 compile: clean
@@ -34,13 +35,17 @@ debug: clean
 		--define UVLOOP_DEBUG,CYTHON_TRACE,CYTHON_TRACE_NOGIL
 
 
-docs: compile
-	cd docs && $(PYTHON) -m sphinx -a -b html . _build/html
+docs:
+	$(PYTHON) setup.py build_ext --inplace build_sphinx
 
 
 test:
-	PYTHONASYNCIODEBUG=1 $(PYTHON) -m unittest discover -s tests
-	$(PYTHON) -m unittest discover -s tests
+	PYTHONASYNCIODEBUG=1 $(PYTHON) setup.py test
+	$(PYTHON) setup.py test
+
+
+testinstalled:
+	$(PYTHON) tests/__init__.py
 
 
 release: distclean compile test
diff --git a/PKG-INFO b/PKG-INFO
index 21c150f..7a0fc13 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,11 +1,12 @@
 Metadata-Version: 1.1
 Name: uvloop
-Version: 0.8.0
+Version: 0.8.1
 Summary: Fast implementation of asyncio event loop on top of libuv
 Home-page: http://github.com/MagicStack/uvloop
 Author: Yury Selivanov
 Author-email: yury at magic.io
 License: MIT
+Description-Content-Type: UNKNOWN
 Description: .. image:: https://travis-ci.org/MagicStack/uvloop.svg?branch=master
             :target: https://travis-ci.org/MagicStack/uvloop
         
diff --git a/docs/conf.py b/docs/conf.py
index d4818b9..ca92b5e 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -8,7 +8,7 @@ import sys
 sys.path.insert(0, os.path.abspath('..'))
 
 with open(os.path.abspath('../setup.py'), 'rt') as f:
-    _m = re.search(r'''version=(?P<q>'|")(?P<ver>[\d\.]+)(?P=q)''', f.read())
+    _m = re.search(r'''VERSION\s*=\s*(?P<q>'|")(?P<ver>[\d\.]+)(?P=q)''', f.read())
     if not _m:
         raise RuntimeError('unable to read the version from setup.py')
     version = _m.group('ver')
diff --git a/examples/bench/echoclient.py b/examples/bench/echoclient.py
index 1cb121b..166d42a 100644
--- a/examples/bench/echoclient.py
+++ b/examples/bench/echoclient.py
@@ -22,7 +22,7 @@ if __name__ == '__main__':
     parser.add_argument('--workers', default=3, type=int,
                         help='number of workers')
     parser.add_argument('--addr', default='127.0.0.1:25000', type=str,
-                        help='number of workers')
+                        help='address:port of echoserver')
     args = parser.parse_args()
 
     unix = False
diff --git a/setup.py b/setup.py
index ae9a65a..7e9d32d 100644
--- a/setup.py
+++ b/setup.py
@@ -4,7 +4,6 @@ import re
 import shutil
 import subprocess
 import sys
-import unittest
 
 
 if sys.platform in ('win32', 'cygwin', 'cli'):
@@ -23,18 +22,12 @@ from setuptools.command.build_ext import build_ext as build_ext
 from setuptools.command.sdist import sdist as sdist
 
 
-VERSION = '0.8.0'
+VERSION = '0.8.1'
 CFLAGS = ['-O2']
 LIBUV_DIR = os.path.join(os.path.dirname(__file__), 'vendor', 'libuv')
 LIBUV_BUILD_DIR = os.path.join(os.path.dirname(__file__), 'build', 'libuv')
 
 
-def discover_tests():
-    test_loader = unittest.TestLoader()
-    test_suite = test_loader.discover('tests', pattern='test_*.py')
-    return test_suite
-
-
 def _libuv_build_env():
     env = os.environ.copy()
 
@@ -80,6 +73,12 @@ class uvloop_build_ext(build_ext):
     ]
 
     def initialize_options(self):
+        # initialize_options() may be called multiple times on the
+        # same command object, so make sure not to override previously
+        # set options.
+        if getattr(self, '_initialized', False):
+            return
+
         super().initialize_options()
         self.use_system_libuv = False
         self.cython_always = False
@@ -87,6 +86,12 @@ class uvloop_build_ext(build_ext):
         self.cython_directives = None
 
     def finalize_options(self):
+        # finalize_options() may be called multiple times on the
+        # same command object, so make sure not to override previously
+        # set options.
+        if getattr(self, '_initialized', False):
+            return
+
         need_cythonize = self.cython_always
         cfiles = {}
 
@@ -141,6 +146,8 @@ class uvloop_build_ext(build_ext):
 
         super().finalize_options()
 
+        self._initialized = True
+
     def _patch_cfile(self, cfile):
         # Patch Cython 'async def' coroutines to have a 'tp_iter'
         # slot, which makes them compatible with 'yield from' without
@@ -303,5 +310,5 @@ setup(
     ],
     provides=['uvloop'],
     include_package_data=True,
-    test_suite='setup.discover_tests'
+    test_suite='tests.suite'
 )
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..0f18e3f
--- /dev/null
+++ b/tests/__init__.py
@@ -0,0 +1,17 @@
+import os.path
+import sys
+import unittest
+import unittest.runner
+
+
+def suite():
+    test_loader = unittest.TestLoader()
+    test_suite = test_loader.discover(
+        os.path.dirname(__file__), pattern='test_*.py')
+    return test_suite
+
+
+if __name__ == '__main__':
+    runner = unittest.runner.TextTestRunner()
+    result = runner.run(suite())
+    sys.exit(not result.wasSuccessful())
diff --git a/tests/test_base.py b/tests/test_base.py
index 397c64f..96bb3ee 100644
--- a/tests/test_base.py
+++ b/tests/test_base.py
@@ -171,9 +171,9 @@ class _TestBase:
         self.assertEqual(calls, ['a'])
 
     def test_call_at(self):
-        if os.environ.get('TRAVIS_OS_NAME') == 'osx':
-            # Time seems to be really unpredictable on Travis' macOS.
-            raise unittest.SkipTest('time is not monotonic on Travis/macOS')
+        if os.environ.get('TRAVIS_OS_NAME'):
+            # Time seems to be really unpredictable on Travis.
+            raise unittest.SkipTest('time is not monotonic on Travis')
 
         i = 0
 
diff --git a/tests/test_tcp.py b/tests/test_tcp.py
index b323a3a..08d4eb6 100644
--- a/tests/test_tcp.py
+++ b/tests/test_tcp.py
@@ -842,6 +842,9 @@ class Test_AIO_TCP(_TestTCP, tb.AIOTestCase):
 
 class _TestSSL(tb.SSLTestCase):
 
+    ONLYCERT = tb._cert_fullname(__file__, 'ssl_cert.pem')
+    ONLYKEY = tb._cert_fullname(__file__, 'ssl_key.pem')
+
     def test_create_server_ssl_1(self):
         CNT = 0           # number of clients that were successful
         TOTAL_CNT = 25    # total number of clients that test will create
diff --git a/tests/test_udp.py b/tests/test_udp.py
index 545d595..fe3c4ec 100644
--- a/tests/test_udp.py
+++ b/tests/test_udp.py
@@ -97,6 +97,24 @@ class _TestUDP:
                 server.transport.close()
                 self.loop.run_until_complete(server.done)
 
+    def test_create_datagram_endpoint_ipv6_family(self):
+        class TestMyDatagramProto(MyDatagramProto):
+            def __init__(inner_self):
+                super().__init__(loop=self.loop)
+
+            def datagram_received(self, data, addr):
+                super().datagram_received(data, addr)
+                self.transport.sendto(b'resp:' + data, addr)
+
+        coro = self.loop.create_datagram_endpoint(
+            TestMyDatagramProto, local_addr=None, family=socket.AF_INET6)
+        s_transport = None
+        try:
+            s_transport, server = self.loop.run_until_complete(coro)
+        finally:
+            if s_transport:
+                s_transport.close()
+
     def test_create_datagram_endpoint_sock(self):
         sock = None
         local_address = ('127.0.0.1', 0)
diff --git a/tests/test_unix.py b/tests/test_unix.py
index 2d39843..e76d0b0 100644
--- a/tests/test_unix.py
+++ b/tests/test_unix.py
@@ -420,6 +420,9 @@ class Test_AIO_Unix(_TestUnix, tb.AIOTestCase):
 
 class _TestSSL(tb.SSLTestCase):
 
+    ONLYCERT = tb._cert_fullname(__file__, 'ssl_cert.pem')
+    ONLYKEY = tb._cert_fullname(__file__, 'ssl_key.pem')
+
     def test_create_unix_server_ssl_1(self):
         CNT = 0           # number of clients that were successful
         TOTAL_CNT = 25    # total number of clients that test will create
diff --git a/uvloop.egg-info/PKG-INFO b/uvloop.egg-info/PKG-INFO
index 21c150f..7a0fc13 100644
--- a/uvloop.egg-info/PKG-INFO
+++ b/uvloop.egg-info/PKG-INFO
@@ -1,11 +1,12 @@
 Metadata-Version: 1.1
 Name: uvloop
-Version: 0.8.0
+Version: 0.8.1
 Summary: Fast implementation of asyncio event loop on top of libuv
 Home-page: http://github.com/MagicStack/uvloop
 Author: Yury Selivanov
 Author-email: yury at magic.io
 License: MIT
+Description-Content-Type: UNKNOWN
 Description: .. image:: https://travis-ci.org/MagicStack/uvloop.svg?branch=master
             :target: https://travis-ci.org/MagicStack/uvloop
         
diff --git a/uvloop.egg-info/SOURCES.txt b/uvloop.egg-info/SOURCES.txt
index 6902df4..3c54232 100644
--- a/uvloop.egg-info/SOURCES.txt
+++ b/uvloop.egg-info/SOURCES.txt
@@ -13,6 +13,7 @@ docs/user/index.rst
 examples/bench/echoclient.py
 examples/bench/echoserver.py
 examples/bench/rlserver.py
+tests/__init__.py
 tests/test_aiohttp.py
 tests/test_base.py
 tests/test_cython.py
diff --git a/uvloop/__init__.py b/uvloop/__init__.py
index 19df010..c68698d 100644
--- a/uvloop/__init__.py
+++ b/uvloop/__init__.py
@@ -2,9 +2,9 @@ import asyncio
 
 from asyncio.events import BaseDefaultEventLoopPolicy as __BasePolicy
 
-from . import includes as __includes
-from . import _patch
-from .loop import Loop as __BaseLoop, Future
+from . import includes as __includes  # NOQA
+from . import _patch  # NOQA
+from .loop import Loop as __BaseLoop, Future  # NOQA
 
 
 __all__ = ('new_event_loop', 'EventLoopPolicy')
diff --git a/uvloop/_testbase.py b/uvloop/_testbase.py
index 6ae9220..2607160 100644
--- a/uvloop/_testbase.py
+++ b/uvloop/_testbase.py
@@ -133,10 +133,10 @@ class BaseTestCase(unittest.TestCase, metaclass=BaseTestCaseMeta):
     def skip_unclosed_handles_check(self):
         self._check_unclosed_resources_in_debug = False
 
-def _cert_fullname(name):
-    fullname = os.path.join(
-        os.path.dirname(os.path.dirname(__file__)),
-        'tests', 'certs', name)
+
+def _cert_fullname(test_file_name, cert_file_name):
+    fullname = os.path.abspath(os.path.join(
+        os.path.dirname(test_file_name), 'certs', cert_file_name))
     assert os.path.isfile(fullname)
     return fullname
 
@@ -173,9 +173,6 @@ def find_free_port(start_from=50000):
 
 class SSLTestCase:
 
-    ONLYCERT = _cert_fullname('ssl_cert.pem')
-    ONLYKEY = _cert_fullname('ssl_key.pem')
-
     def _create_server_ssl_context(self, certfile, keyfile=None):
         sslcontext = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
         sslcontext.options |= ssl.OP_NO_SSLv2
diff --git a/uvloop/loop.c b/uvloop/loop.c
index ca88d36..7b607c4 100644
--- a/uvloop/loop.c
+++ b/uvloop/loop.c
@@ -1877,7 +1877,7 @@ struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_18_genexpr {
 };
 
 
-/* "uvloop/loop.pyx":2508
+/* "uvloop/loop.pyx":2511
  *         self._asyncgens.add(agen)
  * 
  *     async def shutdown_asyncgens(self):             # <<<<<<<<<<<<<<
@@ -1952,7 +1952,7 @@ struct __pyx_obj_6uvloop_4loop___pyx_scope_struct_23___pyx_f_6uvloop_4loop__chai
 };
 
 
-/* "uvloop/loop.pyx":2640
+/* "uvloop/loop.pyx":2643
  * ########### Stuff for tests:
  * 
  * async def _test_coroutine_1():             # <<<<<<<<<<<<<<
@@ -3981,12 +3981,13 @@ static const char __pyx_k_zip[] = "zip";
 static const char __pyx_k_NSIG[] = "NSIG";
 static const char __pyx_k_PIPE[] = "PIPE";
 static const char __pyx_k_Task[] = "Task";
-static const char __pyx_k__108[] = "<";
-static const char __pyx_k__109[] = " ";
-static const char __pyx_k__110[] = ">";
-static const char __pyx_k__117[] = "{} ({})";
-static const char __pyx_k__143[] = ":";
-static const char __pyx_k__154[] = "=";
+static const char __pyx_k__103[] = "::";
+static const char __pyx_k__111[] = "<";
+static const char __pyx_k__112[] = " ";
+static const char __pyx_k__113[] = ">";
+static const char __pyx_k__120[] = "{} ({})";
+static const char __pyx_k__146[] = ":";
+static const char __pyx_k__157[] = "=";
 static const char __pyx_k_addr[] = "addr";
 static const char __pyx_k_args[] = "args";
 static const char __pyx_k_bind[] = "bind";
@@ -4810,12 +4811,13 @@ static PyObject *__pyx_kp_u_Write_events;
 static PyObject *__pyx_kp_u_Write_failed_callbacks;
 static PyObject *__pyx_kp_u_Write_without_poll;
 static PyObject *__pyx_kp_u_You_must_set_server_hostname_whe;
-static PyObject *__pyx_kp_u__108;
-static PyObject *__pyx_kp_u__109;
-static PyObject *__pyx_kp_u__110;
-static PyObject *__pyx_kp_u__117;
-static PyObject *__pyx_kp_b__143;
-static PyObject *__pyx_kp_b__154;
+static PyObject *__pyx_kp_u__103;
+static PyObject *__pyx_kp_u__111;
+static PyObject *__pyx_kp_u__112;
+static PyObject *__pyx_kp_u__113;
+static PyObject *__pyx_kp_u__120;
+static PyObject *__pyx_kp_b__146;
+static PyObject *__pyx_kp_b__157;
 static PyObject *__pyx_n_s__30;
 static PyObject *__pyx_kp_b__30;
 static PyObject *__pyx_kp_u__30;
@@ -5685,20 +5687,19 @@ static PyObject *__pyx_tuple__99;
 static PyObject *__pyx_tuple__100;
 static PyObject *__pyx_tuple__101;
 static PyObject *__pyx_tuple__102;
-static PyObject *__pyx_tuple__103;
 static PyObject *__pyx_tuple__104;
 static PyObject *__pyx_tuple__105;
 static PyObject *__pyx_tuple__106;
 static PyObject *__pyx_tuple__107;
-static PyObject *__pyx_tuple__111;
-static PyObject *__pyx_tuple__112;
-static PyObject *__pyx_tuple__113;
+static PyObject *__pyx_tuple__108;
+static PyObject *__pyx_tuple__109;
+static PyObject *__pyx_tuple__110;
 static PyObject *__pyx_tuple__114;
 static PyObject *__pyx_tuple__115;
 static PyObject *__pyx_tuple__116;
+static PyObject *__pyx_tuple__117;
 static PyObject *__pyx_tuple__118;
 static PyObject *__pyx_tuple__119;
-static PyObject *__pyx_tuple__120;
 static PyObject *__pyx_tuple__121;
 static PyObject *__pyx_tuple__122;
 static PyObject *__pyx_tuple__123;
@@ -5721,9 +5722,9 @@ static PyObject *__pyx_tuple__139;
 static PyObject *__pyx_tuple__140;
 static PyObject *__pyx_tuple__141;
 static PyObject *__pyx_tuple__142;
+static PyObject *__pyx_tuple__143;
 static PyObject *__pyx_tuple__144;
 static PyObject *__pyx_tuple__145;
-static PyObject *__pyx_tuple__146;
 static PyObject *__pyx_tuple__147;
 static PyObject *__pyx_tuple__148;
 static PyObject *__pyx_tuple__149;
@@ -5731,9 +5732,9 @@ static PyObject *__pyx_tuple__150;
 static PyObject *__pyx_tuple__151;
 static PyObject *__pyx_tuple__152;
 static PyObject *__pyx_tuple__153;
+static PyObject *__pyx_tuple__154;
 static PyObject *__pyx_tuple__155;
 static PyObject *__pyx_tuple__156;
-static PyObject *__pyx_tuple__157;
 static PyObject *__pyx_tuple__158;
 static PyObject *__pyx_tuple__159;
 static PyObject *__pyx_tuple__160;
@@ -5765,33 +5766,36 @@ static PyObject *__pyx_tuple__185;
 static PyObject *__pyx_tuple__186;
 static PyObject *__pyx_tuple__187;
 static PyObject *__pyx_tuple__188;
+static PyObject *__pyx_tuple__189;
 static PyObject *__pyx_tuple__190;
-static PyObject *__pyx_tuple__192;
-static PyObject *__pyx_tuple__194;
-static PyObject *__pyx_tuple__196;
-static PyObject *__pyx_tuple__198;
-static PyObject *__pyx_tuple__200;
-static PyObject *__pyx_tuple__202;
-static PyObject *__pyx_tuple__204;
-static PyObject *__pyx_tuple__206;
-static PyObject *__pyx_tuple__208;
+static PyObject *__pyx_tuple__191;
+static PyObject *__pyx_tuple__193;
+static PyObject *__pyx_tuple__195;
+static PyObject *__pyx_tuple__197;
+static PyObject *__pyx_tuple__199;
+static PyObject *__pyx_tuple__201;
+static PyObject *__pyx_tuple__203;
+static PyObject *__pyx_tuple__205;
+static PyObject *__pyx_tuple__207;
 static PyObject *__pyx_tuple__209;
 static PyObject *__pyx_tuple__211;
+static PyObject *__pyx_tuple__212;
+static PyObject *__pyx_tuple__214;
 static PyObject *__pyx_codeobj__21;
 static PyObject *__pyx_codeobj__23;
-static PyObject *__pyx_codeobj__189;
-static PyObject *__pyx_codeobj__191;
-static PyObject *__pyx_codeobj__193;
-static PyObject *__pyx_codeobj__195;
-static PyObject *__pyx_codeobj__197;
-static PyObject *__pyx_codeobj__199;
-static PyObject *__pyx_codeobj__201;
-static PyObject *__pyx_codeobj__203;
-static PyObject *__pyx_codeobj__205;
-static PyObject *__pyx_codeobj__207;
+static PyObject *__pyx_codeobj__192;
+static PyObject *__pyx_codeobj__194;
+static PyObject *__pyx_codeobj__196;
+static PyObject *__pyx_codeobj__198;
+static PyObject *__pyx_codeobj__200;
+static PyObject *__pyx_codeobj__202;
+static PyObject *__pyx_codeobj__204;
+static PyObject *__pyx_codeobj__206;
+static PyObject *__pyx_codeobj__208;
 static PyObject *__pyx_codeobj__210;
-static PyObject *__pyx_codeobj__212;
 static PyObject *__pyx_codeobj__213;
+static PyObject *__pyx_codeobj__215;
+static PyObject *__pyx_codeobj__216;
 
 /* "uvloop/errors.pyx":1
  * cdef str __strerr(int errno):             # <<<<<<<<<<<<<<
@@ -43050,7 +43054,7 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L24_resume_from_yield;
     case 2: goto __pyx_L31_resume_from_yield;
-    case 3: goto __pyx_L67_resume_from_yield;
+    case 3: goto __pyx_L68_resume_from_yield;
     default: /* CPython raises the right error here */
     __Pyx_RefNannyFinishContext();
     return NULL;
@@ -44149,8 +44153,8 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
  *                     self._sock_set_reuseport(udp._fileno())
  * 
  *                 socket = udp._get_socket()             # <<<<<<<<<<<<<<
- *                 socket.bind(('0.0.0.0', 0))
- *             else:
+ *                 if family == uv.AF_INET6:
+ *                     socket.bind(('::', 0))
  */
       __pyx_t_3 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._get_socket(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_cur_scope->__pyx_v_udp)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2435, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
@@ -44161,16 +44165,58 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
       /* "uvloop/loop.pyx":2436
  * 
  *                 socket = udp._get_socket()
- *                 socket.bind(('0.0.0.0', 0))             # <<<<<<<<<<<<<<
- *             else:
- *                 lai = (<AddrInfo>lads).data
+ *                 if family == uv.AF_INET6:             # <<<<<<<<<<<<<<
+ *                     socket.bind(('::', 0))
+ *                 else:
  */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_socket, __pyx_n_s_bind); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2436, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyInt_From_int(AF_INET6); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2436, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__104, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2436, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_5 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_family, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2436, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 2436, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      if (__pyx_t_1) {
+
+        /* "uvloop/loop.pyx":2437
+ *                 socket = udp._get_socket()
+ *                 if family == uv.AF_INET6:
+ *                     socket.bind(('::', 0))             # <<<<<<<<<<<<<<
+ *                 else:
+ *                     socket.bind(('0.0.0.0', 0))
+ */
+        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_socket, __pyx_n_s_bind); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2437, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__105, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2437, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+        /* "uvloop/loop.pyx":2436
+ * 
+ *                 socket = udp._get_socket()
+ *                 if family == uv.AF_INET6:             # <<<<<<<<<<<<<<
+ *                     socket.bind(('::', 0))
+ *                 else:
+ */
+        goto __pyx_L38;
+      }
+
+      /* "uvloop/loop.pyx":2439
+ *                     socket.bind(('::', 0))
+ *                 else:
+ *                     socket.bind(('0.0.0.0', 0))             # <<<<<<<<<<<<<<
+ *             else:
+ *                 lai = (<AddrInfo>lads).data
+ */
+      /*else*/ {
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_socket, __pyx_n_s_bind); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2439, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__107, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2439, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      }
+      __pyx_L38:;
 
       /* "uvloop/loop.pyx":2420
  * 
@@ -44182,8 +44228,8 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
       goto __pyx_L32;
     }
 
-    /* "uvloop/loop.pyx":2438
- *                 socket.bind(('0.0.0.0', 0))
+    /* "uvloop/loop.pyx":2441
+ *                     socket.bind(('0.0.0.0', 0))
  *             else:
  *                 lai = (<AddrInfo>lads).data             # <<<<<<<<<<<<<<
  *                 while lai is not NULL:
@@ -44193,7 +44239,7 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
       __pyx_t_14 = ((struct __pyx_obj_6uvloop_4loop_AddrInfo *)__pyx_cur_scope->__pyx_v_lads)->data;
       __pyx_cur_scope->__pyx_v_lai = __pyx_t_14;
 
-      /* "uvloop/loop.pyx":2439
+      /* "uvloop/loop.pyx":2442
  *             else:
  *                 lai = (<AddrInfo>lads).data
  *                 while lai is not NULL:             # <<<<<<<<<<<<<<
@@ -44204,7 +44250,7 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
         __pyx_t_1 = ((__pyx_cur_scope->__pyx_v_lai != NULL) != 0);
         if (!__pyx_t_1) break;
 
-        /* "uvloop/loop.pyx":2440
+        /* "uvloop/loop.pyx":2443
  *                 lai = (<AddrInfo>lads).data
  *                 while lai is not NULL:
  *                     try:             # <<<<<<<<<<<<<<
@@ -44220,58 +44266,58 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
           __Pyx_XGOTREF(__pyx_t_18);
           /*try:*/ {
 
-            /* "uvloop/loop.pyx":2441
+            /* "uvloop/loop.pyx":2444
  *                 while lai is not NULL:
  *                     try:
  *                         udp = UDPTransport.__new__(UDPTransport)             # <<<<<<<<<<<<<<
  *                         udp._init(self, lai.ai_family)
  *                         if reuse_port:
  */
-            __pyx_t_5 = __pyx_tp_new_6uvloop_4loop_UDPTransport(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_UDPTransport), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2441, __pyx_L40_error)
+            __pyx_t_5 = __pyx_tp_new_6uvloop_4loop_UDPTransport(((PyTypeObject *)__pyx_ptype_6uvloop_4loop_UDPTransport), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2444, __pyx_L41_error)
             __Pyx_GOTREF(__pyx_t_5);
-            if (!(likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6uvloop_4loop_UDPTransport)))) __PYX_ERR(1, 2441, __pyx_L40_error)
+            if (!(likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6uvloop_4loop_UDPTransport)))) __PYX_ERR(1, 2444, __pyx_L41_error)
             __Pyx_GOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_udp));
             __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_udp, ((struct __pyx_obj_6uvloop_4loop_UDPTransport *)__pyx_t_5));
             __Pyx_GIVEREF(__pyx_t_5);
             __pyx_t_5 = 0;
 
-            /* "uvloop/loop.pyx":2442
+            /* "uvloop/loop.pyx":2445
  *                     try:
  *                         udp = UDPTransport.__new__(UDPTransport)
  *                         udp._init(self, lai.ai_family)             # <<<<<<<<<<<<<<
  *                         if reuse_port:
  *                             self._sock_set_reuseport(udp._fileno())
  */
-            __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_init(__pyx_cur_scope->__pyx_v_udp, __pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_lai->ai_family); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2442, __pyx_L40_error)
+            __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_init(__pyx_cur_scope->__pyx_v_udp, __pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_lai->ai_family); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2445, __pyx_L41_error)
             __Pyx_GOTREF(__pyx_t_5);
             __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-            /* "uvloop/loop.pyx":2443
+            /* "uvloop/loop.pyx":2446
  *                         udp = UDPTransport.__new__(UDPTransport)
  *                         udp._init(self, lai.ai_family)
  *                         if reuse_port:             # <<<<<<<<<<<<<<
  *                             self._sock_set_reuseport(udp._fileno())
  *                         udp._bind(lai.ai_addr, reuse_address)
  */
-            __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_reuse_port); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 2443, __pyx_L40_error)
+            __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_reuse_port); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 2446, __pyx_L41_error)
             if (__pyx_t_1) {
 
-              /* "uvloop/loop.pyx":2444
+              /* "uvloop/loop.pyx":2447
  *                         udp._init(self, lai.ai_family)
  *                         if reuse_port:
  *                             self._sock_set_reuseport(udp._fileno())             # <<<<<<<<<<<<<<
  *                         udp._bind(lai.ai_addr, reuse_address)
  *                     except Exception as ex:
  */
-              __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._fileno(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_cur_scope->__pyx_v_udp)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2444, __pyx_L40_error)
+              __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._fileno(((struct __pyx_obj_6uvloop_4loop_UVSocketHandle *)__pyx_cur_scope->__pyx_v_udp)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2447, __pyx_L41_error)
               __Pyx_GOTREF(__pyx_t_5);
-              __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2444, __pyx_L40_error)
+              __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2447, __pyx_L41_error)
               __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-              __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_sock_set_reuseport(__pyx_cur_scope->__pyx_v_self, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2444, __pyx_L40_error)
+              __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_Loop *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_sock_set_reuseport(__pyx_cur_scope->__pyx_v_self, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2447, __pyx_L41_error)
               __Pyx_GOTREF(__pyx_t_5);
               __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-              /* "uvloop/loop.pyx":2443
+              /* "uvloop/loop.pyx":2446
  *                         udp = UDPTransport.__new__(UDPTransport)
  *                         udp._init(self, lai.ai_family)
  *                         if reuse_port:             # <<<<<<<<<<<<<<
@@ -44280,19 +44326,19 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
  */
             }
 
-            /* "uvloop/loop.pyx":2445
+            /* "uvloop/loop.pyx":2448
  *                         if reuse_port:
  *                             self._sock_set_reuseport(udp._fileno())
  *                         udp._bind(lai.ai_addr, reuse_address)             # <<<<<<<<<<<<<<
  *                     except Exception as ex:
  *                         lai = lai.ai_next
  */
-            __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_reuse_address); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2445, __pyx_L40_error)
-            __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_bind(__pyx_cur_scope->__pyx_v_udp, __pyx_cur_scope->__pyx_v_lai->ai_addr, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2445, __pyx_L40_error)
+            __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_reuse_address); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2448, __pyx_L41_error)
+            __pyx_t_5 = ((struct __pyx_vtabstruct_6uvloop_4loop_UDPTransport *)__pyx_cur_scope->__pyx_v_udp->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_bind(__pyx_cur_scope->__pyx_v_udp, __pyx_cur_scope->__pyx_v_lai->ai_addr, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2448, __pyx_L41_error)
             __Pyx_GOTREF(__pyx_t_5);
             __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-            /* "uvloop/loop.pyx":2440
+            /* "uvloop/loop.pyx":2443
  *                 lai = (<AddrInfo>lads).data
  *                 while lai is not NULL:
  *                     try:             # <<<<<<<<<<<<<<
@@ -44301,7 +44347,7 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
  */
           }
 
-          /* "uvloop/loop.pyx":2451
+          /* "uvloop/loop.pyx":2454
  *                         continue
  *                     else:
  *                         break             # <<<<<<<<<<<<<<
@@ -44309,9 +44355,9 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
  *                     ctx = None
  */
           /*else:*/ {
-            goto __pyx_L45_try_break;
+            goto __pyx_L46_try_break;
           }
-          __pyx_L40_error:;
+          __pyx_L41_error:;
           __Pyx_PyThreadState_assign
           __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -44319,7 +44365,7 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
           __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
           __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-          /* "uvloop/loop.pyx":2446
+          /* "uvloop/loop.pyx":2449
  *                             self._sock_set_reuseport(udp._fileno())
  *                         udp._bind(lai.ai_addr, reuse_address)
  *                     except Exception as ex:             # <<<<<<<<<<<<<<
@@ -44329,7 +44375,7 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
           __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
           if (__pyx_t_9) {
             __Pyx_AddTraceback("uvloop.loop.Loop.create_datagram_endpoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_3, &__pyx_t_8) < 0) __PYX_ERR(1, 2446, __pyx_L42_except_error)
+            if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_3, &__pyx_t_8) < 0) __PYX_ERR(1, 2449, __pyx_L43_except_error)
             __Pyx_GOTREF(__pyx_t_5);
             __Pyx_GOTREF(__pyx_t_3);
             __Pyx_GOTREF(__pyx_t_8);
@@ -44338,7 +44384,7 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
             __pyx_cur_scope->__pyx_v_ex = __pyx_t_3;
             /*try:*/ {
 
-              /* "uvloop/loop.pyx":2447
+              /* "uvloop/loop.pyx":2450
  *                         udp._bind(lai.ai_addr, reuse_address)
  *                     except Exception as ex:
  *                         lai = lai.ai_next             # <<<<<<<<<<<<<<
@@ -44348,26 +44394,26 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
               __pyx_t_14 = __pyx_cur_scope->__pyx_v_lai->ai_next;
               __pyx_cur_scope->__pyx_v_lai = __pyx_t_14;
 
-              /* "uvloop/loop.pyx":2448
+              /* "uvloop/loop.pyx":2451
  *                     except Exception as ex:
  *                         lai = lai.ai_next
  *                         excs.append(ex)             # <<<<<<<<<<<<<<
  *                         continue
  *                     else:
  */
-              __pyx_t_19 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_excs, __pyx_cur_scope->__pyx_v_ex); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(1, 2448, __pyx_L54_error)
+              __pyx_t_19 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_excs, __pyx_cur_scope->__pyx_v_ex); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(1, 2451, __pyx_L55_error)
 
-              /* "uvloop/loop.pyx":2449
+              /* "uvloop/loop.pyx":2452
  *                         lai = lai.ai_next
  *                         excs.append(ex)
  *                         continue             # <<<<<<<<<<<<<<
  *                     else:
  *                         break
  */
-              goto __pyx_L51_continue;
+              goto __pyx_L52_continue;
             }
 
-            /* "uvloop/loop.pyx":2446
+            /* "uvloop/loop.pyx":2449
  *                             self._sock_set_reuseport(udp._fileno())
  *                         udp._bind(lai.ai_addr, reuse_address)
  *                     except Exception as ex:             # <<<<<<<<<<<<<<
@@ -44377,7 +44423,7 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
             /*finally:*/ {
               /*exception exit:*/{
                 __Pyx_PyThreadState_declare
-                __pyx_L54_error:;
+                __pyx_L55_error:;
                 __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0;
                 __Pyx_PyThreadState_assign
                 __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -44409,25 +44455,25 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
                 __Pyx_ErrRestore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
                 __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0;
                 __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_20;
-                goto __pyx_L42_except_error;
+                goto __pyx_L43_except_error;
               }
-              __pyx_L51_continue: {
+              __pyx_L52_continue: {
                 __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_ex);
                 __Pyx_DECREF(__pyx_cur_scope->__pyx_v_ex);
                 __pyx_cur_scope->__pyx_v_ex = NULL;
-                goto __pyx_L50_except_continue;
+                goto __pyx_L51_except_continue;
               }
             }
-            __pyx_L50_except_continue:;
+            __pyx_L51_except_continue:;
             __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
             __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-            goto __pyx_L46_try_continue;
+            goto __pyx_L47_try_continue;
           }
-          goto __pyx_L42_except_error;
-          __pyx_L42_except_error:;
+          goto __pyx_L43_except_error;
+          __pyx_L43_except_error:;
 
-          /* "uvloop/loop.pyx":2440
+          /* "uvloop/loop.pyx":2443
  *                 lai = (<AddrInfo>lads).data
  *                 while lai is not NULL:
  *                     try:             # <<<<<<<<<<<<<<
@@ -44440,25 +44486,25 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
           __Pyx_XGIVEREF(__pyx_t_18);
           __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
           goto __pyx_L1_error;
-          __pyx_L45_try_break:;
+          __pyx_L46_try_break:;
           __Pyx_PyThreadState_assign
           __Pyx_XGIVEREF(__pyx_t_16);
           __Pyx_XGIVEREF(__pyx_t_17);
           __Pyx_XGIVEREF(__pyx_t_18);
           __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
-          goto __pyx_L39_break;
-          __pyx_L46_try_continue:;
+          goto __pyx_L40_break;
+          __pyx_L47_try_continue:;
           __Pyx_PyThreadState_assign
           __Pyx_XGIVEREF(__pyx_t_16);
           __Pyx_XGIVEREF(__pyx_t_17);
           __Pyx_XGIVEREF(__pyx_t_18);
           __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
-          goto __pyx_L38_continue;
+          goto __pyx_L39_continue;
         }
-        __pyx_L38_continue:;
+        __pyx_L39_continue:;
       }
 
-      /* "uvloop/loop.pyx":2453
+      /* "uvloop/loop.pyx":2456
  *                         break
  *                 else:
  *                     ctx = None             # <<<<<<<<<<<<<<
@@ -44470,32 +44516,32 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
         __Pyx_GIVEREF(Py_None);
         __pyx_cur_scope->__pyx_v_ctx = Py_None;
 
-        /* "uvloop/loop.pyx":2454
+        /* "uvloop/loop.pyx":2457
  *                 else:
  *                     ctx = None
  *                     if len(excs):             # <<<<<<<<<<<<<<
  *                         ctx = excs[0]
  *                     raise OSError('could not bind to local_addr {}'.format(
  */
-        __pyx_t_12 = PyList_GET_SIZE(__pyx_cur_scope->__pyx_v_excs); if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(1, 2454, __pyx_L1_error)
+        __pyx_t_12 = PyList_GET_SIZE(__pyx_cur_scope->__pyx_v_excs); if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(1, 2457, __pyx_L1_error)
         __pyx_t_1 = (__pyx_t_12 != 0);
         if (__pyx_t_1) {
 
-          /* "uvloop/loop.pyx":2455
+          /* "uvloop/loop.pyx":2458
  *                     ctx = None
  *                     if len(excs):
  *                         ctx = excs[0]             # <<<<<<<<<<<<<<
  *                     raise OSError('could not bind to local_addr {}'.format(
  *                         local_addr)) from ctx
  */
-          __pyx_t_8 = __Pyx_GetItemInt_List(__pyx_cur_scope->__pyx_v_excs, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2455, __pyx_L1_error)
+          __pyx_t_8 = __Pyx_GetItemInt_List(__pyx_cur_scope->__pyx_v_excs, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2458, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_8);
           __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_ctx);
           __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_ctx, __pyx_t_8);
           __Pyx_GIVEREF(__pyx_t_8);
           __pyx_t_8 = 0;
 
-          /* "uvloop/loop.pyx":2454
+          /* "uvloop/loop.pyx":2457
  *                 else:
  *                     ctx = None
  *                     if len(excs):             # <<<<<<<<<<<<<<
@@ -44504,17 +44550,17 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
  */
         }
 
-        /* "uvloop/loop.pyx":2456
+        /* "uvloop/loop.pyx":2459
  *                     if len(excs):
  *                         ctx = excs[0]
  *                     raise OSError('could not bind to local_addr {}'.format(             # <<<<<<<<<<<<<<
  *                         local_addr)) from ctx
  * 
  */
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_could_not_bind_to_local_addr, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2456, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_could_not_bind_to_local_addr, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2459, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
 
-        /* "uvloop/loop.pyx":2457
+        /* "uvloop/loop.pyx":2460
  *                         ctx = excs[0]
  *                     raise OSError('could not bind to local_addr {}'.format(
  *                         local_addr)) from ctx             # <<<<<<<<<<<<<<
@@ -44532,13 +44578,13 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
           }
         }
         if (!__pyx_t_5) {
-          __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_cur_scope->__pyx_v_local_addr); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2456, __pyx_L1_error)
+          __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_cur_scope->__pyx_v_local_addr); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2459, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_8);
         } else {
           #if CYTHON_FAST_PYCALL
           if (PyFunction_Check(__pyx_t_3)) {
             PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_local_addr};
-            __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2456, __pyx_L1_error)
+            __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2459, __pyx_L1_error)
             __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
             __Pyx_GOTREF(__pyx_t_8);
           } else
@@ -44546,42 +44592,42 @@ static PyObject *__pyx_gb_6uvloop_4loop_4Loop_115generator11(__pyx_CoroutineObje
           #if CYTHON_FAST_PYCCALL
           if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
             PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_local_addr};
-            __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2456, __pyx_L1_error)
+            __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2459, __pyx_L1_error)
             __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
             __Pyx_GOTREF(__pyx_t_8);
           } else
           #endif
           {
-            __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2456, __pyx_L1_error)
+            __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2459, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_4);
             __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
             __Pyx_INCREF(__pyx_cur_scope->__pyx_v_local_addr);
             __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_local_addr);
             PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_cur_scope->__pyx_v_local_addr);
-            __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2456, __pyx_L1_error)
+            __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2459, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_8);
             __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
           }
         }
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-        /* "uvloop/loop.pyx":2456
+        /* "uvloop/loop.pyx":2459
  *                     if len(excs):
... 4173 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/uvloop.git



More information about the Python-modules-commits mailing list