Report bugs at https://github.com/aubricus/klak/issues.
If you are reporting bugs, please follow the .gihub/ISSUE_TEMPLATE.md
Look through the GitHub issues for bugs. Anything tagged with "bug" and "help wanted" is open to whoever wants to implement it.
Look through the GitHub issues for features. Anything tagged with "enhancement" and "help wanted" is open to whoever wants to implement it.
Klak could always use more documentation, whether as part of the official Klak docs, in docstrings, or even on the web in blog posts, articles.
The best way to send feedback is to submit an issue.
If you are proposing a feature:
- Explain in detail how it would work.
- Keep the scope as narrow as possible, to make it easier to implement.
- Remember that this is a volunteer-driven project, and that contributions are welcome.
Ready to contribute? Here's how to setup klak for local development.
Developers must configure their editor to:
- Support EditorConfg.
- Auto-format with Python Black (installed via Poetry).
# Install the latest versions of Python 3.5, 3.6, 3.7
pyenv install 3.5.<latest-patch>
pyenv install 3.6.<latest-patch>
pyenv install 3.7.<latest-patch>Open the Klak GitHub repository and fork it.
Once you've forked the repository go a head and clone it locally.
# NOTE: Enter the repo root; if you haven't already.
cd klak
# NOTE: Set/verify local pyenv, Python versions (see .python-version)
pyenv local
# NOTE: Create a virtualenv; if you haven't already.
virtualenv .venv
# NOTE: Activate the virtualenv
source ./.venv/bin/activate
# NOTE: Finally, install app under development mode
poetry install --develop=DEVELOPThis repository is managed with GitFlow and GitHub pull requests. If you're not familiar with GitFlow please read this blog post first.
First:
# NOTE: Always update develop, master to the latest before branching
$ git fetch --all
$ git checkout develop
$ git merge --ff-only origin/develop
$ git fetch --all
$ git checkout master
$ git merge --ff-only origin/masterThen:
# NOTE: We use pull requests to review and merge code. As such using the GitFlow branch "finish" commands is not allowed.
# NOTE: Create a feature/ branch
git flow feature start <branch_name>
# NOTE: Create a hotfix/ branch
git flow hotfix start <branch_name>
# NOTE: Create a release/ branch
git flow release start <branch_name># NOTE: Runs the test suite in all supported Python versions:
$ toxOnce you've added your changes and run the test suite (successfully) create a pull request.
Pull Request Guidelines:
- The pull request should include tests.
- The pull request must pass all tests.
- Check Travis-CI and make sure that the tests pass for all supported Python versions.
- If necessary update the documentation.
Create a release branch using git flow release start <version_number>.
- Run tests and make any last minute fixes.
- Bump the version in the
pyproject.tomlandklak.py - Update the HISTORY.md
- Push branch to GitHub to trigger tests in Travis-CI.
- Finalize release (see below).
To keep the commit history as clean as possible, re-write the release branch history (note: use r for first commit and s for all others during interactive rebase):
$ git rebase -i <earliest_commit_hash>^The new commit message should look like:
# Release: v<version_number>
#
# * Original commit message 1
#
# * Original commit message 2
#
# * Original commit message 3
Note: Git Flow mangles repo history, so we'll follow the model manually.
# NOTE: Update local to latest.
$ git fetch --all
$ git checkout master
$ git merge --ff-only release/<version_number>
$ git push
$ git tag -a v<version_number> -m "Release of v<version_number>"
$ git push --tags
# NOTE: Use Clickfile scripts to publish release to PyPI.
$ klak dist build
$ klak dist publish
# NOTE: Catch develop up as well
$ git checkout develop
$ git merge --ff-only release/<version_number>
$ git push
# NOTE: Delete release branch
$ git branch -D release/<version_number>Check the PyPI listing page to verify publish was successful.