Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{
2 lib,
3 aiosqlite,
4 anyio,
5 asgi-lifespan,
6 async-timeout,
7 buildPythonPackage,
8 daphne,
9 fastapi,
10 fetchFromGitHub,
11 granian,
12 httpx,
13 portend,
14 psutil,
15 pytest-asyncio,
16 pytestCheckHook,
17 setuptools,
18 sqlalchemy,
19 starlette,
20 tenacity,
21 testcontainers,
22 uvicorn,
23}:
24
25buildPythonPackage rec {
26 pname = "sse-starlette";
27 version = "3.2.0";
28 pyproject = true;
29
30 src = fetchFromGitHub {
31 owner = "sysid";
32 repo = "sse-starlette";
33 tag = "v${version}";
34 hash = "sha256-SqYLwbl+AyeqgYIwAd/Z39BSPXaYSXMnM6DAGUv3vQ8=";
35 };
36
37 build-system = [ setuptools ];
38
39 dependencies = [
40 anyio
41 ];
42
43 optional-dependencies = {
44 daphne = [ daphne ];
45 examples = [
46 aiosqlite
47 fastapi
48 sqlalchemy
49 starlette
50 uvicorn
51 ]
52 ++ sqlalchemy.optional-dependencies.asyncio;
53 granian = [ granian ];
54 uvicorn = [ uvicorn ];
55 };
56
57 nativeCheckInputs = [
58 asgi-lifespan
59 async-timeout
60 fastapi
61 httpx
62 portend
63 psutil
64 pytest-asyncio
65 pytestCheckHook
66 tenacity
67 testcontainers
68 uvicorn
69 ];
70
71 pythonImportsCheck = [ "sse_starlette" ];
72
73 disabledTests = [
74 # AssertionError
75 "test_stop_server_with_many_consumers"
76 # require docker
77 "test_sse_server_termination"
78 ];
79
80 __darwinAllowLocalNetworking = true;
81
82 meta = {
83 description = "Server Sent Events for Starlette and FastAPI";
84 homepage = "https://github.com/sysid/sse-starlette";
85 changelog = "https://github.com/sysid/sse-starlette/blob/${src.tag}/CHANGELOG.md";
86 license = lib.licenses.bsd3;
87 maintainers = with lib.maintainers; [ fab ];
88 };
89}