diff --git a/pkgs/development/python-modules/sanic/default.nix b/pkgs/development/python-modules/sanic/default.nix index e5995ed0b1e8..31dcc86e0bc4 100644 --- a/pkgs/development/python-modules/sanic/default.nix +++ b/pkgs/development/python-modules/sanic/default.nix @@ -1,42 +1,44 @@ { lib, buildPythonPackage, fetchPypi, doCheck ? true -, aiofiles, httptools, httpx, multidict, ujson, uvloop, websockets -, pytestCheckHook, beautifulsoup4, gunicorn, httpcore, uvicorn -, pytest-asyncio, pytest-benchmark, pytest-dependency, pytest-sanic, pytest-sugar, pytestcov +, aiofiles, httptools, multidict, sanic-routing, ujson, uvloop, websockets +, pytestCheckHook, beautifulsoup4, gunicorn, uvicorn, sanic-testing +, pytest-benchmark, pytest-sanic, pytest-sugar, pytestcov }: buildPythonPackage rec { pname = "sanic"; - version = "21.3.2"; + version = "21.3.4"; src = fetchPypi { inherit pname version; - sha256 = "84a04c5f12bf321bed3942597787f1854d15c18f157aebd7ced8c851ccc49e08"; + sha256 = "1cbd12b9138b3ca69656286b0be91fff02b826e8cb72dd76a2ca8c5eb1288d8e"; }; postPatch = '' + # Loosen dependency requirements. 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"' + --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 httpx multidict ujson uvloop websockets + sanic-routing httptools uvloop ujson aiofiles websockets multidict ]; checkInputs = [ - pytestCheckHook beautifulsoup4 gunicorn httpcore uvicorn - pytest-asyncio pytest-benchmark pytest-dependency pytest-sanic pytest-sugar pytestcov + sanic-testing gunicorn pytestcov beautifulsoup4 pytest-sanic pytest-sugar + pytest-benchmark pytestCheckHook uvicorn ]; inherit doCheck; disabledTests = [ "test_gunicorn" # No "examples" directory in pypi distribution. - "test_logo" # Fails to filter out "DEBUG asyncio:selector_events.py:59 Using selector: EpollSelector" "test_zero_downtime" # No "examples.delayed_response.app" module in pypi distribution. - "test_reloader_live" # OSError: [Errno 98] error while attempting to bind on address ('127.0.0.1', 42104) ]; __darwinAllowLocalNetworking = true; @@ -45,8 +47,8 @@ buildPythonPackage rec { meta = with lib; { description = "A microframework based on uvloop, httptools, and learnings of flask"; - homepage = "https://github.com/channelcat/sanic/"; + homepage = "https://github.com/sanic-org/sanic/"; license = licenses.mit; - maintainers = [ maintainers.costrouc ]; + maintainers = with maintainers; [ costrouc AluisioASG ]; }; } diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 65faa170d6f7..90f766ed4592 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -7201,6 +7201,9 @@ in { doCheck = false; meta.broken = false; }); + # Don't pass any `sanic` to avoid dependency loops. `sanic-testing` + # has special logic to disable tests when this is the case. + sanic-testing = self.sanic-testing.override { sanic = null; }; }; sanic-auth = callPackage ../development/python-modules/sanic-auth { };