1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5
6 # Build system
7 setuptools,
8
9 # Dependencies
10 pyyaml,
11
12 # Test dependencies
13 pytestCheckHook,
14
15 sanic-testing,
16 attrs,
17 coverage,
18 msgspec,
19 pydantic,
20 pytest,
21 pytest-cov-stub,
22 pytest-asyncio,
23 tox,
24 jinja2,
25}:
26
27buildPythonPackage rec {
28 pname = "sanic-ext";
29 version = "24.12.0";
30 pyproject = true;
31
32 src = fetchFromGitHub {
33 owner = "sanic-org";
34 repo = "sanic-ext";
35 tag = "v${version}";
36 hash = "sha256-H1tqiPQ4SwlNGj7GtB2h7noZpU+gbGXIbmRK1TSSqVA=";
37 };
38
39 build-system = [ setuptools ];
40
41 dependencies = [
42 pyyaml
43 ];
44
45 nativeCheckInputs = [
46 pytestCheckHook
47
48 sanic-testing
49 attrs
50 coverage
51 msgspec
52 pydantic
53 pytest
54 pytest-cov-stub
55 pytest-asyncio
56 tox
57 jinja2
58 ];
59
60 disabledTests = [
61 "test_models[FooPydanticDataclass]" # KeyError: 'paths'
62 "test_pydantic_base_model[AlertResponsePydanticBaseModel-True]" # AssertionError: assert 'AlertPydanticBaseModel' in {'AlertResponsePydanticBaseModel': ... }
63 "test_pydantic_base_model[AlertResponsePydanticDataclass-True]" # AssertionError: assert 'AlertPydanticDataclass' in {'AlertResponsePydanticDataclass': ... }
64 ];
65
66 pythonImportsCheck = [ "sanic_ext" ];
67
68 meta = {
69 description = "Common, officially supported extension plugins for the Sanic web server framework";
70 homepage = "https://github.com/sanic-org/sanic-ext/";
71 changelog = "https://github.com/sanic-org/sanic-ext/releases/tag/${src.tag}";
72 license = lib.licenses.mit;
73 maintainers = with lib.maintainers; [ p0lyw0lf ];
74 };
75}