python3Packages.sanic: 19.6.3 -> 20.9.1, fix build

This commit is contained in:
Orivej Desh 2020-12-07 11:19:55 +00:00
parent 2b7f718900
commit 475b8adbb8

View file

@ -1,130 +1,40 @@
{ lib { lib, buildPythonPackage, fetchPypi
, buildPythonPackage , aiofiles, httptools, httpx, multidict, ujson, uvloop, websockets
, fetchPypi , pytestCheckHook, beautifulsoup4, gunicorn, httpcore, uvicorn
, httptools , pytest-asyncio, pytest-benchmark, pytest-dependency, pytest-sanic, pytest-sugar, pytestcov
, aiofiles
, websockets
, multidict
, uvloop
, ujson
, pytest
, gunicorn
, aiohttp
, beautifulsoup4
, pytest-sanic
, pytest-benchmark
# required just httpcore / requests-async
, h11
, h2
, certifi
, chardet
, idna
, requests
, rfc3986
, uvicorn
}: }:
let
# This version of sanic depends on two packages that have been deprecated by
# their development teams:
#
# - requests-async [where first line of pypi says to use `http3` instead now]
# - httpcore [where the homepage redirects to `http3` now]
#
# Since no other packages in nixpkg depend on these right now, define these
# packages just as local dependencies here, to avoid bloat.
httpcore = buildPythonPackage rec {
pname = "httpcore";
version = "0.3.0";
src = fetchPypi {
inherit pname version;
sha256 = "0n3bamaixxhcm27gf1ws3g6rkamvqx87087c88r6hyyl52si1ycn";
};
propagatedBuildInputs = [ certifi chardet h11 h2 idna rfc3986 ];
# relax pinned old version of h11
postConfigure = ''
substituteInPlace setup.py \
--replace "h11==0.8.*" "h11"
'';
# LICENCE.md gets propagated without this, causing collisions
postInstall = ''
rm $out/LICENSE.md
'';
};
requests-async = buildPythonPackage rec {
pname = "requests-async";
version = "0.5.0";
src = fetchPypi {
inherit pname version;
sha256 = "8731420451383196ecf2fd96082bfc8ae5103ada90aba185888499d7784dde6f";
};
propagatedBuildInputs = [ requests httpcore ];
# LICENCE.md gets propagated without this, causing collisions
postInstall = ''
rm $out/LICENSE.md
'';
};
in
buildPythonPackage rec { buildPythonPackage rec {
pname = "sanic"; pname = "sanic";
version = "19.6.3"; version = "20.9.1";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "0b1qqsvdjkibrw5kgr0pm7n7jzb1403132wjmb0lx3k5wyvqfi95"; sha256 = "06p0lsxqbfbka2yaqlpp0bg5pf7ma44zi6kq7qbb6hhry48dp1w6";
}; };
patchPhase = ''
substituteInPlace setup.py \
--replace '"multidict==5.0.0"' '"multidict"' \
--replace '"httpx==0.15.4"' '"httpx"' \
--replace '"httpcore==0.3.0"' '"httpcore"' \
--replace '"pytest==5.2.1"' '"pytest"'
'';
propagatedBuildInputs = [ propagatedBuildInputs = [
httptools aiofiles httptools httpx multidict ujson uvloop websockets
aiofiles
websockets
multidict
requests-async
uvloop
ujson
]; ];
checkInputs = [ checkInputs = [
pytest pytestCheckHook beautifulsoup4 gunicorn httpcore uvicorn
gunicorn pytest-asyncio pytest-benchmark pytest-dependency pytest-sanic pytest-sugar pytestcov
aiohttp
beautifulsoup4
pytest-sanic
pytest-benchmark
uvicorn
]; ];
# Sanic says it needs websockets 7.x, but the changelog for 8.x is actually disabledTests = [
# nearly compatible with sanic's use. So relax this constraint, with a small "test_gunicorn" # No "examples" directory in pypi distribution.
# required code change. "test_logo" # Fails to filter out "DEBUG asyncio:selector_events.py:59 Using selector: EpollSelector"
postConfigure = '' "test_zero_downtime" # No "examples.delayed_response.app" module in pypi distribution.
substituteInPlace setup.py --replace \ ];
"websockets>=7.0,<8.0" \
"websockets>=7.0,<9.0"
substituteInPlace sanic/websocket.py --replace \
"self.websocket.subprotocol = subprotocol" \
"self.websocket.subprotocol = subprotocol
self.websocket.is_client = False"
'';
# 10/500 tests ignored due to missing directory and
# requiring network access
checkPhase = ''
pytest --ignore tests/test_blueprints.py \
--ignore tests/test_routes.py \
--ignore tests/test_worker.py
'';
meta = with lib; { meta = with lib; {
description = "A microframework based on uvloop, httptools, and learnings of flask"; description = "A microframework based on uvloop, httptools, and learnings of flask";