homemaker-layout/pyproject.toml
Bruno Postle 9296f75cdb homemaker-py-2g7.1: plan->dom composer (SVG trace -> slicing-tree .dom)
Composer half of the ground-truth bead: examples/harbor-house/drawings/
harbor-house 1.svg turned out to be a Bonsai/Blender render of 3m.dom's own
IFC (32 IfcSpace paths == 3m.dom's upper-storey leaf count), not a human
trace, so no usable reference exists yet -- this builds and tests the
pipeline that will consume one once traced. compose.py parses storey-N
Inkscape layers of cut-lines + labels against a boundary-stub .dom (plot/
height/elevation only, no room shapes to keep aligned across storeys) and
recursively detects guillotine cuts, mirroring geometry.py's own
division-line algebra; non-slicible regions and label mismatches are
reported by location rather than guessed at. homemaker-compose CLI added.
Renamed dom._link to public dom.link since compose.py needs to re-link from
outside dom.py. Full design writeup in DESIGN.md sec 37.3; actual human
tracing of harbor-house/programme-house is tracked as follow-up under
2g7.1, still open.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LSwQwpEaHFBkeVSDDWd75S
2026-08-03 11:03:02 +01:00

35 lines
836 B
TOML

[project]
name = "homemaker-layout"
version = "0.0.1"
description = "Programme-driven building layout search over slicing trees (Python successor to Urb)"
requires-python = ">=3.11"
dependencies = [
"pyyaml>=6.0",
"numpy>=1.26",
"scipy>=1.11",
"shapely>=2.0",
"networkx>=3.0",
"cma>=3.0",
]
[project.scripts]
homemaker-evolve = "homemaker_layout.evolve:main"
homemaker-fitness = "homemaker_layout.fitness_cmd:main"
homemaker-collapse = "homemaker_layout.collapse_cmd:main"
homemaker-compose = "homemaker_layout.compose_cmd:main"
[project.optional-dependencies]
dev = ["pytest>=8.0", "ruff>=0.5"]
[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"
[tool.setuptools.packages.find]
where = ["src"]
[tool.pytest.ini_options]
pythonpath = ["src"]
[tool.ruff]
line-length = 100