Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions template/CONTRIBUTING.rst.jinja
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@

.. highlight:: shell

============
Contributing
============

Contributions are welcome, and they are greatly appreciated! Every little bit
helps, and credit will always be given. The following helps you to start
contributing specifically to {{ project_slug }}. Please also consider the
`general contributing guidelines`_ for example regarding the style
of code and documentation and some helpful hints.

Types of Contributions
----------------------

Report Bugs or Suggest Features
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The best place for this is https://github.com/{{ git_username }}/{{ project_slug }}/issues.

Fix Bugs or Implement Features
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Look through https://github.com/{{ git_username }}/{{ project_slug }}/issues for bugs or feature requests
and contact us or comment if you are interested in implementing.

Write Documentation
~~~~~~~~~~~~~~~~~~~

{{ project_slug }} could always use more documentation, whether as part of the
official {{ project_slug }} docs, in docstrings, or even on the web in blog posts,
articles, and such.

Get Started!
------------

Ready to contribute? Here's how to set up `{{ project_slug }}` for local development using the command-line interface.
Note that several alternative user interfaces exist, e.g., the Git GUI, `GitHub Desktop <https://desktop.github.com/>`_,
extensions in `Visual Studio Code <https://code.visualstudio.com/>`_ ...

1. `Fork <https://docs.github.com/en/get-started/quickstart/fork-a-repo/>`_ the `{{ project_slug }}` repo on GitHub.
2. Clone your fork locally and cd into the {{ project_slug }} directory::

$ git clone https://github.com/YOUR_USERNAME/{{ project_slug }}.git
$ cd {{ project_slug }}

3. Install your local copy into a virtualenv. Assuming you have Anaconda or Miniconda installed, this is how you set up your fork for local development::

$ conda create --name {{ project_slug }} python
$ conda activate {{ project_slug }}
$ pip install -e ".[dev]"

4. Create a branch for local development. Indicate the intention of your branch in its respective name (i.e. `feature/branch-name` or `bugfix/branch-name`)::

$ git checkout -b name-of-your-bugfix-or-feature

Now you can make your changes locally.

5. When you're done making changes, check that your changes pass ruff and the
tests::

$ ruff check
$ pytest

ruff must pass without any warnings for `./{{ project_slug }}` and `./tests` using the default or a stricter
configuration. Ruff ignores a couple of PEP Errors (see `./pyproject.toml`). If necessary, adjust your linting configuration in your IDE accordingly.

6. Commit your changes and push your branch to GitHub::

$ git add .
$ git commit -m "Your detailed description of your changes."
$ git push origin name-of-your-bugfix-or-feature

7. Submit a pull request on the develop branch through the GitHub website.


.. _general contributing guidelines: https://pyfar-gallery.readthedocs.io/en/latest/contribute/index.html
11 changes: 11 additions & 0 deletions tests/test_copier.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ def test_project_folder(copie, copier_project_defaults):

@pytest.mark.parametrize("file_name", [
"README.md",
"CONTRIBUTING.rst",
])
def test_generated_file_exists(copie, copier_project_defaults, file_name):
project = copie.copy(extra_answers=copier_project_defaults)
Expand All @@ -35,3 +36,13 @@ def test_content_readme(copie, copier_project_defaults, desired):
content = project.project_dir.joinpath("README.md").read_text()
assert desired in content


@pytest.mark.parametrize("desired", [
"https://github.com/pyfar/my_project/issues",
"$ cd my_project",
])
def test_content_contributing(copie, copier_project_defaults, desired):
project = copie.copy(extra_answers=copier_project_defaults)

content = project.project_dir.joinpath("CONTRIBUTING.rst").read_text()
assert desired in content
Loading