Skip to content

Latest commit

 

History

History
75 lines (47 loc) · 2.49 KB

CONTRIBUTING.md

File metadata and controls

75 lines (47 loc) · 2.49 KB

Contributing

1. Install Development Build

From a command line, execute the following commands:

git clone https://github.com/MSDLLCpapers/obsidian
cd obsidian
git checkout main
pip install -e .[dev]

2. Style

Linting is enforced with flake8 based on configurations in .flake8.

We recommend using VS Code with flake8 extensions to automatically aid adherence to code style.

All function and method signatures should contain Python 3.10+ type hints.

Each module, class, method, and function should have a docstring. We use Google style docstrings.

We prefer that class docstrings be written under class definition instead of __init__.

3. Documentation

For documentation building, obsidian uses sphinx with autodoc and autosummary

In order to rebuild documentation, first be sure to have installed the documentation build

pip install -e .[docs]

The perform the following steps:

cd obsidian/docs
make clean
make html

Documentation HTML output will be built in obsidian/docs/build with the homepage at build/html/index.html.

Guidance Documentation

New or major changes to subpackages or modules (e.g. acquisition, surrogate, optimizer.BO_optimizer, objectives.scalarize) should be covered by informative documentation detailing API usage in Wiki articles.

Major features or configurations should be documented as examples in Tutorial notebooks.

4. Testing

For testing, obsidian uses pytest.

In order to run pytests, execute the following commands:

cd obsidian
pytest > logs/pytest_output.txt

By default, code coverage reports will be generated in logs/pytestCovReport according to configurations pytest.ini and .coveragerc. Logs will be output to logs/pytest_output.txt.

We have also enabled fast testing with majority coverage and flagged slow tests that can be avoided until major pull requests.

pytest -m fast
pytest -m "not slow"

All new features should be fully covered by newly written pytests.

5. License

By contributing to obsidian, you agree that your contributions will be licensed under the package LICENSE.