1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 stdenv,
6
7 # build-system
8 flit-core,
9
10 # dependencies
11 orderly-set,
12
13 # optional-dependencies
14 click,
15 orjson,
16 pyyaml,
17
18 # tests
19 jsonpickle,
20 numpy,
21 pytestCheckHook,
22 python-dateutil,
23 pydantic,
24 tomli-w,
25 polars,
26 pandas,
27 uuid6,
28}:
29
30buildPythonPackage rec {
31 pname = "deepdiff";
32 version = "8.6.1";
33 pyproject = true;
34
35 src = fetchFromGitHub {
36 owner = "seperman";
37 repo = "deepdiff";
38 tag = version;
39 hash = "sha256-1DB1OgIS/TSMd+Pqd2vvW+qwM/b5+Dy3qStlg+asidE=";
40 };
41
42 build-system = [
43 flit-core
44 ];
45
46 dependencies = [
47 orderly-set
48 ];
49
50 optional-dependencies = {
51 cli = [
52 click
53 pyyaml
54 ];
55 optimize = [
56 orjson
57 ];
58 };
59
60 nativeCheckInputs = [
61 jsonpickle
62 numpy
63 pytestCheckHook
64 python-dateutil
65 pydantic
66 tomli-w
67 polars
68 pandas
69 uuid6
70 ]
71 ++ lib.flatten (lib.attrValues optional-dependencies);
72
73 disabledTests = [
74 # Require pytest-benchmark
75 "test_cache_deeply_nested_a1"
76 "test_lfu"
77 ]
78 ++ lib.optionals stdenv.hostPlatform.isDarwin [
79 # Times out on darwin in Hydra
80 "test_repeated_timer"
81 ];
82
83 pythonImportsCheck = [ "deepdiff" ];
84
85 meta = {
86 description = "Deep Difference and Search of any Python object/data";
87 mainProgram = "deep";
88 homepage = "https://github.com/seperman/deepdiff";
89 changelog = "https://github.com/seperman/deepdiff/blob/${src.tag}/CHANGELOG.md";
90 license = lib.licenses.mit;
91 maintainers = with lib.maintainers; [
92 mic92
93 doronbehar
94 ];
95 };
96}