at master 2.7 kB view raw
1{ 2 lib, 3 buildPythonPackage, 4 fetchFromGitHub, 5 pythonOlder, 6 7 # build-system 8 pdm-backend, 9 10 # dependencies 11 starlette, 12 pydantic, 13 typing-extensions, 14 15 # tests 16 anyio, 17 dirty-equals, 18 flask, 19 inline-snapshot, 20 passlib, 21 pyjwt, 22 pytest-asyncio, 23 pytestCheckHook, 24 sqlalchemy, 25 trio, 26 27 # optional-dependencies 28 fastapi-cli, 29 httpx, 30 jinja2, 31 itsdangerous, 32 python-multipart, 33 pyyaml, 34 ujson, 35 orjson, 36 email-validator, 37 uvicorn, 38 pydantic-settings, 39 pydantic-extra-types, 40}: 41 42buildPythonPackage rec { 43 pname = "fastapi"; 44 version = "0.116.1"; 45 pyproject = true; 46 47 disabled = pythonOlder "3.7"; 48 49 src = fetchFromGitHub { 50 owner = "tiangolo"; 51 repo = "fastapi"; 52 tag = version; 53 hash = "sha256-sd0SnaxuuF3Zaxx7rffn4ttBpRmWQoOtXln/amx9rII="; 54 }; 55 56 build-system = [ pdm-backend ]; 57 58 pythonRelaxDeps = [ 59 "anyio" 60 "starlette" 61 ]; 62 63 dependencies = [ 64 starlette 65 pydantic 66 typing-extensions 67 ]; 68 69 optional-dependencies = { 70 all = [ 71 fastapi-cli 72 httpx 73 jinja2 74 python-multipart 75 itsdangerous 76 pyyaml 77 ujson 78 orjson 79 email-validator 80 uvicorn 81 ] 82 ++ lib.optionals (lib.versionAtLeast pydantic.version "2") [ 83 pydantic-settings 84 pydantic-extra-types 85 ] 86 ++ fastapi-cli.optional-dependencies.standard 87 ++ uvicorn.optional-dependencies.standard; 88 standard = [ 89 fastapi-cli 90 httpx 91 jinja2 92 python-multipart 93 email-validator 94 uvicorn 95 ] 96 ++ fastapi-cli.optional-dependencies.standard 97 ++ uvicorn.optional-dependencies.standard; 98 }; 99 100 nativeCheckInputs = [ 101 anyio 102 dirty-equals 103 flask 104 inline-snapshot 105 passlib 106 pyjwt 107 pytestCheckHook 108 pytest-asyncio 109 trio 110 sqlalchemy 111 ] 112 ++ anyio.optional-dependencies.trio 113 ++ passlib.optional-dependencies.bcrypt 114 ++ optional-dependencies.all; 115 116 pytestFlags = [ 117 # ignoring deprecation warnings to avoid test failure from 118 # tests/test_tutorial/test_testing/test_tutorial001.py 119 "-Wignore::DeprecationWarning" 120 "-Wignore::pytest.PytestUnraisableExceptionWarning" 121 ]; 122 123 disabledTests = [ 124 # Coverage test 125 "test_fastapi_cli" 126 # Likely pydantic compat issue 127 "test_exception_handler_body_access" 128 ]; 129 130 disabledTestPaths = [ 131 # Don't test docs and examples 132 "docs_src" 133 "tests/test_tutorial/test_sql_databases" 134 ]; 135 136 pythonImportsCheck = [ "fastapi" ]; 137 138 meta = with lib; { 139 changelog = "https://github.com/fastapi/fastapi/releases/tag/${src.tag}"; 140 description = "Web framework for building APIs"; 141 homepage = "https://github.com/fastapi/fastapi"; 142 license = licenses.mit; 143 maintainers = with maintainers; [ wd15 ]; 144 }; 145}