nixpkgs/pkgs/development/python-modules/sanic/default.nix
2021-06-09 22:58:12 +02:00

100 lines
2.1 KiB
Nix

{ lib
, aiofiles
, beautifulsoup4
, buildPythonPackage
, doCheck ? true
, fetchFromGitHub
, fetchpatch
, gunicorn
, httptools
, multidict
, pytest-asyncio
, pytest-benchmark
, pytest-sanic
, pytest-sugar
, pytestCheckHook
, sanic-routing
, sanic-testing
, ujson
, uvicorn
, uvloop
, websockets
}:
buildPythonPackage rec {
pname = "sanic";
version = "21.3.4";
src = fetchFromGitHub {
owner = "sanic-org";
repo = pname;
rev = "v${version}";
sha256 = "0vldlic8gqcf56fqb31igycqf11syd9csk66v34w6dim54lcny2b";
};
patches = [
# Allow later websockets release, https://github.com/sanic-org/sanic/pull/2154
(fetchpatch {
name = "later-websockets.patch";
url = "https://github.com/sanic-org/sanic/commit/5fb820b5c1ce395e86a1ee11996790c65ec7bc65.patch";
sha256 = "1glvq23pf1sxqjnrz0w8rr7nsnyz82k1479b3rm8szfkjg9q5d1w";
})
];
postPatch = ''
# Loosen dependency requirements.
substituteInPlace setup.py \
--replace '"pytest==5.2.1"' '"pytest"' \
--replace '"gunicorn==20.0.4"' '"gunicorn"' \
--replace '"pytest-sanic",' "" \
# Patch a request headers test to allow brotli encoding
# (we build httpx with brotli support, upstream doesn't).
substituteInPlace tests/test_headers.py \
--replace "deflate\r\n" "deflate, br\r\n"
'';
propagatedBuildInputs = [
aiofiles
httptools
multidict
sanic-routing
ujson
uvloop
websockets
];
checkInputs = [
beautifulsoup4
gunicorn
pytest-asyncio
pytest-benchmark
pytest-sanic
pytest-sugar
pytestCheckHook
sanic-testing
uvicorn
];
inherit doCheck;
disabledTests = [
# Tests are flaky
"test_keep_alive_client_timeout"
"test_check_timeouts_request_timeout"
"test_check_timeouts_response_timeout"
"test_reloader_live"
"test_zero_downtime"
];
__darwinAllowLocalNetworking = true;
pythonImportsCheck = [ "sanic" ];
meta = with lib; {
description = "Web server and web framework";
homepage = "https://github.com/sanic-org/sanic/";
license = licenses.mit;
maintainers = with maintainers; [ costrouc AluisioASG ];
};
}