Skip to content

Commit

Permalink
Improve contributing instructions
Browse files Browse the repository at this point in the history
This project is quite old and I haven't updated it to modern community
standards. This doesn't include a code of conduct or issue templates,
but is a major step toward a better contributing experience.
  • Loading branch information
michaelherold committed Oct 17, 2022
1 parent 178e64f commit a74a7f8
Show file tree
Hide file tree
Showing 9 changed files with 87 additions and 8 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Expand Up @@ -22,7 +22,7 @@ jobs:
- name: Check formatting
run: |
hatch run lint:all
script/static-analysis
test:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -51,7 +51,7 @@ jobs:
- name: Run tests
run: |
hatch run cov
script/test
- name: Report coverage
env:
Expand Down
60 changes: 60 additions & 0 deletions CONTRIBUTING.rst
@@ -0,0 +1,60 @@
Contributing
============

In the spirit of `free software <http://www.fsf.org/licensing/essays/free-sw.html>`__, we encourage **everyone** to help improve this project. Here are some ways *you* can contribute:

- Use alpha, beta, and pre-release versions.
- Report bugs.
- Suggest new features.
- Write or edit documentation.
- Write specifications.
- Write code (**no patch is too small**: fix typos, add comments, clean up inconsistent whitespace).
- Refactor code.
- Fix `issues <https://github.com/michaelherold/pyIsEmail/issues>`__.
- Review patches.

Submitting an issue
-------------------

We use the `GitHub issue tracker <https://github.com/michaelherold/pyIsEmail/issues>`__ to track bugs and features. Before submitting a bug report or feature request, check to make sure no one else has already submitted the same bug report.

When submitting a bug report, please include a `Gist <https://gist.github.com>`__ that includes a stack trace and any details that may be necessary to reproduce the bug, including your pyIsEmail version, Python version, and operating system.

Ideally, a bug report should include a pull request with failing tests.

Writing code
------------

There is a setup script that you can run directly on any platform that has a POSIX shell. Run ``script/setup`` to get started, then skip to the next section. For more information, read on in this section.

We use `Hatch <https://hatch.pypa.io/1.6/>`__ to manage the project. It enables us to centralize the organization of our dependencies and development harness.

To get started with Hatch, you can `install it <https://hatch.pypa.io/1.6/install/>`__ in a variety of ways. We recommend installing it via your operating system's package manager or with ``pipx`` instead of using ``pip``.

Once you have installed Hatch, you are ready to started contributing code!

Submitting a pull request
-------------------------

1. Fork the repository.
2. Create a topic branch.
3. Add tests for your unimplemented feature or bug fix.
4. Run ``script/test``. If your tests pass, return to step 3.
5. Implement your feature or bug fix.
6. Run ``script/chores``. If your tests or any of the linters fail, return to step 5.
7. Open ``coverage/index.html``. If your changes are not fully covered by your tests, return to step 3.
8. Add documentation for your feature or bug fix.
9. Commit and push your changes.
10. Submit a pull request.

Tools to help you succeed
-------------------------

After checking out the repository, run ``script/setup`` to install dependencies. Then, run ``script/test`` to run the tests. You can also run ``script/console`` for an interactive prompt that will allow you to experiment.

Before committing code, run ``script/chores`` to check that the code conforms to the style guidelines of the project, that all of the tests are green (if you’re writing a feature; if you’re only submitting a failing test, then it does not have to pass!), and that the changes are sufficiently documented.

Releasing a new version (release maintainers only)
--------------------------------------------------

Hatch has built-in support for managing releases. Use ``hatch build`` to build the wheel and source distribution. Then, run ``tar -tvf dist/pyisemail-<version>.tar.gz`` to verify the contents of the archive. If everything looks good, publish with ``hatch publish``.
6 changes: 1 addition & 5 deletions README.rst
Expand Up @@ -116,11 +116,7 @@ original PHP.
Contributing
------------

1. Fork it
2. Create your feature branch (``git checkout -b my-new-feature``)
3. Commit your changes (``git commit -am 'Add some feature'``)
4. Push to the branch (``git push origin my-new-feature``)
5. Create a new Pull Request
So you're interested in contributing to pyIsEmail? Check out our `contributing guidelines <./CONTRIBUTING.rst>`__ for more information on how to do that.

Versioning
----------
Expand Down
2 changes: 2 additions & 0 deletions pyproject.toml
Expand Up @@ -68,6 +68,8 @@ path = "pyisemail/__about__.py"

[tool.hatch.build.targets.sdist]
include = [
"/CHANGELOG.rst",
"/CONTRIBUTING.rst",
"/pyisemail",
]

Expand Down
6 changes: 6 additions & 0 deletions script/chores
@@ -0,0 +1,6 @@
#!/bin/bash

set -euo pipefail

script/test
script/static-analysis
5 changes: 5 additions & 0 deletions script/console
@@ -0,0 +1,5 @@
#!/bin/bash

set -euo pipefail

hatch run python
2 changes: 1 addition & 1 deletion script/setup
@@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/bash

set -euo pipefail

Expand Down
5 changes: 5 additions & 0 deletions script/static-analysis
@@ -0,0 +1,5 @@
#!/bin/bash

set -euo pipefail

hatch run lint:all
5 changes: 5 additions & 0 deletions script/test
@@ -0,0 +1,5 @@
#!/bin/bash

set -euo pipefail

hatch run cov

0 comments on commit a74a7f8

Please sign in to comment.