Contributing to PyDASA ====================== ⚠️⚠️⚠️ Contributions are welcome! We use `Conventional Commits `_ for automatic versioning and changelog generation to maintain a clean and predictable release process. ⚠️⚠️⚠️ Commit Message Format --------------------- :: (): **Types:** - ``feat``: New feature (triggers MINOR version bump). - ``fix``: Bug fix (triggers PATCH version bump). - ``docs``: Documentation changes only. - ``refactor``: Code refactoring without feature changes. - ``test``: Adding or updating tests. - ``perf``: Performance improvements. - ``chore``: Other changes that don't modify src or test files. **Breaking Changes:** Add ``BREAKING CHANGE:`` in commit footer to trigger MAJOR version bump. Examples -------- .. code-block:: bash # Feature (0.6.0 → 0.7.0) git commit -m "feat(workflows): add uncertainty propagation analysis" # Bug fix (0.6.0 → 0.6.1) git commit -m "fix(buckingham): resolve matrix singularity edge case" # Breaking change (0.6.0 → 1.0.0) git commit -m "feat(api)!: redesign Variable API BREAKING CHANGE: Variable.value renamed to Variable.magnitude" Development Workflow -------------------- .. code-block:: bash # Clone and setup git clone https://github.com/DASA-Design/PyDASA.git cd PyDASA # Install in development mode pip install -e ".[dev]" # Run tests pytest tests/ # Commit with conventional format git commit -m "feat(module): add new feature" # Create PR for review Release Process --------------- 1. Make changes with conventional commit messages. 2. Create PR and merge to ``main``. 3. GitHub Actions automatically: - Analyzes commit messages. - Bumps version (MAJOR.MINOR.PATCH). - Updates ``_version.py`` and ``pyproject.toml``. - Creates GitHub release with changelog. - Publishes to PyPI.