File size: 2,041 Bytes
0483bf4
 
 
8e3b8cc
0483bf4
 
2a86f9d
0483bf4
8e3b8cc
 
 
 
2a86f9d
8e3b8cc
 
 
 
 
0483bf4
 
 
 
8e3b8cc
0483bf4
 
5c72cc9
 
0483bf4
 
8e3b8cc
3ea0b24
 
 
 
 
 
 
 
 
 
 
 
0483bf4
 
 
 
 
9d4bfda
 
 
 
 
 
 
 
 
0483bf4
 
 
 
 
 
 
 
 
 
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
[project]
name = "splasher"
version = "0.1.0"
description = "Labeling tool: synchronized channels (3D clouds, images) -> 2D BEV grid or per-point labels"
readme = "README.md"
authors = [{ name = "Augustin Bresset", email = "augustin.bresset@gmail.com" }]
license = { file = "LICENSE" }
requires-python = ">=3.11"
keywords = ["labeling", "annotation", "lidar", "point-cloud", "bev", "robotics", "traversability"]
classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Science/Research",
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Topic :: Scientific/Engineering :: Image Processing",
]
# Core + engine depend only on numpy. The fronts are extras.
dependencies = [
    "numpy",
]

# apairo is just ONE optional input adapter — the core does not depend on it.
[project.optional-dependencies]
apairo = [
    # apairo 0.5.0+ for ChannelWriter (label write-back); pinned to the release tag.
    "apairo @ git+https://github.com/apairo-robotics/apairo.git@v0.5.0",
    "PyYAML",
]
# Web server + API (the `splasher.engine` core does not depend on it).
api = [
    "fastapi",
    "uvicorn",
]
# Desktop app: the web front inside a native webview (Spotify-style).
# pywebview[qt] pulls a pip-only Qt WebEngine (Chromium) backend so a real native
# window opens out of the box on Linux (no system GTK/WebKit packages needed).
app = [
    "fastapi",
    "uvicorn",
    "pywebview[qt]",
]

[project.scripts]
splasher = "splasher.cli:main"

[dependency-groups]
dev = ["pytest", "httpx", "ruff"]  # httpx: required by fastapi.testclient (API tests)

[tool.ruff]
line-length = 110
target-version = "py311"

[tool.ruff.lint]
select = ["E", "F", "W", "I", "B", "UP"]
ignore = ["B008"]  # `= Body(...)` in defaults is the intended FastAPI idiom

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel]
packages = ["splasher"]

[tool.hatch.metadata]
allow-direct-references = true