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.14.1";
26 pyproject = true;
27
28 disabled = pythonOlder "3.8";
29
30 src = fetchFromGitHub {
31 owner = "lilydjwg";
32 repo = "nvchecker";
33 rev = "v${version}";
34 hash = "sha256-V2lTGeaiwUsh8IONbZ5GQrqevJMhjeuFLTDF8UdWg8Q=";
35 };
36
37 nativeBuildInputs = [
38 setuptools
39 docutils
40 installShellFiles
41 ];
42
43 propagatedBuildInputs = [
44 structlog
45 platformdirs
46 tornado
47 pycurl
48 ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
49
50 __darwinAllowLocalNetworking = true;
51
52 nativeCheckInputs = [
53 flaky
54 pytest-asyncio
55 pytest-httpbin
56 pytestCheckHook
57 ];
58
59 postBuild = ''
60 patchShebangs docs/myrst2man.py
61 make -C docs man
62 '';
63
64 postInstall = ''
65 installManPage docs/_build/man/nvchecker.1
66 '';
67
68 pythonImportsCheck = [ "nvchecker" ];
69
70 pytestFlagsArray = [ "-m 'not needs_net'" ];
71
72 optional-dependencies = {
73 # vercmp = [ pyalpm ];
74 awesomeversion = [ awesomeversion ];
75 pypi = [ packaging ];
76 htmlparser = [ lxml ];
77 };
78
79 meta = with lib; {
80 description = "New version checker for software";
81 homepage = "https://github.com/lilydjwg/nvchecker";
82 changelog = "https://github.com/lilydjwg/nvchecker/releases/tag/v${version}";
83 license = licenses.mit;
84 maintainers = [ ];
85 };
86}