Skip to content

Feature Workflow

The overall workflow depends on the extent of the feature being added. This outline covers how to add a completely new feature to the library. However, depending on your situation some of the steps may be skipped, if in doubt, please start a discussion in the GitHub Discussions.

Full Workflow

The overall workflow for adding a new feature to the library is as follows:

graph TD
    A[Feature Proposal] --> B[Add Theory]
    B --> C[Add Functions]
    C --> E[Add Class]
    C <--> D[Add Unit Tests]
    D <--> E[Add Class]
    E --> F[Add to __init__]
    F --> G[Add Examples]
    G --> H((End))

Feature Proposal: Create a new discussion in the GitHub Discussions to propose your vision and goals.

  • Include a description of the feature, its purpose, and how it fits into the library.
  • Add manuscripts or references to contextualize the feature and equations to implement.
  • Discuss the feature with the community to gather feedback and suggestions.
  • Get the okay from the maintainer(s) to proceed with the implementation.

  1. Add Theory: Write the theory behind the feature.
  2. Add Functions: Write the functions that implement the feature.
  3. Add Unit Tests: Write unit tests to ensure the function works as intended.
  4. Add Class: Write the class that implements the functions.
  5. Add Unit Tests: Write unit tests for the class to ensure it works as intended.
  6. Add to init: Add the new functions/class to the __init__.py file to make it accessible from the package.
  7. Add Examples: Write examples to demonstrate the feature.

Note: Each step would be one or more issues, e.g., one for the theory, 1+ for the functions, etc.