Feat/new machine setup and features doc
Summary
-
New-machine setup (
make setupnow handles everything): expandsMakefileto runuv sync, approve.envrc(with graceful fallback if direnv isn't installed), and install prek hooks in one command. README and CONTRIBUTING both document the Windows path (manualuv sync+prek installsteps, Git Bash note). -
Feature inventory (
FEATURES.md): new file in the repo root cataloguing every practice baked into the template — what each feature does, which files it touches, and how to retrofit it into an existing project. Intended both for AI tools asked to migrate template features and for developers adopting practices selectively. -
Hatchling src layout cleanup: replaces
[tool.hatch.build.targets.wheel] packages = ["src/{{ ... }}"]with[tool.hatch.build] sources = ["src"]— cleaner, no Jinja2 expression inpyproject.toml. - openBIS scripts removed: replaced by DVC registry approach.
Resolves
-
"make sure that if a person gets a new computer and clones a cookiecutter-created repo that the docs explain how to re-init everything (perhaps with a script)" —
make setupis now the single command for macOS/Linux; Windows manual steps are documented in both README and CONTRIBUTING. -
"make sure that there's a clearly defined set of features in the cookiecutter template to help an AI tool and/or user migrate cookiecutter features to an existing project" — covered by
FEATURES.md.
Test plan
-
Generate a standardproject from the branch and runmake setupon a clean clone — confirm uv sync, direnv approval, and prek hooks all complete -
Generate a data_projectand confirm post-checkout hook installs correctly viamake setup -
Verify uv run pytestanduv run prek run --all-fileswork in a generated project (confirmssources = ["src"]is picked up correctly)
Edited by cbaker