Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
62 lines (55 loc) · 2.29 KB
/
Copy pathpyproject.toml
File metadata and controls
62 lines (55 loc) · 2.29 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
[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "projection-mapping-lab"
version = "0.5.0"
description = "Research toolkit for projector-camera calibration, realtime performer VFX, generative projection mapping, and spatial AR"
readme = "README.md"
requires-python = ">=3.10,<3.14"
dependencies = [
"numpy>=1.26,<2",
"tomli>=2.0.1; python_version < '3.11'",
]
classifiers = [
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
[project.optional-dependencies]
# OpenCV 4.12+ switched Python 3.9+ wheels to NumPy 2.x. The runtime deliberately
# stays on NumPy 1.26 for now, so keep vision on the last compatible wheel line.
vision = ["opencv-python>=4.9,<4.12"]
ml = ["torch>=2.2", "torchvision>=0.17"]
ui = ["textual>=0.70"]
audio = ["SoundCard>=0.4.6"]
# ModernGL 5.12 is the current stable line; glcontext owns platform context creation.
graphics = ["moderngl>=5.12,<6", "glcontext>=3,<4"]
# Fully-open performer tracking path. RTMLib exposes RTMPose/RTMW whole-body models
# without the full MMDetection/MMCV stack. ONNX Runtime is intentionally explicit.
performer = ["rtmlib>=0.0.16,<0.1", "onnxruntime>=1.20"]
# Optional Google MediaPipe Tasks compatibility backend; current wheels target <=3.12.
mediapipe = ["mediapipe>=1.0,<2; python_version < '3.13'"]
assets3d = ["trimesh>=5,<6"]
interop = ["python-osc>=1.9,<2"]
controls = ["python-osc>=1.9,<2", "mido>=1.3,<2", "python-rtmidi>=1.5,<2"]
# aalink is GPLv3+ and therefore opt-in rather than part of the default desktop bundle.
link = ["aalink==0.2.3"]
desktop = ["pyinstaller>=6.10"]
dev = ["pytest>=8", "ruff>=0.6"]
[project.scripts]
projection-map = "projection_mapping.cli:main"
projection-ui = "projection_mapping.tui:main"
projection-studio = "projection_mapping.studio_server:main"
projection-studio-desktop = "projection_mapping.studio_desktop:main"
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools.package-data]
"projection_mapping" = ["studio_static/*.html", "studio_static/*.css", "studio_static/*.js"]
[tool.pytest.ini_options]
pythonpath = ["src"]
testpaths = ["tests"]
[tool.ruff]
line-length = 100