Skip to content

Development Guide

This section contains development resources for contributors and developers working on GNS3 Copilot.

Getting Started

If you're new to contributing to GNS3 Copilot, please refer to:

  1. Testing Guide - Manual testing procedures
  2. Auto Commit Guide - Automated commit workflow
  3. Auto Documentation Guide - Documentation automation

Branching Strategy

We use the following branching strategy:

master (Production)
Development (Main Development Branch)
feature/* (Feature Branches)
  • master: Stable production releases
  • Development: Main development branch - merge all PRs here
  • feature/*: Feature branches created from Development

Available Documentation

Testing

Automation

Auto Commit

Auto Documentation

Documentation Improvements

Evolution

Development Commands

# Install development dependencies
pip install -e ".[dev,docs]"

# Run tests
pytest

# Run tests with coverage
pytest --cov=gns3_copilot --cov-report=html

# Code linting
ruff check src/

# Code formatting
ruff format src/

# Type checking
mypy src/

# Security check
safety scan

# Build documentation locally
mkdocs serve

Code Style Guidelines

We follow these code style standards:

  • PEP 8 - Python code style
  • Type Hints - Public functions must have type annotations
  • Docstrings - Google or NumPy style docstrings
  • Line Length - Maximum 88 characters (Black formatting)

Submitting Changes

  1. Create a feature branch from Development:

    git checkout -b feature/your-feature Development
    

  2. Make your changes and commit them

  3. Push your branch:

    git push origin feature/your-feature
    

  4. Create a Pull Request to the Development branch

  5. Ensure all CI checks pass before requesting review

CI/CD Pipeline

Our CI/CD pipeline includes:

  • Linting - Ruff code style checking
  • Type Checking - Mypy static type checking
  • Security Scanning - Safety dependency scanning
  • Testing - Pytest with coverage reporting
  • Documentation - Auto-updating documentation on PR
  • Release - Automated PyPI publishing on version tags