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 [
35 flask
36 zstandard
37 ]
38 ++ lib.optionals (!isPyPy) [ brotli ]
39 ++ lib.optionals isPyPy [ brotlicffi ];
40
41 nativeCheckInputs = [
42 pytestCheckHook
43 flask-caching
44 ];
45
46 pythonImportsCheck = [ "flask_compress" ];
47
48 postPatch = ''
49 substituteInPlace pyproject.toml \
50 --replace-fail "setuptools_scm[toml]<8" "setuptools_scm"
51 '';
52
53 meta = {
54 description = "Compress responses in your Flask app with gzip, deflate or brotli";
55 homepage = "https://github.com/colour-science/flask-compress";
56 changelog = "https://github.com/colour-science/flask-compress/blob/v${version}/CHANGELOG.md";
57 license = lib.licenses.mit;
58 maintainers = with lib.maintainers; [ nickcao ];
59 };
60}