-
Notifications
You must be signed in to change notification settings - Fork 0
Contributing
- Initialize
git
inside your repo:
cd pr-st-cli && git init
- If you don't have
Poetry
installed run:
make poetry-download
- Initialize poetry and install
pre-commit
hooks:
make install
make pre-commit-install
- Run the codestyle:
make codestyle
- Upload initial code to GitHub:
git add .
git commit -m ":tada: Initial commit"
git branch -M main
git remote add origin https://github.com/gamcoh/pr-st-cli.git
git push -u origin main
- Set up Dependabot to ensure you have the latest dependencies.
- Set up Stale bot for automatic issue closing.
Want to know more about Poetry? Check its documentation.
Details about Poetry
Poetry's commands are very intuitive and easy to learn, like:
poetry add numpy@latest
poetry run pytest
poetry publish --build
etc
Building a new version of the application contains steps:
- Bump the version of your package
poetry version <version>
. You can pass the new version explicitly, or a rule such asmajor
,minor
, orpatch
. For more details, refer to the Semantic Versions standard. - Make a commit to
GitHub
. - Create a
GitHub release
. - And... publish π
poetry publish --build
Well, that's up to you πͺπ». I can only recommend the packages and articles that helped me.
-
Typer
is great for creating CLI applications. -
Rich
makes it easy to add beautiful formatting in the terminal. -
Pydantic
β data validation and settings management using Python type hinting. -
Loguru
makes logging (stupidly) simple. -
tqdm
β fast, extensible progress bar for Python and CLI. -
IceCream
is a little library for sweet and creamy debugging. -
orjson
β ultra fast JSON parsing library. -
Returns
makes you function's output meaningful, typed, and safe! -
Hydra
is a framework for elegantly configuring complex applications. -
FastAPI
is a type-driven asynchronous web framework.
Articles:
- Open Source Guides.
- A handy guide to financial support for open source
- GitHub Actions Documentation.
- Maybe you would like to add gitmoji to commit names. This is really funny. π
- Supports for
Python 3.8
and higher. -
Poetry
as the dependencies manager. See configuration inpyproject.toml
andsetup.cfg
. - Automatic codestyle with
black
,isort
andpyupgrade
. - Ready-to-use
pre-commit
hooks with code-formatting. - Type checks with
mypy
; docstring checks withdarglint
; security checks withsafety
andbandit
- Testing with
pytest
. - Ready-to-use
.editorconfig
,.dockerignore
, and.gitignore
. You don't have to worry about those things.
-
GitHub
integration: issue and pr templates. -
Github Actions
with predefined build workflow as the default CI/CD. - Everything is already set up for security checks, codestyle checks, code formatting, testing, linting, docker builds, etc with
Makefile
. More details in makefile-usage. - Dockerfile for your package.
- Always up-to-date dependencies with
@dependabot
. You will only enable it. - Automatic drafts of new releases with
Release Drafter
. You may see the list of labels inrelease-drafter.yml
. Works perfectly with Semantic Versions specification.
- Ready-to-use Pull Requests templates and several Issue templates.
- Files such as:
LICENSE
,CONTRIBUTING.md
,CODE_OF_CONDUCT.md
, andSECURITY.md
are generated automatically. -
Stale bot
that closes abandoned issues after a period of inactivity. (You will only need to setup free plan). Configuration is here. -
Semantic Versions specification with
Release Drafter
.
pip install -U pr-st-cli
or install with Poetry
poetry add pr-st-cli
Then you can run
pr-st-cli --help
or with Poetry
:
poetry run pr-st-cli --help
Makefile
contains a lot of functions for faster development.
1. Download and remove Poetry
To download and install Poetry run:
make poetry-download
To uninstall
make poetry-remove
2. Install all dependencies and pre-commit hooks
Install requirements:
make install
Pre-commit hooks coulb be installed after git init
via
make pre-commit-install
3. Codestyle
Automatic formatting uses pyupgrade
, isort
and black
.
make codestyle
# or use synonym
make formatting
Codestyle checks only, without rewriting files:
make check-codestyle
Note:
check-codestyle
usesisort
,black
anddarglint
library
Update all dev libraries to the latest version using one comand
make update-dev-deps
4. Code security
make check-safety
This command launches Poetry
integrity checks as well as identifies security issues with Safety
and Bandit
.
make check-safety
5. Type checks
Run mypy
static type checker
make mypy
6. Tests with coverage badges
Run pytest
make test
7. All linters
Of course there is a command to rule run all linters in one:
make lint
the same as:
make test && make check-codestyle && make mypy && make check-safety
8. Docker
make docker-build
which is equivalent to:
make docker-build VERSION=latest
Remove docker image with
make docker-remove
More information about docker.
9. Cleanup
Delete pycache files
make pycache-remove
Remove package build
make build-remove
Delete .DS_STORE files
make dsstore-remove
Remove .mypycache
make mypycache-remove
Or to remove all above run:
make cleanup
You can see the list of available releases on the GitHub Releases page.
We follow Semantic Versions specification.
We use Release Drafter
. As pull requests are merged, a draft release is kept up-to-date listing the changes, ready to publish when youβre ready. With the categories option, you can categorize pull requests in release notes using labels.
Label | Title in Releases |
---|---|
enhancement , feature
|
π Features |
bug , refactoring , bugfix , fix
|
π§ Fixes & Refactoring |
build , ci , testing
|
π¦ Build System & CI/CD |
breaking |
π₯ Breaking Changes |
documentation |
π Documentation |
dependencies |
β¬οΈ Dependencies updates |
You can update it in release-drafter.yml
.
GitHub creates the bug
, enhancement
, and documentation
labels for you. Dependabot creates the dependencies
label. Create the remaining labels on the Issues tab of your GitHub repository, when you need them.