A project template to use for new Python Github repositories with best practices.
Project description
A project template for Python
Introduction: This repository provides a comprehensive project template for GitHub repositories. It's designed to streamline the setup process, ensuring best practices and essential components are included. By using this template, you can ensure a consistent and professional structure for your projects, making them more accessible and maintainable.
Usage
Create a new repository from this template
- Click here to create a new repository with this template.
- Select and Add a license.
Initialize and install pre-commit hooks
- Install pre-commit. (skip this step if you already have pre-commit installed)
- Run
pre-commit installto install the pre-commit hooks. - Run
make pre-committo run the pre-commit hooks on all files.
Setup GitHub Branch Protection
- Go to
Settings>Branches>Branch protection rules>Add rule - Add the following rules:
main- Require a pull request before merging
- Require status checks to pass before merging
- Require branches to be up-to-date before merging
- Add
lintingstatus checks ( and others if you created them ) - Do not allow bypassing the above settings
dev- Require a pull request before merging
- Require status checks to pass before merging
- Add
lintingstatus checks ( and others if you created them )
Why Branch Protection?: Branch protection ensures that changes to important branches undergo a review process. This maintains code quality and prevents potential issues from being merged.
Branching Strategy
main: The main branch. This branch is protected and cannot be pushed directly. (PRs must be made todevinstead ofmain)dev: The development branch. This branch is protected and cannot be pushed directly. (PRs must be made to this branch)feature/*: The 'feature/*' branches are used to develop new features for the upcoming or a distant future release. These branches are branched off from 'dev' and must merge back intodev.release/*: The 'release/*' branches are used to prepare the next release. They allow for last-minute changes and minor bug fixes. These branches are branched off from 'dev' and must merge back intomainanddev.hotfix/*: The 'hotfix/*' branches are used to develop fixes for the current release. These branches are branched off frommainand must merge back intomain.
How to create a python package with this template? (WIP)
- Create a new repository from this template. ( see Create a new repository from this template)
- Place your package code in the
srcdirectory. - Update the
pyproject.tomlfile with your package details. - Set up your PyPI account and create a new API token. (see PyPI Help #api-token)
- Go to PyPI and create an account, if you don't have one already.
- Generate a PyPI API token. (see PyPI Help #api-token), this gives you something similar to this:
- run
poetry config pypi-token.pypi <your-api-token>to set the API token.
- run
poetry buildto build the package. - run
poetry publishto publish the package to PyPI.
Contributing
Contributions are always welcome! Whether it's bug reports, feature requests, or pull requests, all contributions are appreciated. For more details, see CONTRIBUTING.md.
License
This project is licensed under some License. For more details, see LICENSE.
Code of Conduct
We believe in fostering an inclusive and respectful community. For guidelines and reporting information, see CODE_OF_CONDUCT.md.
Security
Your security is paramount. If you discover any security-related issues, please follow the guidelines in SECURITY.md.
Founding
For information about the project's founding and backers, see FOUNDING.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file python_project_template_poetry-0.1.0.dev8.tar.gz.
File metadata
- Download URL: python_project_template_poetry-0.1.0.dev8.tar.gz
- Upload date:
- Size: 3.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.11.5 Linux/5.15.0-1041-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4119911dd55b3490e88953806f578abbcc51edfa368fcc21bf1aab385a0125c8
|
|
| MD5 |
f4864c8ac0aa49cc0485b13e10fe1c81
|
|
| BLAKE2b-256 |
db622f946fae66261e42a44f62e0df33e95769830602e3b5adba6cd4ac568a6e
|
File details
Details for the file python_project_template_poetry-0.1.0.dev8-py3-none-any.whl.
File metadata
- Download URL: python_project_template_poetry-0.1.0.dev8-py3-none-any.whl
- Upload date:
- Size: 3.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.11.5 Linux/5.15.0-1041-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96d0bcba8f8a90b0e77a6b31fbd8e4e736083560cc4ded10c6b972a906109509
|
|
| MD5 |
8b52df27d0bb7efba92bf97d07d9fbb9
|
|
| BLAKE2b-256 |
e45bb4f23a00f455a9d6600047739d2b8e6777374c5b86da541c6a3be3b171eb
|