docs: expand DEVELOPMENT.md with architecture and testing guide - #1902
Conversation
Add project overview, detailed architecture map (directory structure, key classes, design patterns), test infrastructure guide, environment variables reference, CI/CD summary, and pre-commit hook listing to help AI assistants navigate and contribute to the codebase effectively. https://claude.ai/code/session_017qM7WyFgvqy5UQHEtEcHzY
CLAUDE.md was duplicating content already covered (or better suited to) project-level documentation. Following the pattern used in datalad and heudiconv: - Create CONTRIBUTING.md with architecture, code style, test infrastructure, CI/CD, and PR-label reference. - Slim CLAUDE.md to a pointer at CONTRIBUTING.md + DEVELOPMENT.md, keeping only AI-specific notes (pre-commit re-run, git-bug commands). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017qM7WyFgvqy5UQHEtEcHzY
Move architecture, code style, test infrastructure, and CI/CD sections into DEVELOPMENT.md so all developer documentation lives in one file. Update CLAUDE.md to point at DEVELOPMENT.md instead. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017qM7WyFgvqy5UQHEtEcHzY
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017qM7WyFgvqy5UQHEtEcHzY
- Note that most code style rules are enforced by pre-commit hooks. - Replace pipe tables (key classes, pytest markers, CI/CD) with indented bullet lists for readability in plain text. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017qM7WyFgvqy5UQHEtEcHzY
79e4659 to
7dc0027
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1902 +/- ##
=======================================
Coverage 76.96% 76.96%
=======================================
Files 88 88
Lines 12882 12882
=======================================
Hits 9914 9914
Misses 2968 2968
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Point Claude at the LAD (LLM-Assisted Development) prompt workflows so it knows about the phased development framework when asked to use it. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017qM7WyFgvqy5UQHEtEcHzY
There was a problem hiding this comment.
Pull request overview
This PR expands contributor-facing documentation by making DEVELOPMENT.md the single, authoritative source for architecture, testing, and CI/CD guidance, and simplifying CLAUDE.md to point developers to that guide.
Changes:
- Added detailed codebase architecture documentation (directory layout, key design patterns, key classes) to
DEVELOPMENT.md - Added expanded testing and CI/CD documentation, including fixtures, markers, and common development commands
- Refactored
CLAUDE.mdto remove duplicated guidance and redirect contributors toDEVELOPMENT.md
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| DEVELOPMENT.md | Major expansion of developer documentation covering architecture, testing, pre-commit, and CI/CD |
| CLAUDE.md | Reduced duplicated instructions and directs contributors to DEVELOPMENT.md as the source of truth |
Suppressed comments (3)
DEVELOPMENT.md:107
- This refers to a “docker-compose fixture”, but the test harness uses the
docker composeCLI (space) rather than the legacydocker-composebinary. Rewording avoids implying the wrong command name.
Tests that need a running archive instance use the `local_dandi_api`
docker-compose fixture. Set `DANDI_TESTS_PULL_DOCKER_COMPOSE=""` to skip
`docker compose pull` and speed up repeated runs.
DEVELOPMENT.md:179
AssetDirURLis listed as aParsedDandiURLsubclass, but there is no such class indandi/dandiarchive.py(the directory-like multi-asset URL type isAssetFolderURL). This makes the architecture overview inaccurate.
- `ParsedDandiURL` (`dandiarchive.py`) — abstract base for URL parsing;
subclasses `DandisetURL`, `SingleAssetURL`, `AssetItemURL`, `AssetDirURL`
- `DandiFile` (`files/bases.py`) — abstract base for all file types;
DEVELOPMENT.md:282
- The documented CI Python version range doesn’t match the current test matrix in
.github/workflows/run-tests.yml(which includes 3.11–3.14). Updating this keeps the CI/CD documentation accurate.
- `run-tests.yml` — full test matrix: Python 3.10–3.13 × Ubuntu,
macOS (M1 + Intel), Windows
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| To run a specific test with tox: | ||
| ``` | ||
| tox r -e py3 -- dandi/tests/test_file.py::test_function -v | ||
| ``` |
'tox r' is a tox 4 alias for 'tox run' — valid but less obvious. Use the same 'tox -e' form as the rest of the file. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017qM7WyFgvqy5UQHEtEcHzY
|
🚀 PR was released in |
Summary
Significantly expanded
DEVELOPMENT.mdwith comprehensive documentation of the codebase architecture, testing infrastructure, and CI/CD setup. Also updatedCLAUDE.mdto redirect developers to the authoritativeDEVELOPMENT.mdfile rather than duplicating guidance.Key Changes
cli/,files/,metadata/,validate/,support/,tests/)DandiAPIClient,ParsedDandiURL,DandiFile,ValidationResult,Dandiset,DandiInstance)local_dandi_apifixture andDANDI_TESTS_PULL_DOCKER_COMPOSEenvironment variableDEVELOPMENT.md, reducing maintenance burden and ensuring single source of truthImplementation Details
https://claude.ai/code/session_017qM7WyFgvqy5UQHEtEcHzY