Contributing

We love your input! We want to make contributing to AWS SSO Manager as easy and transparent as possible, whether it’s:

  • Reporting a bug

  • Discussing the current state of the code

  • Submitting a fix

  • Proposing new features

  • Becoming a maintainer

Development Process

We use GitHub to host code, to track issues and feature requests, as well as accept pull requests.

  1. Fork the repo and create your branch from master.

  2. If you’ve added code that should be tested, add tests.

  3. If you’ve changed APIs, update the documentation.

  4. Ensure the test suite passes.

  5. Make sure your code lints.

  6. Issue that pull request!

Local Development Setup

  1. Clone the repository:

    git clone https://github.com/jmfelice/aws_sso.git
    cd aws_sso
    
  2. Create a virtual environment:

    python -m venv venv
    source venv/bin/activate  # On Linux/Mac
    # OR
    .\.venv\Scripts\Activate.ps1  # On Windows PowerShell
    
  3. Install development dependencies:

    pip install -e ".[dev]"
    

Running Tests

Run the test suite using pytest:

pytest

For coverage report:

pytest --cov=aws_sso

Code Quality

We use several tools to maintain code quality:

  1. MyPy for type checking:

    mypy .
    
  2. Ruff for linting:

    ruff check .
    
  3. Flake8 for additional linting:

    flake8 .
    

Documentation

We use Sphinx for documentation. To build the docs:

  1. Install documentation dependencies:

    pip install -e ".[docs]"
    
  2. Build the documentation:

    cd docs
    make html
    

The documentation will be available in docs/build/html.

Pull Request Process

  1. Update the README.md with details of changes to the interface, if applicable.

  2. Update the docs explaining the new functionality, if applicable.

  3. The PR will be merged once you have the sign-off of at least one other developer.

Any contributions you make will be under the MIT Software License

In short, when you submit code changes, your submissions are understood to be under the same [MIT License](http://choosealicense.com/licenses/mit/) that covers the project. Feel free to contact the maintainers if that’s a concern.