-
Notifications
You must be signed in to change notification settings - Fork 541
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Bump Cython to 0.29.36 * Add missing new API -- timeout param to shutdown_default_executor * Stop using the beloved, but now deprecated, 'IF' * Explicitly qualify void-returning callback functions as `noexcept`. * Fix test_libuv_get_loop_t_ptr to work under Python 3.12 * "Fix" the failing asyncio tests by adding a sleep() call * Add 3.12 to CI scripts * Stop configuring watchers for asyncio tests under 3.12+ * Add the new timeout parameter of shutdown_default_executor to typeshed * Implement uvloop.run() * Add pyproject.toml and update CI Co-authored-by: Fantix King <[email protected]>
- Loading branch information
Showing
33 changed files
with
468 additions
and
157 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
[project] | ||
name = "uvloop" | ||
description = "Fast implementation of asyncio event loop on top of libuv" | ||
authors = [{name = "Yury Selivanov", email = "[email protected]"}] | ||
requires-python = '>=3.7.0' | ||
readme = "README.rst" | ||
license = {text = "MIT License"} | ||
dynamic = ["version"] | ||
keywords = [ | ||
"asyncio", | ||
"networking", | ||
] | ||
classifiers = [ | ||
"Development Status :: 5 - Production/Stable", | ||
"Framework :: AsyncIO", | ||
"Intended Audience :: Developers", | ||
"License :: OSI Approved :: Apache Software License", | ||
"License :: OSI Approved :: MIT License", | ||
"Operating System :: POSIX", | ||
"Operating System :: MacOS :: MacOS X", | ||
"Programming Language :: Python :: 3 :: Only", | ||
"Programming Language :: Python :: 3.7", | ||
"Programming Language :: Python :: 3.8", | ||
"Programming Language :: Python :: 3.9", | ||
"Programming Language :: Python :: 3.10", | ||
"Programming Language :: Python :: 3.11", | ||
"Programming Language :: Python :: 3.12", | ||
"Programming Language :: Python :: Implementation :: CPython", | ||
"Topic :: System :: Networking", | ||
] | ||
|
||
[project.urls] | ||
github = "https://github.com/MagicStack/uvloop" | ||
|
||
[project.optional-dependencies] | ||
test = [ | ||
# pycodestyle is a dependency of flake8, but it must be frozen because | ||
# their combination breaks too often | ||
# (example breakage: https://gitlab.com/pycqa/flake8/issues/427) | ||
'aiohttp>=3.8.1; python_version < "3.12"', | ||
'aiohttp==3.9.0b0; python_version >= "3.12"', | ||
'flake8~=5.0', | ||
'psutil', | ||
'pycodestyle~=2.9.0', | ||
'pyOpenSSL~=23.0.0', | ||
'mypy>=0.800', | ||
'Cython(>=0.29.36,<0.30.0)', | ||
] | ||
docs = [ | ||
'Sphinx~=4.1.2', | ||
'sphinxcontrib-asyncio~=0.3.0', | ||
'sphinx_rtd_theme~=0.5.2', | ||
] | ||
|
||
[build-system] | ||
requires = [ | ||
"setuptools>=60", | ||
"wheel", | ||
"Cython(>=0.29.36,<0.30.0)", | ||
] | ||
build-backend = "setuptools.build_meta" | ||
|
||
[tool.setuptools] | ||
zip-safe = false | ||
packages = ["uvloop"] | ||
|
||
[tool.cibuildwheel] | ||
build-frontend = "build" | ||
test-extras = "test" | ||
test-command = "python -m unittest discover -v {project}/tests" | ||
|
||
[tool.pytest.ini_options] | ||
addopts = "--capture=no --assert=plain --strict-markers --tb=native --import-mode=importlib" | ||
testpaths = "tests" | ||
filterwarnings = "default" |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -21,40 +21,7 @@ | |
from setuptools.command.sdist import sdist | ||
|
||
|
||
CYTHON_DEPENDENCY = 'Cython(>=0.29.32,<0.30.0)' | ||
|
||
# Minimal dependencies required to test uvloop. | ||
TEST_DEPENDENCIES = [ | ||
# pycodestyle is a dependency of flake8, but it must be frozen because | ||
# their combination breaks too often | ||
# (example breakage: https://gitlab.com/pycqa/flake8/issues/427) | ||
'aiohttp>=3.8.1', | ||
'flake8~=5.0', | ||
'psutil', | ||
'pycodestyle~=2.9.0', | ||
'pyOpenSSL~=23.0.0', | ||
'mypy>=0.800', | ||
CYTHON_DEPENDENCY, | ||
] | ||
|
||
# Dependencies required to build documentation. | ||
DOC_DEPENDENCIES = [ | ||
'Sphinx~=4.1.2', | ||
'sphinxcontrib-asyncio~=0.3.0', | ||
'sphinx_rtd_theme~=0.5.2', | ||
] | ||
|
||
EXTRA_DEPENDENCIES = { | ||
'docs': DOC_DEPENDENCIES, | ||
'test': TEST_DEPENDENCIES, | ||
# Dependencies required to develop uvloop. | ||
'dev': [ | ||
CYTHON_DEPENDENCY, | ||
'pytest>=3.6.0', | ||
] + DOC_DEPENDENCIES + TEST_DEPENDENCIES | ||
} | ||
|
||
|
||
CYTHON_DEPENDENCY = 'Cython(>=0.29.36,<0.30.0)' | ||
MACHINE = platform.machine() | ||
MODULES_CFLAGS = [os.getenv('UVLOOP_OPT_CFLAGS', '-O2')] | ||
_ROOT = pathlib.Path(__file__).parent | ||
|
@@ -245,10 +212,6 @@ def build_extensions(self): | |
super().build_extensions() | ||
|
||
|
||
with open(str(_ROOT / 'README.rst')) as f: | ||
readme = f.read() | ||
|
||
|
||
with open(str(_ROOT / 'uvloop' / '_version.py')) as f: | ||
for line in f: | ||
if line.startswith('__version__ ='): | ||
|
@@ -268,16 +231,7 @@ def build_extensions(self): | |
|
||
|
||
setup( | ||
name='uvloop', | ||
description='Fast implementation of asyncio event loop on top of libuv', | ||
long_description=readme, | ||
url='http://github.com/MagicStack/uvloop', | ||
license='MIT', | ||
author='Yury Selivanov', | ||
author_email='[email protected]', | ||
platforms=['macOS', 'POSIX'], | ||
version=VERSION, | ||
packages=['uvloop'], | ||
cmdclass={ | ||
'sdist': uvloop_sdist, | ||
'build_ext': uvloop_build_ext | ||
|
@@ -291,20 +245,5 @@ def build_extensions(self): | |
extra_compile_args=MODULES_CFLAGS | ||
), | ||
], | ||
classifiers=[ | ||
'Development Status :: 5 - Production/Stable', | ||
'Framework :: AsyncIO', | ||
'Programming Language :: Python :: 3 :: Only', | ||
'Programming Language :: Python :: 3.7', | ||
'Programming Language :: Python :: 3.8', | ||
'Programming Language :: Python :: 3.9', | ||
'Programming Language :: Python :: 3.10', | ||
'License :: OSI Approved :: Apache Software License', | ||
'License :: OSI Approved :: MIT License', | ||
'Intended Audience :: Developers', | ||
], | ||
include_package_data=True, | ||
extras_require=EXTRA_DEPENDENCIES, | ||
setup_requires=setup_requires, | ||
python_requires='>=3.7', | ||
) |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,23 @@ | ||
from uvloop import _testbase as tb | ||
from uvloop.loop import libuv_get_loop_t_ptr, libuv_get_version | ||
from uvloop.loop import _testhelper_unwrap_capsuled_pointer as unwrap | ||
|
||
|
||
class Test_UV_libuv(tb.UVTestCase): | ||
def test_libuv_get_loop_t_ptr(self): | ||
loop = self.new_loop() | ||
cap1 = libuv_get_loop_t_ptr(loop) | ||
cap2 = libuv_get_loop_t_ptr(loop) | ||
cap3 = libuv_get_loop_t_ptr(self.new_loop()) | ||
loop1 = self.new_loop() | ||
cap1 = libuv_get_loop_t_ptr(loop1) | ||
cap2 = libuv_get_loop_t_ptr(loop1) | ||
|
||
import pyximport | ||
loop2 = self.new_loop() | ||
cap3 = libuv_get_loop_t_ptr(loop2) | ||
|
||
pyximport.install() | ||
|
||
import cython_helper | ||
|
||
self.assertTrue(cython_helper.capsule_equals(cap1, cap2)) | ||
self.assertFalse(cython_helper.capsule_equals(cap1, cap3)) | ||
try: | ||
self.assertEqual(unwrap(cap1), unwrap(cap2)) | ||
self.assertNotEqual(unwrap(cap1), unwrap(cap3)) | ||
finally: | ||
loop1.close() | ||
loop2.close() | ||
|
||
def test_libuv_get_version(self): | ||
self.assertGreater(libuv_get_version(), 0) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
import asyncio | ||
import unittest | ||
import uvloop | ||
|
||
|
||
class TestSourceCode(unittest.TestCase): | ||
|
||
def test_uvloop_run_1(self): | ||
CNT = 0 | ||
|
||
async def main(): | ||
nonlocal CNT | ||
CNT += 1 | ||
|
||
loop = asyncio.get_running_loop() | ||
|
||
self.assertTrue(isinstance(loop, uvloop.Loop)) | ||
self.assertTrue(loop.get_debug()) | ||
|
||
return 'done' | ||
|
||
result = uvloop.run(main(), debug=True) | ||
|
||
self.assertEqual(result, 'done') | ||
self.assertEqual(CNT, 1) | ||
|
||
def test_uvloop_run_2(self): | ||
|
||
async def main(): | ||
pass | ||
|
||
coro = main() | ||
with self.assertRaisesRegex(TypeError, ' a non-uvloop event loop'): | ||
uvloop.run( | ||
coro, | ||
loop_factory=asyncio.DefaultEventLoopPolicy().new_event_loop, | ||
) | ||
|
||
coro.close() |
Oops, something went wrong.