nmoran / pymarkable

Python tools for use with remarkable readers
MIT License
0 stars 0 forks source link

pymarkable

[![Build status](https://github.com/pymarkable/pymarkable/workflows/build/badge.svg?branch=master&event=push)](https://github.com/pymarkable/pymarkable/actions?query=workflow%3Abuild) [![Python Version](https://img.shields.io/pypi/pyversions/pymarkable.svg)](https://pypi.org/project/pymarkable/) [![Dependencies Status](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)](https://github.com/pymarkable/pymarkable/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aapp%2Fdependabot) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Security: bandit](https://img.shields.io/badge/security-bandit-green.svg)](https://github.com/PyCQA/bandit) [![Pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pymarkable/pymarkable/blob/master/.pre-commit-config.yaml) [![Semantic Versions](https://img.shields.io/badge/%F0%9F%9A%80-semantic%20versions-informational.svg)](https://github.com/pymarkable/pymarkable/releases) [![License](https://img.shields.io/github/license/pymarkable/pymarkable)](https://github.com/pymarkable/pymarkable/blob/master/LICENSE) Python project with scritps and utilities for use with remarkable readers

Very first steps

Initial

  1. Initialize git inside your repo:
git init
  1. If you don't have Poetry installed run:
make download-poetry
  1. Initialize poetry and install pre-commit hooks:
make install
  1. Upload initial code to GitHub (ensure you've run 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

Initial setting up

Poetry

All manipulations with dependencies are executed through Poetry. If you're new to it, look through the documentation.

Notes about Poetry

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 your package

Building a new version of the application contains steps:

What's next

Well, that's up to you. I can only recommend the packages and articles that helped me.

Packages:

Articles:

πŸš€ Features

For your development we've prepared:

For building and deployment:

For creating your open source community:

Installation

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 usage

Makefile contains many functions for fast assembling and convenient work.

1. Download Poetry

```bash make download-poetry ```

2. Install all dependencies and pre-commit hooks

```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 ```

3. Check the security of your code

```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`.

4. Check the codestyle

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`.

5. Run all the codestyle formaters

Codestyle uses `pre-commit` hooks, so ensure you've run `make install` before. ```bash make codestyle ```

6. Run tests

```bash make test ```

7. Run all the linters

```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`.

8. Build docker

```bash make docker ``` which is equivalent to: ```bash make docker VERSION=latest ``` More information [here](https://github.com/pymarkable/pymarkable/tree/master/docker).

9. Cleanup docker

```bash make clean_docker ``` or to remove all build ```bash make clean ``` More information [here](https://github.com/pymarkable/pymarkable/tree/master/docker).

πŸ“ˆ Releases

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.

πŸ›‘ License

License

This project is licensed under the terms of the MIT license. See LICENSE for more details.

πŸ“ƒ Citation

@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}}
}

Credits

This project was generated with python-package-template.