Name: python-uvloop Version: 0.19.0 Release: %autorelease Summary: Ultra fast implementation of asyncio event loop on top of libuv License: MIT OR Apache-2.0 URL: https://github.com/MagicStack/uvloop Source: %{url}/archive/v%{version}/uvloop-%{version}.tar.gz # Fix compatibility with Cython 3. Patch: https://github.com/MagicStack/uvloop/pull/587.patch BuildRequires: gcc BuildRequires: libuv-devel BuildRequires: python3-devel # We avoid generating this via the “dev” dependency, because that would bring # in unwanted documentation dependencies too. BuildRequires: %{py3_dist pytest} %global _description \ uvloop is a fast, drop-in replacement of the built-in asyncio event loop.\ uvloop is implemented in Cython and uses libuv under the hood. %description %{_description} %package -n python3-uvloop Summary: %{summary} %description -n python3-uvloop %{_description} %prep %autosetup -p1 -n uvloop-%{version} # There currently doesn’t appear to be a way to pass through these “build_ext # options,” so we resort to patching the defaults. Some related discussion # appears in https://github.com/pypa/setuptools/issues/3896. # # always use cython to generate code (and generate a build dependency on it) sed -i -e "/self.cython_always/s/False/True/" setup.py # use system libuv sed -i -e "/self.use_system_libuv/s/False/True/" setup.py # To be sure, no 3rd-party stuff rm -vrf vendor/ # - https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_linters # - Loosen SemVer pins; we must work with what we have available, especially # for test dependencies! sed -r -i \ -e "s/^([[:blank:]]*)([\"'](flake8|pycodestyle|mypy)\b)/\\1# \\2/" \ -e 's/~=/>=/' \ pyproject.toml # We don’t have aiohttp==3.9.0b0; see if we can make do with the packaged # version. sed -r -i 's/aiohttp==3.9.0b0;/aiohttp>=3.9.0b0;/' pyproject.toml # Require Cython 3.x sed -i 's/\(Cython\)(>=0.29.36,<0.30.0)/\1>=3/' pyproject.toml %generate_buildrequires %pyproject_buildrequires -x test %build %pyproject_wheel %install %pyproject_install %pyproject_save_files uvloop # Don’t ship C sources and headers. find '%{buildroot}%{python3_sitearch}' -type f -name '*.[ch]' -print -delete sed -r -i '/\.[ch]$/d' %{pyproject_files} %check %ifarch ppc64le # ignore tests that fail on ppc64le ignore="${ignore-} --ignore=tests/test_pipes.py" %endif # https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_linters ignore="${ignore-} --ignore=tests/test_sourcecode.py" # Don’t import the “un-built” uvloop from the build directory. mkdir -p _empty cd _empty ln -s ../tests/ . # test_getaddrinfo_8 and _9 run getaddrinfo with zero-length inputs # libuv 1.48.0+ rejects that # reported as https://github.com/MagicStack/uvloop/issues/596 %pytest -v ${ignore-} -k "not test_getaddrinfo_8 and not test_getaddrinfo_9" %files -n python3-uvloop -f %{pyproject_files} #license LICENSE-APACHE LICENSE-MIT %doc README.rst %changelog %autochangelog