-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Expand file tree
/
Copy pathpyproject.toml
More file actions
202 lines (192 loc) · 6.41 KB
/
pyproject.toml
File metadata and controls
202 lines (192 loc) · 6.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
[build-system]
requires = ["setuptools", "wheel", "cython>=3.0.0", "numpy>=1.26.4"]
build-backend = "setuptools.build_meta"
[project]
name = "genesis-world"
version = "0.4.5"
description = "A universal and generative physics engine"
readme = "README.md"
requires-python = ">=3.10,<3.14"
dependencies = [
"psutil",
"quadrants==0.5.2",
"pydantic>=2.11.0",
"numpy>=1.26.4",
"frozendict",
"trimesh",
# Used for preprocessing .urdf.xacro files into plain URDF
"xacro",
# * No pre-compiled wheels are distributed for LibIGL v2.6.2 on Windows OS
"libigl!=2.6.2",
# Cross-platform library to get various kind of CPU information such as model name
"py-cpuinfo",
"mujoco>=3.2.5",
"moviepy>=2.0.0",
# Used by `pyrender` to manage onscreen graphical windows
# * 2.1.8 breaks headless windowing, which is used in unit tests of the interactive viewer.
# * 2.0.15 <= 2.1.8 breaks old-style option overwrite for string literal.
# * 2.1.10 changes default DPI scaling behavior.
"pyglet>=1.5,!=2.1.8",
# Used by `pyrender` to load fonts
"freetype-py",
# Used by `pyrender` to write low-level OpenGL rendering pipeline
"PyOpenGL>=3.1.4",
# Use by `pyrender` to compile low-level OpenGL rendering pipeline
"numba",
# Use by `Mesh.remesh`, which is involve in `PBDTetEntity.sample`
"pymeshlab",
# Optional `trimesh` dependency for loading `.dae` mesh files
"pycollada",
# Used for parsing `.glb` mesh files
"pygltflib==1.16.0",
# Used for decoding Draco-compressed `.glb` mesh files
"DracoPy",
# Use by `PBD3DEntity.sample` to tetrahedralize a mesh
"tetgen==0.8.2",
# Used for some advanced mesh processing such as `skeletonization`
"PyGEL3D",
# Used to convert VTK output to numpy when converting volume to particles for PBS
"vtk",
# Used here and there to load and export images
# * 11.0 dramatically improves performance when exporting images to PNG
"Pillow>11.0",
# Use to display camera images and export images
"opencv-python",
# Use by `RigidGeom.visualize_sdf` to render SDF as level 0 marching cubes
"scikit-image",
# Convex decomposition library
"coacd",
# Ray casting used in mesh to height field conversion
"rtree",
# Constraint Satisfaction Solver.
# Used to compute contype and conaffinity bitmasks from complete list of excluded collision pairs.
# * >= 4.15.5.0 does not provide pre-compiled wheels on Linux
"z3-solver<4.15.5.0",
# Used for loading raytracing special texture images used by LuisaRender
"OpenEXR",
# Native batch renderer specifically designed for Genesis
"gs-madrona==0.0.7.post2; platform_system=='Linux' and (platform_machine=='x86_64' or platform_machine=='AMD64')",
# Used for mesh simplification
"fast_simplification>=0.1.12",
# Surface reconstruction library for particle data from SPH simulations
"pysplashsurf==0.14.*",
]
[project.optional-dependencies]
dev = [
"black",
"pytest",
"pytest-xdist",
"pytest-forked",
"pytest-print",
# Note that 'pytest-rerunfailures' is incompatible with 'pytest-forked'
# - 16.0 is causing pytest-xdist to crash in case of failure or skipped tests
# "pytest-rerunfailures!=16.0",
"setproctitle", # allows renaming the test processes on the cluster
"syrupy",
"huggingface_hub[hf_xet]",
"wandb",
"ipython",
# * Mujoco 3.3.6 made contact islands an opt-out option instead of opt-in,
# which requires setting the disableflags 'mjDSBL_ISLAND'.
# * Mujoco 3.5.0 fixed computation of link invweight when degenerated.
"mujoco>=3.5.0,<3.7.0",
# Used internally by 'MPLPlotter'
# * 3.7.0: introduces Button blitting and 'outside' keyword legend location
"matplotlib>=3.7.0",
# Used internally by 'VideoFileWriter'
"av",
# Used for validating polar decomposition in unit tests
"scipy",
# Used for code formatting during commits
"pre_commit",
]
docs = [
# Note that currently sphinx 7 does not work, so we must use v6.2.1. Once fixed we can use a later version.
# See https://github.com/kivy/kivy/issues/8230 which tracks this issue.
"sphinx==6.2.1",
"sphinx-autobuild",
"pydata_sphinx_theme",
# For spelling
"sphinxcontrib.spelling",
# Type hints support
"sphinx-autodoc-typehints",
# Copy button for code snippets
"sphinx_copybutton",
# Markdown parser
"myst-parser",
"sphinx-subfigure",
"sphinxcontrib-video",
"sphinx-togglebutton",
"sphinx_design",
]
render = [
"pybind11[global]",
"open3d",
]
usd = [
# Used for parsing `.usd` mesh files
"usd-core==25.11",
]
[project.scripts]
gs = "genesis._main:main"
[tool.setuptools.packages.find]
where = ["."]
include = ["genesis", "genesis.*"]
[tool.setuptools.package-data]
genesis = [
"assets/*",
"ext/pyrender/fonts/*",
"ext/pyrender/shaders/*",
"ext/VolumeSampling",
]
[tool.black]
line-length = 120
force-exclude = '''
/(
genesis/ext
)/
'''
[tool.ruff]
line-length = 120
[tool.ruff.lint]
# Ignore the specific errors currently present in the codebase
ignore = [
"F405", # undefined-local-with-import-star-usage
"F401", # unused-import
"F841", # unused-variable
"E741", # ambiguous-variable-name
"E402", # module-import-not-at-top-of-file
"F403", # undefined-local-with-import-star
"E712", # true-false-comparison
]
[tool.pytest.ini_options]
addopts = [
"--verbose",
"-r", "a",
"--color=yes",
"--import-mode=importlib",
"--pdbcls=IPython.terminal.debugger:TerminalPdb",
# "--exitfirst",
"--numprocesses=auto",
"--dist=worksteal",
# "--max-worker-restart=0",
"--durations=0",
"--durations-min=100.0",
# Note that the retry mechanism is not compatible with "--forked".
"-m not (benchmarks or examples)",
]
filterwarnings = [
"ignore::_pytest.warning_types.PytestUnknownMarkWarning",
"ignore::DeprecationWarning",
]
markers = [
"examples: example scripts.",
"benchmarks: benchmarks for profiling and monitoring.",
"required: minimal test set that must pass systematically on any environment before merging.",
"slow: tests that are slow to run (> 100s).",
]
log_cli_level = "WARNING"
[tool.uv]
# uv respects the build-system and project tables
# PyTorch must be installed separately before Genesis due to platform-specific builds
# See README.md for installation instructions with different PyTorch backends