Skip to content

A tool for creating skeleton python project, built with popular develop tools and conform to best practice.

License

Notifications You must be signed in to change notification settings

zillionare/python-project-wizard

Repository files navigation

Python Project Wizard

A tool for creating skeleton python project, built with popular develop tools and conform to the best practice.

Version CI Status Dowloads License Python Versions Style

Features

This tool will create Python project with the following features:

  • Poetry: Manage version, dependancy, build and release
  • Mkdocs: Writting your docs in markdown style
  • Testing with Pytest (unittest is still supported out of the box)
  • Code coverage report and endorsed by Codecov
  • Tox: Test your code against environment matrix, lint and artifact check.
  • Format with Black and Isort
  • Lint code with Flake8 and Flake8-docstrings
  • Pre-commit hooks: Formatting/linting anytime when commit/run local tox/CI
  • Mkdocstrings: Auto API doc generation and docstring template (vscode and its extension autodocStrings is required)
  • Command line interface using Python Fire (optional)
  • Continuouse Integration/Deployment by github actions, includes:
    • publish dev build/official release to TestPyPI/PyPI automatically when CI success
    • publish documents automatically when CI success
    • extract change log from github and integrate with release notes automatically
  • Host your documentation from Git Pages with zero-config
  • Support multiple versions of documentations (by mike)
  • Create repo and push initial commits by repo.sh script

Quickstart

Install ppw if you haven't install it yet:

  pip install -U ppw

Generate a Python package project by simple run:

  ppw

Then follow the Tutorial to finish configurations.

Credits

This repo is forked from audreyr/cookiecutter-pypackage, and borrowed some ideas from briggySmalls

Links

cfg4py

cfg4py is a great tool for managing configuration files, supporting configuration for different environments (dev, prodction and test), automatically converting yaml-based configuration to python class, so, you can access configuration items by attribute, thus, enable auto-completion (by IDE). It also supports live-reload, remoting central configuration, config template and more.