1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5
6 # build-system
7 absl-py,
8 mujoco,
9 pyparsing,
10 setuptools,
11
12 # dependencies
13 dm-env,
14 dm-tree,
15 fsspec,
16 glfw,
17 h5py,
18 lxml,
19 mock,
20 numpy,
21 pillow,
22 protobuf,
23 pyopengl,
24 requests,
25 scipy,
26 tqdm,
27 etils,
28}:
29
30buildPythonPackage rec {
31 pname = "dm-control";
32 version = "1.0.34";
33 pyproject = true;
34
35 src = fetchFromGitHub {
36 owner = "google-deepmind";
37 repo = "dm_control";
38 tag = version;
39 hash = "sha256-AESUqrUw8EEUKNtZJ5M/dD7xDr+6VGi4yYacJw0q8Ls=";
40 };
41
42 build-system = [
43 absl-py
44 mujoco
45 pyparsing
46 setuptools
47 ];
48
49 pythonRemoveDeps = [
50 # Unpackaged
51 "labmaze"
52 ];
53
54 dependencies = [
55 absl-py
56 dm-env
57 dm-tree
58 fsspec
59 glfw
60 h5py
61 lxml
62 mock
63 mujoco
64 numpy
65 pillow
66 protobuf
67 pyopengl
68 pyparsing
69 requests
70 scipy
71 setuptools
72 tqdm
73 ]
74 ++ etils.optional-dependencies.epath;
75
76 pythonImportsCheck = [ "dm_control" ];
77
78 # The installed library clashes with the `dm_control` directory remaining in the source path.
79 # Usually, we get around this by `rm -rf` the python source files to ensure that the installed package is used.
80 # Here, we cannot do that as it would also remove the tests which are also in the `dm_control` directory.
81 # See https://github.com/google-deepmind/dm_control/issues/6
82 doCheck = false;
83
84 meta = {
85 changelog = "https://github.com/google-deepmind/dm_control/releases/tag/${src.tag}";
86 description = "Google DeepMind's software stack for physics-based simulation and Reinforcement Learning environments, using MuJoCo";
87 homepage = "https://github.com/google-deepmind/dm_control";
88 license = lib.licenses.asl20;
89 maintainers = with lib.maintainers; [ GaetanLepage ];
90 };
91}