Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
94 lines (88 loc) · 3.87 KB
/
Copy pathpyproject.toml
File metadata and controls
94 lines (88 loc) · 3.87 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
[build-system]
requires = [
"scikit-build-core>=0.9.0",
"pybind11>=2.11",
]
build-backend = "scikit_build_core.build"
[project]
name = "hjcdik"
version = "0.0.1"
description = "GPU-parallel hierarchical joint-coordinate-descent inverse kinematics"
readme = "README.md"
requires-python = ">=3.9"
authors = [
{ name = "Cael Yasutake" },
{ name = "Andrew H. Liu" },
{ name = "Zachary Kingston" },
{ name = "Brian Plancher", email = "plancher@dartmouth.edu" },
]
# Runtime dependency used by the Python array API. GRiD code generation is an explicit extra.
dependencies = [
"numpy>=1.17.4",
]
# OPTIONAL extras. Base install stays lightweight (HJCD-IK needs none of these). The competitor
# baselines are heavy and skippable — see docs/source/user_guide/benchmarks/results.rst.
[project.optional-dependencies]
codegen = [
"sympy>=1.7.1",
"beautifulsoup4>=4.9.3",
"lxml>=4.2.1",
"trimesh>=4", # optional mesh-to-sphere custom-robot codegen
]
# Lightweight tooling + PyRoki's pure-python friends that pip CAN resolve. The solver stacks
# themselves (PyRoki, cuRobo) and their JAX-CUDA / torch deps are NOT plain-PyPI installs — run
# scripts/setup/install_baselines.sh, which installs this extra and then the git/source solvers.
baselines = [
"pyyaml>=5.4", # goal_file / world yaml parsing
"pandas>=1.3", # baseline results CSV
"tabulate>=0.8", # console summary tables
"jaxlie>=1.4", # SE3/SO3 pose-error metrics (PyRoki path)
"yourdfpy>=0.0.56", # URDF load (PyRoki path)
"robot_descriptions>=1.10", # panda_description (PyRoki path)
"trimesh>=4", # mesh collision oracles + MotionBenchMaker mesh export (benchmark/collision_oracles.py)
"python-fcl>=0.7", # FCL backend for the mesh oracles
"rtree>=1.0", # trimesh point containment (mbm_export rectilinear decomposition)
]
plots = [
"matplotlib>=3.5", # benchmark/plot_pareto.py (Figs 4/5). make_tables.py needs nothing extra.
]
dev = [
"pytest>=7.0",
"scipy>=1.7",
"pytest-gpu-proof>=0.4.1; python_version >= '3.11'", # receipt generation requires Python >=3.11
"pyyaml>=5.4", # read the YAML policy (tests/gpu-proof-policy.yaml); pytest-gpu-proof doesn't pull it in
]
[tool.scikit-build]
cmake.version = ">=3.24"
build-dir = "build"
# The committed csrc/generated/grid.cuh is the build default; regenerate it explicitly
# with scripts/codegen/generate_grid.py (or build with -DHJCDIK_AUTO_CODEGEN=ON to regenerate here).
cmake.define.HJCDIK_AUTO_CODEGEN = "OFF"
# Keep build/codegen sources, licenses, tests, and pre-spherized URDFs. Upstream
# mesh collections, benchmark suites, and showcase media are not needed to build hjcdik.
sdist.exclude = [
"external/foam/assets/**/meshes/**",
"external/foam/assets/*.zip",
"external/foam/images/**",
"external/**/docs/**",
"external/**/test/**",
"docs/landing/**",
]
[tool.pytest.ini_options]
testpaths = ["tests"]
markers = [
"gpu_proof: Full-suite outcomes recorded in the signed pytest-gpu-proof receipt (auto-applied by tests/conftest.py).",
]
[tool.gpu_proof]
# GPU tests run locally on a real GPU; the signed receipt (gpu-proof.json) is
# verified in CPU-only CI via github.com/plancherb1.keys. See scripts/setup/run_gpu_proof.sh.
mode = "local"
output = "gpu-proof.json"
github_username = "plancherb1" # org remotes (A2R-Lab) carry no SSH keys — sign as the keyholder
required_marker = "gpu_proof"
# The verifier permits ancestor commits, so fingerprints must cover implementation as well
# as tests. pytest-gpu-proof >=0.4 records submodule gitlinks in its v2 source manifest.
fingerprint_paths = ["csrc", "hjcdik", "tests", "benchmark", "scripts", "examples", "docs/source", "README.md", "CMakeLists.txt", "pyproject.toml", ".gitmodules", "external"]
fingerprint_excluded_paths = ["gpu-proof.json"]
max_age_days = 30
require_gpu = true