Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ 2 lib, 3 buildPythonPackage, 4 fetchFromGitHub, 5 pythonOlder, 6 7 # build-system 8 pdm-backend, 9 10 # dependencies 11 fastapi-cli, 12 starlette, 13 pydantic, 14 typing-extensions, 15 16 # tests 17 dirty-equals, 18 flask, 19 passlib, 20 pytest-asyncio, 21 pytestCheckHook, 22 python-jose, 23 sqlalchemy, 24 trio, 25 26 # optional-dependencies 27 httpx, 28 jinja2, 29 python-multipart, 30 itsdangerous, 31 pyyaml, 32 ujson, 33 orjson, 34 email-validator, 35 uvicorn, 36 pydantic-settings, 37 pydantic-extra-types, 38}: 39 40buildPythonPackage rec { 41 pname = "fastapi"; 42 version = "0.111.0"; 43 pyproject = true; 44 45 disabled = pythonOlder "3.7"; 46 47 src = fetchFromGitHub { 48 owner = "tiangolo"; 49 repo = "fastapi"; 50 rev = "refs/tags/${version}"; 51 hash = "sha256-DQYjK1dZuL7cF6quyNkgdd/GYmWm7k6YlF7YEjObQlI="; 52 }; 53 54 build-system = [ pdm-backend ]; 55 56 pythonRelaxDeps = [ 57 "anyio" 58 "starlette" 59 ]; 60 61 dependencies = [ 62 fastapi-cli 63 starlette 64 pydantic 65 typing-extensions 66 ]; 67 68 optional-dependencies.all = 69 [ 70 httpx 71 jinja2 72 python-multipart 73 itsdangerous 74 pyyaml 75 ujson 76 orjson 77 email-validator 78 uvicorn 79 ] 80 ++ lib.optionals (lib.versionAtLeast pydantic.version "2") [ 81 pydantic-settings 82 pydantic-extra-types 83 ] 84 ++ uvicorn.optional-dependencies.standard; 85 86 nativeCheckInputs = [ 87 dirty-equals 88 flask 89 passlib 90 pytestCheckHook 91 pytest-asyncio 92 python-jose 93 trio 94 sqlalchemy 95 ] ++ optional-dependencies.all ++ python-jose.optional-dependencies.cryptography; 96 97 pytestFlagsArray = [ 98 # ignoring deprecation warnings to avoid test failure from 99 # tests/test_tutorial/test_testing/test_tutorial001.py 100 "-W ignore::DeprecationWarning" 101 ]; 102 103 disabledTestPaths = [ 104 # Don't test docs and examples 105 "docs_src" 106 # databases is incompatible with SQLAlchemy 2.0 107 "tests/test_tutorial/test_async_sql_databases" 108 "tests/test_tutorial/test_sql_databases" 109 ]; 110 111 pythonImportsCheck = [ "fastapi" ]; 112 113 meta = with lib; { 114 changelog = "https://github.com/tiangolo/fastapi/releases/tag/${version}"; 115 description = "Web framework for building APIs"; 116 homepage = "https://github.com/tiangolo/fastapi"; 117 license = licenses.mit; 118 maintainers = with maintainers; [ wd15 ]; 119 }; 120}