1{
2 lib,
3 platformdirs,
4 buildPythonPackage,
5 docutils,
6 fetchFromGitHub,
7 flaky,
8 installShellFiles,
9 pycurl,
10 pytest-asyncio,
11 pytest-httpbin,
12 pytestCheckHook,
13 pythonOlder,
14 setuptools,
15 structlog,
16 tomli,
17 tornado,
18 awesomeversion,
19 packaging,
20 lxml,
21}:
22
23buildPythonPackage rec {
24 pname = "nvchecker";
25 version = "2.16";
26 pyproject = true;
27
28 disabled = pythonOlder "3.8";
29
30 src = fetchFromGitHub {
31 owner = "lilydjwg";
32 repo = "nvchecker";
33 tag = "v${version}";
34 hash = "sha256-HdL3BnjQZzKXtjhQqDst6dJH82g3BONFsGUnwzDMRDA=";
35 };
36
37 build-system = [ setuptools ];
38
39 nativeBuildInputs = [
40 docutils
41 installShellFiles
42 ];
43
44 propagatedBuildInputs = [
45 structlog
46 platformdirs
47 tornado
48 pycurl
49 ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
50
51 __darwinAllowLocalNetworking = true;
52
53 nativeCheckInputs = [
54 flaky
55 pytest-asyncio
56 pytest-httpbin
57 pytestCheckHook
58 ];
59
60 postBuild = ''
61 patchShebangs docs/myrst2man.py
62 make -C docs man
63 '';
64
65 postInstall = ''
66 installManPage docs/_build/man/nvchecker.1
67 '';
68
69 pythonImportsCheck = [ "nvchecker" ];
70
71 pytestFlagsArray = [ "-m 'not needs_net'" ];
72
73 optional-dependencies = {
74 # vercmp = [ pyalpm ];
75 awesomeversion = [ awesomeversion ];
76 pypi = [ packaging ];
77 htmlparser = [ lxml ];
78 };
79
80 meta = {
81 description = "New version checker for software";
82 homepage = "https://github.com/lilydjwg/nvchecker";
83 changelog = "https://github.com/lilydjwg/nvchecker/releases/tag/v${version}";
84 license = lib.licenses.mit;
85 maintainers = [ ];
86 };
87}