Local Development Guide¶
This document explains how to set up, run, test, and contribute to Aniwa locally.
It is designed for:
- contributors
- maintainers
- open-source collaborators
- future core engineers
The goal is to make local development:
Purpose of Local Development¶
A strong local development workflow ensures:
- contributors can onboard quickly
- development environments remain consistent
- features can be tested safely
- releases remain stable
Development Philosophy¶
Aniwa development should feel:
Development Environment Philosophy¶
Every contributor should work in:
Why Isolation Matters¶
Environment isolation prevents:
- dependency conflicts
- global package pollution
- inconsistent behavior
- debugging complexity
Recommended Development Stack¶
Aniwa currently recommends:
| Tool | Purpose |
|---|---|
| Python | core language |
| Git | version control |
| VS Code | editor |
| Git Bash | terminal |
| pytest | testing |
| black | formatting |
| ruff | linting |
Current Python Requirement¶
Aniwa currently targets:
Why Modern Python Matters¶
Modern Python provides:
- better typing
- improved performance
- cleaner syntax
- stronger tooling
Step 1 — Clone the Repository¶
Clone the repository locally.
Example:
Step 2 — Navigate Into the Project¶
Example:
Step 3 — Create a Virtual Environment¶
Create an isolated environment.
Example:
Why Virtual Environments Matter¶
Virtual environments isolate:
- dependencies
- tooling
- Python packages
from the global system.
Step 4 — Activate the Environment¶
Windows¶
Example:
macOS/Linux¶
Example:
Step 5 — Upgrade pip¶
Recommended:
Why Updating pip Matters¶
Newer versions improve:
- dependency resolution
- installation reliability
- compatibility
Step 6 — Install Development Dependencies¶
Install project dependencies.
Example:
Step 7 — Install Aniwa Locally¶
Install in editable mode.
Example:
Why Editable Installs Matter¶
Editable installs allow:
- instant code changes
- rapid development
- faster iteration
without reinstalling repeatedly.
Step 8 — Verify Installation¶
Test the CLI.
Example:
Expected Result¶
You should see:
Project Structure Overview¶
Current project structure:
Aniwa/
│
├── aniwa/
│ ├── cli.py
│ ├── core/
│ ├── io/
│ ├── models/
│ ├── reports/
│ ├── templates/
│ └── utils/
│
├── tests/
├── examples/
├── docs/
├── README.md
├── CONTRIBUTING.md
├── pyproject.toml
└── requirements.txt
Understanding the Architecture¶
Aniwa is organized into layered systems.
Core Layers¶
| Layer | Purpose |
|---|---|
| cli | orchestration |
| io | dataset ingestion |
| core | profiling engine |
| models | structured data |
| reports | rendering/export |
| templates | presentation |
| tests | validation |
Running Aniwa Locally¶
Basic example:
Running HTML Reports¶
Example:
Running JSON Reports¶
Example:
Running Markdown Reports¶
Example:
Running Fast Profiling¶
Example:
Running Deep Profiling¶
Example:
Using Configuration Files¶
Aniwa supports configuration files.
Supported Config Types¶
Supported formats:
| Format |
|---|
| YAML |
| TOML |
| JSON |
Example Config Usage¶
Example:
Automatic Config Discovery¶
Aniwa automatically searches for:
Running Tests¶
Run all tests using:
Why Testing Matters¶
Tests protect against:
- regressions
- broken features
- unstable releases
Running Specific Tests¶
Example:
Running With Verbose Output¶
Example:
Formatting Code¶
Aniwa uses:
for formatting.
Format Command¶
Example:
Why Formatting Matters¶
Consistent formatting improves:
- readability
- maintainability
- code reviews
Linting Code¶
Aniwa uses:
for linting.
Ruff Command¶
Example:
Why Linting Matters¶
Linting helps detect:
- unused imports
- bugs
- bad patterns
- inconsistent code
Recommended Development Workflow¶
Recommended cycle:
Git Workflow¶
Recommended workflow:
Creating a Branch¶
Example:
Commit Philosophy¶
Commits should remain:
- focused
- descriptive
- atomic
Good Commit Examples¶
Examples:
Bad Commit Examples¶
Avoid:
Pull Request Philosophy¶
PRs should:
- solve one problem
- include tests
- update docs
- remain reviewable
Example Development Tasks¶
Typical contributor tasks:
| Task |
|---|
| add file readers |
| improve reports |
| create templates |
| add insights |
| improve tests |
Debugging Philosophy¶
Debugging should prioritize:
- reproducibility
- isolation
- clarity
Recommended Debugging Strategy¶
Workflow:
Recommended VS Code Extensions¶
Suggested extensions:
| Extension |
|---|
| Python |
| Ruff |
| Black Formatter |
| GitLens |
VS Code Virtual Environment Setup¶
Example .vscode/settings.json:
Why Editor Configuration Matters¶
Good editor setup improves:
- productivity
- consistency
- onboarding
Example Development Commands¶
Install Dependencies¶
Editable Install¶
Run Tests¶
Format Code¶
Run Linter¶
Run CLI¶
Performance Philosophy¶
Development workflows should remain:
Why Fast Workflows Matter¶
Fast iteration improves:
- contributor velocity
- experimentation
- productivity
Cross-Platform Philosophy¶
Aniwa development should work consistently across:
| Platform |
|---|
| Windows |
| Linux |
| macOS |
Common Development Problems¶
Typical issues include:
| Problem |
|---|
| dependency conflicts |
| missing virtual environment |
| outdated pip |
| missing editable install |
Recommended Fixes¶
Always verify:
- environment activated
- dependencies installed
- editable install completed
Architecture Learning Philosophy¶
Contributors are encouraged to study:
- profiling systems
- dataframe systems
- report architectures
- distributed systems
Recommended Contributor Progression¶
Suggested learning order:
Long-Term Contributor Philosophy¶
Aniwa contributors are not just writing features.
They are helping build:
Long-Term Development Vision¶
Aniwa development workflows should eventually support:
- distributed systems
- cloud infrastructure
- plugin ecosystems
- enterprise workflows
Final Philosophy¶
Local development exists to ensure contributors can:
Related Documentation¶
Continue with:
- developer-guide/code-style.md
- developer-guide/testing.md
- architecture/system-design.md
- CONTRIBUTING.md