git
inside your repo:git init
Poetry
installed run:make download-poetry
pre-commit
hooks:make install
make install
to use pre-commit
):git add .
git commit -m ":tada: Initial commit"
git remote add origin https://github.com/pymarkable/pymarkable.git
git push -u origin master
All manipulations with dependencies are executed through Poetry. If you're new to it, look through the documentation.
Poetry's [commands](https://python-poetry.org/docs/cli/#commands) are very intuitive and easy to learn, like: - `poetry add numpy` - `poetry run pytest` - `poetry build` - etc
Building a new version of the application contains steps:
poetry version <version>
. You can pass the new version explicitly, or a rule such as major
, minor
, or patch
. For more details, refer to the Semantic Versions standard.GitHub
.GitHub release
.poetry publish --build
Well, that's up to you. I can only recommend the packages and articles that helped me.
Packages:
Typer
is great for creating CLI applications.Rich
makes it easy to add beautiful formatting in the terminal.FastAPI
is a type-driven asynchronous web framework.IceCream
is a little library for sweet and creamy debuggingArticles:
For your development we've prepared:
Python 3.7
and higher.Poetry
as the dependencies manager. See configuration in pyproject.toml
and setup.cfg
.black
, isort
and pyupgrade
formatters.pre-commit
hooks with formatters above.mypy
.pytest
.darglint
.safety
and bandit
..editorconfig
, .dockerignore
, and .gitignore
. You don't have to worry about those things.For building and deployment:
GitHub
integration.Makefile
for building routines. Everything is already set up for security checks, codestyle checks, code formatting, testing, linting, docker builds, etc. More details at Makefile summary).Github Actions
with predefined build workflow as the default CI/CD.@dependabot
(You will only enable it).Release Drafter
. It creates a list of changes based on labels in merged Pull Requests
. You can see labels (aka categories
) in release-drafter.yml
. Works perfectly with Semantic Versions specification.For creating your open source community:
LICENSE
, CONTRIBUTING.md
, CODE_OF_CONDUCT.md
, and SECURITY.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.Release Drafter
.pip install pymarkable
or install with Poetry
poetry add pymarkable
Then you can run
pymarkable --help
pymarkable --name Roman
or if installed with Poetry
:
poetry run pymarkable --help
poetry run pymarkable --name Roman
Makefile
contains many functions for fast assembling and convenient work.
```bash make download-poetry ```
```bash make install ``` If you do not want to install pre-commit hooks, run the command with the NO_PRE_COMMIT flag: ```bash make install NO_PRE_COMMIT=1 ```
```bash make check-safety ``` This command launches a `Poetry` and `Pip` integrity check as well as identifies security issues with `Safety` and `Bandit`. By default, the build will not crash if any of the items fail. But you can set `STRICT=1` for the entire build, or you can configure strictness for each item separately. ```bash make check-safety STRICT=1 ``` or only for `safety`: ```bash make check-safety SAFETY_STRICT=1 ``` multiple ```bash make check-safety PIP_STRICT=1 SAFETY_STRICT=1 ``` > List of flags for `check-safety` (can be set to `1` or `0`): `STRICT`, `POETRY_STRICT`, `PIP_STRICT`, `SAFETY_STRICT`, `BANDIT_STRICT`.
The command is similar to `check-safety` but to check the code style, obviously. It uses `Black`, `Darglint`, `Isort`, and `Mypy` inside. ```bash make check-style ``` It may also contain the `STRICT` flag. ```bash make check-style STRICT=1 ``` > List of flags for `check-style` (can be set to `1` or `0`): `STRICT`, `BLACK_STRICT`, `DARGLINT_STRICT`, `ISORT_STRICT`, `MYPY_STRICT`.
Codestyle uses `pre-commit` hooks, so ensure you've run `make install` before. ```bash make codestyle ```
```bash make test ```
```bash make lint ``` the same as: ```bash make test && make check-safety && make check-style ``` > List of flags for `lint` (can be set to `1` or `0`): `STRICT`, `POETRY_STRICT`, `PIP_STRICT`, `SAFETY_STRICT`, `BANDIT_STRICT`, `BLACK_STRICT`, `DARGLINT_STRICT`, `ISORT_STRICT`, `MYPY_STRICT`.
```bash make docker ``` which is equivalent to: ```bash make docker VERSION=latest ``` More information [here](https://github.com/pymarkable/pymarkable/tree/master/docker).
```bash make clean_docker ``` or to remove all build ```bash make clean ``` More information [here](https://github.com/pymarkable/pymarkable/tree/master/docker).
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.
For Pull Request this labels are configured, by default:
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.
This project is licensed under the terms of the MIT
license. See LICENSE for more details.
@misc{pymarkable,
author = {pymarkable},
title = {Python project with scritps and utilities for use with remarkable readers},
year = {2020},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/pymarkable/pymarkable}}
}
This project was generated with python-package-template
.