Contributing to OptArrow
Thank you for your interest in contributing. This guide will help you get started.
Project Structure
./src: Main source code../tests: Test suite for the project../Documentation: Documentation source files for this site.
Getting Started
Fork the repository and clone your fork.
Install dependencies as required by the project.
On Linux (Debian), you may use
./scripts/envSetup.shfor quick environment setup.poetryis used to manage Python dependencies.Julia dependencies must be installed manually:
julia --project=./src/service/optimization_service/julia -e "import Pkg; Pkg.instantiate()"
Create a new branch for your feature or bugfix:
git checkout -b feature/your-feature-name
Making Changes
Place all source code changes in
./src.Add or update tests in
./tests.Add or update documentation in
./Documentation.Ensure your code follows the project’s style and linting rules.
Website Documentation
The OptArrow website is built from the gh-pages branch. The documentation
source files live under Documentation/ on that branch and are written in
reStructuredText (.rst).
When documentation changes are needed, edit the relevant .rst files in
Documentation/. A GitHub Actions CI workflow is configured to rebuild the
website whenever the documentation source changes. The workflow converts the
.rst files to generated HTML and publishes the updated site, so contributors
normally do not need to edit generated HTML files by hand.
In short:
Check out the
gh-pagesbranch.Edit the appropriate
Documentation/**/*.rstfile.Commit and push the source change.
Let CI build and publish the HTML website.
Running Tests
Run the test suite to verify your changes:
poetry run pytest
Add -s to see STDOUT output from tests.
Submitting Changes
Commit your changes with clear messages.
Push your branch to your fork.
Open a Pull Request against the main repository.
Code Review
Address feedback from reviewers.
Ensure all tests pass before merging.
Questions?
Open an issue if you need help or clarification.
Thank you for contributing!