Skip to main content

Python project structure foundation or template

Project description

https://github.com/rpatterson/python-project-structure/workflows/Run%20linter,%20tests%20and,%20and%20release/badge.svg

This repository is meant to be used as a minimal, yet opinionated baseline for Python software projects. It includes:

The intended use is to add this repository as a VCS remote for your project. Thus developers can merge changes from this repository as we make changes related to Python project structure and tooling. As we add structure specific to certain types of projects (e.g. CLI scripts, web development, etc.), frameworks (e.g. Flask, Pyramid, Django, etc.), libraries and such, branches will be used for each such variation such that structure common to different variations can be merged back into the branches for those specific variations.

Installation

Install using any tool for installing standard Python 3 distributions such as pip:

$ sudo pip3 install python-project-structure

Usage

See the command-line help for details on options and arguments:

$ usage: python-project-structure [-h]

Python project structure foundation or template, top-level package.

optional arguments:
  -h, --help  show this help message and exit

Motivation

There are many other Python project templates so why make another? I’ve been doing Python development since 1998, so I’ve had plenty of time to develop plenty of opinions of my own.

What I want in a template is complete tooling (e.g. test coverage, linting, formatting, CI/CD, etc.) but minimal dependencies, structure, and opinion beyond complete tooling (e.g. some non-Python build/task system, structure for frameworks/libraries not necessarily being used, etc.). I couldn’t find a template that manages that balance so here we are.

I also find it hard to discern from other templates why they made what choices the did. As such, I also use this template as a way to try out various different options in the Python development world and evaluate them for myself. You can learn about my findings and the reasons the choices I’ve made in the commit history.

Most importantly, however, I’ve never found a satisfactory approach to keeping project structure up to date over time. So the primary motivation is to use this repository as a remote from which we can merge structure updates over the life of projects using the template.

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

python-project-structure-0.0.5.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_project_structure-0.0.5-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file python-project-structure-0.0.5.tar.gz.

File metadata

  • Download URL: python-project-structure-0.0.5.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7

File hashes

Hashes for python-project-structure-0.0.5.tar.gz
Algorithm Hash digest
SHA256 08ccc84323d18ec3d0eac6d3405096a66c454630a4b0f3757694b7333eb2b602
MD5 b82f5575454dbdf14a1781b6234b0631
BLAKE2b-256 b2eef7c038e7a80fd4d5609833c0c88adfce6176bb11c808666002bc657eef60

See more details on using hashes here.

File details

Details for the file python_project_structure-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: python_project_structure-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7

File hashes

Hashes for python_project_structure-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 7d68dc59a55f7472673b5cd1b0c8f4a168af5ac4130ee3132dc8786f85bc81b1
MD5 2710ace61ff299ad7a94c11d59229efd
BLAKE2b-256 3ecac18d2437f9b8abbf50020e449d40153c27ce97074ac186fc54e1dcd0a5a9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page