1{
2 lib,
3 argcomplete,
4 buildPythonPackage,
5 docstring-parser,
6 fetchFromGitHub,
7 fsspec,
8 jsonnet,
9 jsonschema,
10 omegaconf,
11 pytest-subtests,
12 pytestCheckHook,
13 pythonOlder,
14 pyyaml,
15 reconplogger,
16 requests,
17 ruyaml,
18 setuptools,
19 toml,
20 types-pyyaml,
21 types-requests,
22 typeshed-client,
23}:
24
25buildPythonPackage rec {
26 pname = "jsonargparse";
27 version = "4.41.0";
28 pyproject = true;
29
30 disabled = pythonOlder "3.11";
31
32 src = fetchFromGitHub {
33 owner = "omni-us";
34 repo = "jsonargparse";
35 tag = "v${version}";
36 hash = "sha256-uNgtxQuAkOB651lbPPWQg0p4T8G1dgFbx/EyO/sJSjs=";
37 };
38
39 build-system = [ setuptools ];
40
41 dependencies = [ pyyaml ];
42
43 optional-dependencies = {
44 all = [
45 argcomplete
46 fsspec
47 jsonnet
48 jsonschema
49 omegaconf
50 ruyaml
51 docstring-parser
52 typeshed-client
53 requests
54 ];
55 argcomplete = [ argcomplete ];
56 fsspec = [ fsspec ];
57 jsonnet = [
58 jsonnet
59 # jsonnet-binary
60 ];
61 jsonschema = [ jsonschema ];
62 omegaconf = [ omegaconf ];
63 reconplogger = [ reconplogger ];
64 ruyaml = [ ruyaml ];
65 signatures = [
66 docstring-parser
67 typeshed-client
68 ];
69 toml = [ toml ];
70 urls = [ requests ];
71 };
72
73 nativeCheckInputs = [
74 pytest-subtests
75 pytestCheckHook
76 types-pyyaml
77 types-requests
78 ];
79
80 pythonImportsCheck = [ "jsonargparse" ];
81
82 meta = with lib; {
83 description = "Module to implement minimal boilerplate CLIs derived from various sources";
84 homepage = "https://github.com/omni-us/jsonargparse";
85 changelog = "https://github.com/omni-us/jsonargparse/blob/${src.tag}/CHANGELOG.rst";
86 license = licenses.mit;
87 maintainers = with maintainers; [ fab ];
88 };
89}