1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 mock,
6 pyparsing,
7 pytestCheckHook,
8 python-dateutil,
9 pythonOlder,
10}:
11
12buildPythonPackage rec {
13 pname = "pyhocon";
14 version = "0.3.61";
15 format = "setuptools";
16
17 disabled = pythonOlder "3.7";
18
19 src = fetchFromGitHub {
20 owner = "chimpler";
21 repo = "pyhocon";
22 tag = version;
23 hash = "sha256-xXx30uxJ8+KPVdYC6yRzEDJbwYSzIO/Gy1xrehvI5ZE=";
24 };
25
26 propagatedBuildInputs = [
27 pyparsing
28 python-dateutil
29 ];
30
31 nativeCheckInputs = [
32 mock
33 pytestCheckHook
34 ];
35
36 postPatch = ''
37 substituteInPlace setup.py \
38 --replace "pyparsing~=2.0" "pyparsing>=2.0"
39 '';
40
41 pythonImportsCheck = [ "pyhocon" ];
42
43 disabledTestPaths = [
44 # pyparsing.exceptions.ParseException: Expected end of text, found '='
45 # https://github.com/chimpler/pyhocon/issues/273
46 "tests/test_tool.py"
47 ];
48
49 disabledTests = [
50 # AssertionError: assert ConfigTree([(...
51 "test_dict_merge"
52 "test_parse_override"
53 "test_include_dict"
54 ];
55
56 meta = with lib; {
57 description = "HOCON parser for Python";
58 mainProgram = "pyhocon";
59 homepage = "https://github.com/chimpler/pyhocon/";
60 longDescription = ''
61 A HOCON parser for Python. It additionally provides a tool (pyhocon) to convert
62 any HOCON content into JSON, YAML and properties format.
63 '';
64 license = licenses.asl20;
65 maintainers = with maintainers; [ chreekat ];
66 };
67}