👉 You can delete this file after reading and operating the instructions.
- Initialize
git
inside your repo:
cd reperio && git init
- If you don't have
Poetry
.
Conda environment is is recommended.
conda create -n reperio python==3.10
Please activate python of current project and install run:
conda activate reperio
pip install poetry
- Initialize poetry and
pre-commit
hooks:
make install
If you obtain a timeout error when installing, you can try to append an image source config in poetry.toml
. The following example is tsinghua image source.
[[tool.poetry.source]]
name = "tsinghua"
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
priority = "default"
- Run the codestyle to polish your code:
make polish-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/lewismc/reperio.git
git push -u origin main
When you create this repository, you have already set up the following bots, so that you can use it in relevant GitHub repository.
- Dependabot: will create a pull request to update the dependencies. You can also enable it to automatically merge the pull request after the CI/CD passes. You can configure it in
.github/dependabot.yml
. - Stale bot: Automatically closes abandoned issues after a period of inactivity. You can configure it in
.github/.stale.yml
. - first-interaction: will comment on the first issue or pull request from a new contributor. You can configure it in
.github/workflows/greetings.yml
.
❗ first-interaction requires
pull_requests:write
, but by defaultGITHUB_TOKEN
has this value set to read-only. You need to do the following to enable it:
This project use Poetry to manage dependencies. Poetry is a tool for dependency management and packaging in Python. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.
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
add a new dependency.poetry run pytest
run tests.poetry publish --build
publish your package.
etc
You can build and release your package to PyPI. 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
.- Faster formatter tool, automatic codestyle with
ruff
to replaceblack
,isort
andpyupgrade
. - Ready-to-use
pre-commit
hooks with code-formatting. - Type checks with
ruff
; 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
.
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.
👉 Remember delete this file after reading and operating the instructions.