All Projects → joaomcteixeira → python-project-skeleton

joaomcteixeira / python-project-skeleton

Licence: MIT License
An up-to-date and explanatory Python project skeleton with contiuous integration services.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to python-project-skeleton

arduino-lint-action
GitHub Actions action to check Arduino projects for problems
Stars: ✭ 20 (-35.48%)
Mutual labels:  continuous-integration, ci
development-hub
A continuous integration solution for Power Apps.
Stars: ✭ 21 (-32.26%)
Mutual labels:  continuous-integration, ci
flagsmith-nodejs-client
Flagsmith Node JS Client. Flagsmith lets you manage features flags across web, mobile and server side applications. Get builds out faster. Control who has access to new features.
Stars: ✭ 13 (-58.06%)
Mutual labels:  continuous-integration, ci
drevops
💧 + 🐳 + ✓✓✓ + 🤖 + ❤️ Build, Test, Deploy scripts for Drupal using Docker and CI/CD
Stars: ✭ 55 (+77.42%)
Mutual labels:  continuous-integration, ci
project-template
Sample Go Project Template (based on the layout from the Standard Project Layout repo)
Stars: ✭ 81 (+161.29%)
Mutual labels:  project-skeleton, project-structure
rasa-train-test-gha
A GitHub action to run easily rasa train and rasa test in the CIs.
Stars: ✭ 26 (-16.13%)
Mutual labels:  continuous-integration, ci
rumi
trivago continuous integration executor
Stars: ✭ 21 (-32.26%)
Mutual labels:  continuous-integration, ci
npm-audit-ci
www.npmjs.com/package/npm-audit-ci
Stars: ✭ 18 (-41.94%)
Mutual labels:  continuous-integration, ci
Format.cmake
💅 Stylize your code! Automatic clang-format and cmake-format targets for CMake.
Stars: ✭ 94 (+203.23%)
Mutual labels:  continuous-integration, ci
qodana-action
⚙️ Scan your Java, Kotlin, PHP, Python, JavaScript, TypeScript projects at GitHub with Qodana
Stars: ✭ 112 (+261.29%)
Mutual labels:  continuous-integration, ci
Android-CICD
This repo demonstrates how to work on CI/CD for Mobile Apps 📱 using Github Actions 💊 + Firebase Distribution 🎉
Stars: ✭ 37 (+19.35%)
Mutual labels:  continuous-integration, ci
bx-docker
Tutorial on how to build Docker Images for the IAR Build Tools on Linux hosts. The IAR Build Tools on Linux are available for Arm, RISC-V and Renesas (RH850, RL78 and RX).
Stars: ✭ 28 (-9.68%)
Mutual labels:  continuous-integration, ci
arduino-lint
Tool to check for problems with Arduino projects
Stars: ✭ 63 (+103.23%)
Mutual labels:  continuous-integration, ci
setup-scheme
Github Actions CI / CD setup for Scheme
Stars: ✭ 13 (-58.06%)
Mutual labels:  continuous-integration, ci
swarmci
Swarm CI - Docker Swarm-based CI system or enhancement to existing systems.
Stars: ✭ 48 (+54.84%)
Mutual labels:  continuous-integration, ci
overview
Automate your workflows with GitHub actions for MATLAB.
Stars: ✭ 40 (+29.03%)
Mutual labels:  continuous-integration, ci
xray-action
... a GitHub action to import test results into "Xray" - A complete Test Management tool for Jira.
Stars: ✭ 16 (-48.39%)
Mutual labels:  continuous-integration, ci
github-create-release-action
Create a GitHub release from a Tag
Stars: ✭ 33 (+6.45%)
Mutual labels:  continuous-integration, ci
generate-changelog
generates changelog from git based on jira tickets
Stars: ✭ 18 (-41.94%)
Mutual labels:  continuous-integration, ci
github-act-runner
act as self-hosted runner
Stars: ✭ 68 (+119.35%)
Mutual labels:  continuous-integration, ci

Python Package Skeleton Template

Test Status Package Build Codecov Codacy Maintainability Code Climate technical debt Read the Docs

Summary

This repository is a skeleton template for a Python application/library compliant with the latest team-development and software deployment practices within a continuous integration (CI) framework. It can be used as a source of information/study to emulate or as a direct template for your repositories. Note I can't cover all strategies available in the wild. This repository reflects the setup I like the most and covers the CI needs of my Python projects, which includes:

  • A robust Python library/application file hierarchy with packages, modules, clients, and documentation:
    • detailed, yet simple, setup.py
    • retrievable README and CHANGELOG
    • documentation deployed in ReadTheDocs
    • the unusual adoption of the src directory layer (love it)
    • examples of packages and modules hierarchy
    • examples of Python command-line interfaces
  • A unique testing framework for developers with tox and pytest
    • guarantees tests are reproducible for all developers
    • ensures same lint rules are always applied (local and remotely)
    • ensures all desired Python versions are covered
    • adopts hypothesis
  • Fully automated continuous integration services with GitHub Actions
    • automatic testing on Linux, MacOS, and Windows
    • automatic testing simulated upon deployment with tox
    • test coverage report to Codecov
    • automated version bump with bump2version, git tagging, and Python packaging to PyPI on Pull Request merge

Motivation

To understand and implement the best practices for team-based development and automatic deployment of scientific software in Python. Also, I believe the strategy reviewed here can be applied to most general-purpose Python libraries.

This repository does not intend to be a cookiecutter-like repository. There are very well documented cookiecutters, even for scientific software, if you are looking for one of those.

When I started developing Python libraries, I decided that using a cookiecutter as a shortcut would lead me nowhere in the learning process of configuring CI services because I would miss the details of what was actually being implemented. Hence, assembling this template from scratch as a full working repository was the only best approach to achieve a minimum understanding of CI. Now, this repository serves as a reference guide for all my projects and hopefully will serve you too. I try to keep it up to date with my needs and the ever-evolving CI ecosystem.

Acknowledgments

I want to acknowledge ionel discussions about Packaging a python library. They are a pillar in my understanding and decisions on this matter, and I really recommend reading his blog post and references herein.

I configured the CI pipeline to my needs by taking bits and pieces from many places. Kudos to python-nameless and cookiecutter-pylibrary; two primary sources of information for the python-project-skeleton repository, especially in the first versions using Travis and Appveyor. When migrating to GitHub Actions, I fed on the workflows @JoaoRodrigues assembled for pdb-tools; on the tox-gh-actions package; and on structlog, which was also a repository I used as a reference to build test latest version here.

I refer to other important sources of information as comments in the specific files. Thanks, everyone, for keeping discussions out there open.

How to use this repository

The documentation pages explain how to use this template for your projects and the implementation details adopted here. Use the documentation as a reference to learn the rationale behind this repository and also as a demonstration of how to deploy documentation in ReadTheDocs.

Issues and Discussions

As usual in any GitHub based project, raise an issue if you find any bug or room for improvement (certainly there are many), or open a discussion (new feature!!) if you want to discuss or talk :-)

Version

v0.8.1

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].