SciPy contributor guide#
This guide is designed to help you quickly find the information you need about SciPy development after you’ve reviewed the introductory material in Ways to Contribute or Contributor quickstart guide.
You can also watch SciPy Development Workflow, a five-minute video example of fixing a bug and submitting a pull request (note: this video is from 2018, so the build steps are different by now - the overall workflow is still the same though).
Building from source - how to set up a development environment, including installing compilers and SciPy dependencies, cloning the SciPy repository on GitHub and updating git submodules, and using the
dev.py
interface for building and running tests.Editing SciPy - how to edit SciPy Python code, with tips on finding which module contains SciPy functionality to be edited, adding new modules to SciPy, and complying with PEP8 style standards
Unit tests - how to write and run unit tests for SciPy with the pytest framework
Documentation - how to write reStructuredText documentation that complies with docstring standards, build documentation locally with Sphinx, and view documentation built during continuous integration checks
Benchmarks - how to benchmark code with airspeed velocity
Compiled code - how to add fast, compiled code to SciPy
Continuous Integration - how does our continuous integration system works and how to debug your PR
Editing SciPy#
Development workflow lays out what to do after your development environment is set up
PEP8 and SciPy gives some tips for ensuring that your code is PEP8 compliant
Git for development is a guide to using
git
, the distributed version-control system used to manage the changes made to SciPy code from around the worldSciPy API contains some important notes about how SciPy code is organized and documents the structure of the SciPy API; if you are going to import other SciPy code, read this first
Reviewing Pull Requests explains how to review another author’s SciPy code locally
Triaging and curating issues explains how to curate issues and PRs, as well as how GitHub team permissions work for SciPy
Adding New Methods, Functions, and Classes has information on how to add new methods, functions and classes
SciPy Core Developer Guide has background information including how decisions are made and how a release is prepared; it’s geared toward Core Developers, but contains useful information for all contributors
Code and Documentation Style Guide - The Missing Bits - code and documentation style guide
Unit tests#
Testing guidelines is the definitive guide to writing unit tests of NumPy or SciPy code (part of the NumPy documentation)
Running SciPy Tests Locally documents
dev.py test
, the command to build SciPy and run tests locally
Documentation#
Documentation style contains everything you need to know about writing docstrings, which are rendered to produce HTML documentation using Sphinx (part of the NumPy documentation)
Contributing to the SciPy documentation contains information on how to contribute to the SciPy documentation
Rendering documentation locally with Sphinx it’s important to check how changes to the documentation render before merging a PR; this document explains how you can do that
Benchmarks#
Benchmarking SciPy with airspeed velocity explains how to add benchmarks to SciPy using airspeed velocity
Compiled code#
Adding Cython to SciPy extending and compiling Python code with Cython can significantly improve its performance; this document helps you get started
Beyond Python discusses the use of C, C++, and Fortran code in SciPy
Public Cython APIs on guidelines on exposing public Cython APIs