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