depot/third_party/nixpkgs/pkgs/development/python-modules/sanic/default.nix

121 lines
2.6 KiB
Nix
Raw Normal View History

{ lib
, stdenv
, aiofiles
, beautifulsoup4
, buildPythonPackage
, doCheck ? true
, fetchFromGitHub
, gunicorn
, httptools
, multidict
, pytest-asyncio
, pytest-benchmark
, pytest-sugar
, pytestCheckHook
, pythonOlder
, sanic-routing
, sanic-testing
, ujson
, uvicorn
, uvloop
, websockets
}:
buildPythonPackage rec {
pname = "sanic";
version = "21.9.3";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "sanic-org";
repo = pname;
rev = "v${version}";
sha256 = "0m18jdw1mvf7jhpnrxhm96p24pxvv0h9m71a8c7sqqkwnnpa3p5i";
};
postPatch = ''
# Loosen dependency requirements.
substituteInPlace setup.py \
--replace '"pytest==6.2.5"' '"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-sugar
pytestCheckHook
sanic-testing
uvicorn
];
inherit doCheck;
preCheck = ''
# Some tests depends on sanic on PATH
PATH="$out/bin:$PATH"
'';
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"
# Not working from 21.9.1
"test_create_server_main"
"test_create_server_main_convenience"
"test_debug"
"test_auto_reload"
"test_no_exceptions_when_cancel_pending_request"
"test_ipv6_address_is_not_wrapped"
# Failure of the redirect tests seems to be related to httpx>0.20.0
"test_redirect"
"test_chained_redirect"
"test_unix_connection"
# These appear to be very sensitive to output of commands
"test_access_logs"
"test_auto_reload"
"test_host_port"
"test_no_exceptions_when_cancel_pending_request"
"test_num_workers"
"test_server_run"
"test_version"
];
# avoid usage of nixpkgs-review in darwin since tests will compete usage
# for the same local port
__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 ];
};
}