diff --git a/default.nix b/default.nix index 253d396..2507d6c 100644 --- a/default.nix +++ b/default.nix @@ -22,6 +22,122 @@ self: super: rec { "graphql" ]; }; + starlette = python-super.buildPythonPackage rec { + pname = "starlette"; + version = "0.19.0"; + format = "setuptools"; + src = python-super.fetchFromGitHub { + owner = "encode"; + repo = pname; + rev = version; + sha256 = "sha256-gjRTMzoQ8pqxjIusRwRXGs72VYo6xsp2DSUxmEr9KxU="; + }; + postPatch = '' + # remove coverage arguments to pytest + sed -i '/--cov/d' setup.cfg + ''; + + propagatedBuildInputs = with self.python39Packages; [ + aiofiles + anyio + itsdangerous + jinja2 + python-multipart + pyyaml + requests + ]; + + checkInputs = with self.python39Packages; [ + aiosqlite + databases + pytestCheckHook + trio + typing-extensions + ]; + + disabledTests = [ + # asserts fail due to inclusion of br in Accept-Encoding + "test_websocket_headers" + "test_request_headers" + ]; + + pythonImportsCheck = [ + "starlette" + ]; + }; + fastapi = python-super.buildPythonPackage rec { + pname = "fastapi"; + version = "0.75.2"; + format = "flit"; + src = python-super.fetchFromGitHub { + owner = "tiangolo"; + repo = pname; + rev = version; + hash = "sha256-B4q3Q256Sj4jTQt1TDm3fiEaQKdVxddCF9+KsxkkTWo="; + }; + propagatedBuildInputs = with self.python39Packages; [ + starlette + pydantic + ]; + + checkInputs = with self.python39Packages; [ + aiosqlite + databases + flask + httpx + passlib + peewee + python-jose + pytestCheckHook + pytest-asyncio + sqlalchemy + trio + bcrypt + ]; + + patches = [ + # Bump starlette, https://github.com/tiangolo/fastapi/pull/4483 + (fetchpatch { + name = "support-later-starlette.patch"; + # PR contains multiple commits + url = "https://patch-diff.githubusercontent.com/raw/tiangolo/fastapi/pull/4483.patch"; + sha256 = "sha256-ZWaqAd/QYEYRL1hSQdXdFPgWgdmOill2GtmEn33vz2U="; + }) + ]; + + postPatch = '' + substituteInPlace pyproject.toml \ + --replace "starlette ==" "starlette >=" + ''; + + pytestFlagsArray = [ + # ignoring deprecation warnings to avoid test failure from + # tests/test_tutorial/test_testing/test_tutorial001.py + "-W ignore::DeprecationWarning" + ]; + + disabledTestPaths = [ + # Disabled tests require orjson which requires rust nightly + "tests/test_default_response_class.py" + # Don't test docs and examples + "docs_src" + ]; + + disabledTests = [ + "test_get_custom_response" + # Failed: DID NOT RAISE + "test_websocket_invalid_data" + "test_websocket_no_credentials" + # TypeError: __init__() missing 1...starlette-releated + "test_head" + "test_options" + "test_trace" + ]; + + pythonImportsCheck = [ + "fastapi" + ]; + }; strawberry_graphql = python-super.buildPythonPackage rec { pname = "strawberry-graphql"; version = "0.123.0";