Skip to content
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
164 lines (114 sloc) 5.86 KB

Contributing to napari

We welcome your contributions! Please see the provided steps below and never hesitate to contact us.

If you are a new user, we recommend checking out the detailed Github Guides.

Setting up a development installation

In order to make changes to napari, you will need to fork the repository.

If you are not familiar with git, we recommend reading up on this guide.

Clone the forked repository to your local machine and change directories:

$ git clone
$ cd napari

Set the upstream remote to the base napari repository:

$ git remote add upstream

Install the required dependencies:

$ pip install -r requirements.txt

Make the development version available globally:

$ pip install -e .

We use pre-commit to run black formatting and flake8 linting automatically prior to each commit. Please install it in your environment as follows:

$ pre-commit install

Upon committing, your code will be formatted according to our black configuration, which includes the settings skip-string-normalization = true and max-line-length = 79. To learn more, see black's documentation.

Code will also be linted to enforce the stylistic and logistical rules specified in our flake8 configuration, which currently ignores E203, E501, W503 and C901. For information on any specific flake8 error code, see the Flake8 Rules. You may also wish to refer to the PEP 8 style guide.

If you wish to tell the linter to ignore a specific line use the # noqa comment along with the specific error code (e.g. import sys # noqa: E402) but please do not ignore errors lightly.

Building the icons

Our icon build process starts with a base set of svg formatted icons stored in napari/resources/icons/svg. If you want to add a new icon to the app, make the icon in whatever program you like, add it to that folder, and make sure it is listed in both napari/resources/ and napari/resources/res.qrc.

Then run the following command

python -m napari.resources.build_icons

This creates separate folders in napari/resources/icons with full colored icon sets for each of our themes.

Make sure that the file napari/resources/icons/res.qrc has a list of all the icons with the correct prefix for each of our themes, e.g. <file>icons/light/select.svg</file>, <file>icons/dark/select.svg</file>, etc.

Finally, compile all the icons for use in the app by calling either

# for PySide2 users
pyside2-rcc -o napari/resources/ napari/resources/res.qrc


# for PyQt5 users
pyrcc5 -o napari/resources/ napari/resources/res.qrc

depending on if you are using PySide2 or PyQt5 respectively. Those two commands are automatically installed when pip installing the respective packages.

Finally inside the autogenerated napari/resources/ replace either PySide2 or PyQt5 with qtpy to ensure compatibility with both packages.

If you want to change one of the existing icons, modify the version in napari/resources/icons/svg and run the commands above.

Making changes

Create a new feature branch:

$ git checkout master -b your-branch-name

git will automatically detect changes to a repository. You can view them with:

$ git status

Add and commit your changed files:

$ git add my-file-or-directory
$ git commit -m "my message"

Help us make sure it's you

Each commit you make must have a GitHub-registered email as the author. You can read more here.

To set it, use git config --global

Keeping your branches up-to-date

Switch to the master branch:

$ git checkout master

Fetch changes and update master:

$ git pull upstream master --tags

This is shorthand for:

$ git fetch upstream master --tags
$ git merge upstream/master

Update your other branches:

$ git checkout your-branch-name
$ git merge master

Sharing your changes

Update your remote branch:

$ git push -u origin your-branch-name

You can then make a pull-request to napari's master branch.

Building the docs

From the project root:

$ make docs

The docs will be built at docs/build/html.

Most web browsers will allow you to preview HTML pages. Try entering file:///absolute/path/to/napari/docs/build/html/index.html in your address bar.

Code of conduct

napari has a Code of Conduct that should be honored by everyone who participates in the napari community.

Questions, comments, and feedback

If you have questions, comments, suggestions for improvement, or any other inquiries regarding the project, feel free to open an issue.

Issues and pull-requests are written in Markdown. You can find a comprehensive guide here.

You can’t perform that action at this time.