Skip to content

Latest commit

 

History

History
86 lines (62 loc) · 2.15 KB

CONTRIBUTING.md

File metadata and controls

86 lines (62 loc) · 2.15 KB

Contributing

Installation for development

Something does not work and you wish to fix it? Are you curious to see how it works? For development:

# Clone
git clone --recursive https://github.com/snek5000/snek5000.git

# Activate paths: Start here. Always!
cd snek5000
source activate.sh

Now you should setup a Python environment. There are two ways to do this (and it has to be done only once):

  • Using venv
    python -m venv venv
    source venv/bin/activate
  • Using conda
    conda env create -n snek5000
    conda activate snek5000

Finally, to install in development mode:

pip install -e '.[dev]'
pip install --no-deps -r ./docs/test-requirements.txt

General guidelines

  • Editor: Use an editor which supports EditorConfig

  • Style guide: For Python code, black, isort and flake8 are used to check and lint. Installing pre-commit would enforce the style automatically as a git hook.

    pre-commit install
  • Branching model: The development uses branches and pull-requests for experimental features. We also rely on git submodules to track Nek5000. You may find the following git branches when you clone snek5000:

    • master: main branch
    • fix/..., enh/...: feature branches

    Executing the following command would configure git to work with submodules easily and ensures consistency:

    # Enable recursion for relevant commands, such that
    # regular commands recurse into submodules by default
    git config submodule.recurse true
  • Testing: Run pytest from the top-level directory. The test-cases can be found under tests/ directory. To run the slow tests too execute pytest --runslow.

  • Debugging: Set the environment variable:

    export SNEK_DEBUG=true

    to activate debugging logs and longer tests.

Vim

Vim users could benefit by setting:

set secure exrc

This sources the .exrc file which comes along with the repository and enables syntax highlighting for file extensions used in lib/Nek5000.