1{
2 lib,
3 fetchFromGitHub,
4 buildPythonPackage,
5 isPyPy,
6 setuptools,
7 setuptools-scm,
8 flask,
9 flask-caching,
10 zstandard,
11 brotli,
12 brotlicffi,
13 pytestCheckHook,
14}:
15
16buildPythonPackage rec {
17 version = "1.17";
18 pname = "flask-compress";
19 pyproject = true;
20
21 src = fetchFromGitHub {
22 owner = "colour-science";
23 repo = "flask-compress";
24 tag = "v${version}";
25 hash = "sha256-87fjJxaS7eJbOkSUljnhqFIeahoS4L2tAOhmv4ryVUM=";
26 };
27
28 build-system = [
29 setuptools
30 setuptools-scm
31 ];
32
33 dependencies = [
34 flask
35 zstandard
36 ]
37 ++ lib.optionals (!isPyPy) [ brotli ]
38 ++ lib.optionals isPyPy [ brotlicffi ];
39
40 nativeCheckInputs = [
41 pytestCheckHook
42 flask-caching
43 ];
44
45 pythonImportsCheck = [ "flask_compress" ];
46
47 postPatch = ''
48 substituteInPlace pyproject.toml \
49 --replace-fail "setuptools_scm[toml]<8" "setuptools_scm"
50 '';
51
52 meta = {
53 description = "Compress responses in your Flask app with gzip, deflate or brotli";
54 homepage = "https://github.com/colour-science/flask-compress";
55 changelog = "https://github.com/colour-science/flask-compress/blob/v${version}/CHANGELOG.md";
56 license = lib.licenses.mit;
57 maintainers = with lib.maintainers; [ nickcao ];
58 };
59}