cookiecutter-python-package

Scaffold modern Python Package Project, from a configurable Template, delivering public releases to PyPI and Dockerhub and having a CI/CD Pipeline, which supports DevOps processes with best practices.

AGPL-3.0 License

Downloads
3.4K
Stars
9

Bot releases are hidden (Show)

cookiecutter-python-package - v1.7.5

Published by boromir674 over 1 year ago

cookiecutter-python-package - v1.7.4

Published by boromir674 almost 2 years ago

cookiecutter-python-package - Python Package Generator v1.7.3

Published by boromir674 almost 2 years ago

What's Changed

Full Changelog: https://github.com/boromir674/cookiecutter-python-package/compare/v1.7.2...v1.7.3

Code Changes

fix

  • raise a proper subclass of python built-in Exception

documentation

  • improve documentation

style

  • apply isort in codebase

refactor

  • satisfy pylint a bit more

build

  • add pinned/locked dependencies defined in poetry.lock
  • replace PyInquirer with Questionary package

ci

  • install dependencies for pydeps Job
  • use pydeps == 1.11.0 which supports python3.10 & remove autoprovisioning of tox
  • draw dependency graphs in new Job after tests and upload artifacts
  • add 'pytest' as a known word to pass spell checking
  • remove badges from bettercodehub since the service has shut down
  • pin tox to 3.28 in generate workflow
  • run pylint in ci and fail job if score is below threshold
  • fail pylint step if score is below PYLINT_THRESHOLD variable
  • run only unit-tests in ci workflow
  • fix ci
  • install pinned to 3.28 in ci runner
  • debug type checking on windows tox
  • skip tox -e lint on windows machine
  • remove py36 from ci matrix generation
  • fix prospector environment's commands
  • tox -e pydeps: allow configuration of target dir & allow invoking from outside root dir
cookiecutter-python-package - v1.7.2

Published by boromir674 almost 2 years ago

cookiecutter-python-package - v1.7.1

Published by boromir674 about 2 years ago

Changes
^^^^^^^

refactor
""""""""

  • reduce duplicate code & clean code
cookiecutter-python-package - v1.7.0

Published by boromir674 over 2 years ago

Introducing a pre-emptive check of whether a Project registered under the same
name as the one given to the generator, exists on
the readthedocs.org server already.

Changes
^^^^^^^

feature
"""""""

  • check if a project with the same slug name, is already registered on the readthedocs server

test
""""

  • improve flexibility of testing code

refactor
""""""""

  • modularize code and improve dryness of code as well
cookiecutter-python-package - v1.6.1

Published by boromir674 over 2 years ago

This is the first Cross-Platform release of the Python Generator.
That means, now, we officially support installing and running the
Python Generator, apart from Linux and Macos, on Windows machines as well.

Changes
^^^^^^^

test
""""

  • manually covert gitpython outputted string paths into Path instances
  • use Path from pathlib instead of the os.path module

refactor
""""""""

  • remove the 'path_builder' fixture, to reduce test code
  • remove depcrecation warning fired by Jinja2 when rendering the *.rst template files
  • use the 'run_subprocess' fixture to reduce test boilerplate code

ci
""

  • excplicitly use bash as the shell for some job steps
cookiecutter-python-package - v1.6.0

Published by boromir674 over 2 years ago

Introducing the Project Type Generate Variable. Now you can select what
type of Python Package you intend to develop and the Generation process
shall adjust to produce the desired skeleton and infrastructure accordingly!

Packaged the existing functionality into the Module and Module + CLI
Project Types.
Added the new Pytest Plugin Project Type, designed for developing Pytest
Plugins and Fixtures (see below).

Project Types currently supported:

  • Module: a Python Package intended to serve exclusively as a Software Library
  • Module + CLI: a Python Package proving a Software Library and an
    "installable" (executable) Command Line Program/Interface (CLI)
  • Pytest Plugin: a Python Package intended to providing a Pyetst Plugin (ie with
    a Test Fixture)

Changes
^^^^^^^

feature
"""""""

  • add 'project_type' Variable allowing for 'module', 'module+cli' or 'pytest-plugin' Projects
  • conditionaly populate 'test' dependencies, ie based on whether there is a cli entrypoint
cookiecutter-python-package - v1.5.2

Published by boromir674 over 2 years ago

Development Update fixing the communication between the CI server and the Test
Coverage Hosting Service. It also enable CI tests for the Documentation
side of the project.

Changes
^^^^^^^

ci
""

  • install pyenchant on macos using homebrew
  • test documentation tests and building command
  • upload code coverage data to codecov.io from within the 'test_suite' job
cookiecutter-python-package - v1.5.1

Published by boromir674 over 2 years ago

The Update includes improved code Architecture and better Test code Coverage!
Features shorter Unites of Code, more DRY and more Tests.

Changes
^^^^^^^

test
""""

  • add bandit tox env for discovering common security issues
  • verify commit message, author and email are the expected ones
  • git init, increase test code coverage

refactor
""""""""

  • reduce code
  • centralize subprocess run invocations

ci
""

  • enable network-bound tests to trigger integration testing of the check_pypi feature
cookiecutter-python-package - v1.5.0

Published by boromir674 over 2 years ago

This release focused on improving the code architecture, reducing technical
debt, decoupling components, cleaning code, fixing styling issues.

It also features some updates in the Generated Project, with improved tox envs,
cleaner python scripts and cleaner development tools' configuration files
(such as .pylintrc, pyproject.toml, tox.ini).

Changes
^^^^^^^

feature
"""""""

  • document config settings, improve tox envs & scripts

test
""""

  • verify Generator can be invoked as python module: python -m cookiecutter_python

refactor
""""""""

  • dry code per string_sanitizer implementation
  • reduce code in cli.py by delegating error handling to the new cli_handlers.py module
  • reduce code of parse_version.py script
  • abstract input sanitization
  • reduce main code
  • decouple components
  • clean code, satisfy some todos, dry code

ci
""

  • use the template's parse_version script to reduce duplicate code
cookiecutter-python-package - v1.4.1

Published by boromir674 over 2 years ago

cookiecutter-python-package - v1.4.0

Published by boromir674 over 2 years ago

Add a CLI as an entrypoint to your Python Package

This release enables the user to optionally provide their Python Package with
a Command Line Interface (CLI) as an entrypoint.
The add_cli Generator Variable has been added to behave as an enable/disable
'switch'.

cookiecutter-python-package - v1.3.0

Published by boromir674 over 2 years ago

Python Interpreters Support and Test

This release allows the user to select the Python Interpreters they wish their Project
to support and be tested on.
The generator then creates the Test Matrix in the CI config file, which factors in the
Python Interpreter versions supplied by the user.

Consistent with the currect behaviour of the cli, passing the '--no-input' flag,
instructs the Generator to try find the selected interpreters in a config yaml file,
if given, or else to use the information in the cookiecutter.json.

If the '--no-input' flag is missing, then the user is asked for input, through
their console.
The input is read by supplying an interactive console dialog, which allows the user to
easily select the interpreters they wish to support, by enabling or disabling
'check boxes' through their console.

Development

All tox environments related to 'Linting' now all do by default a 'check'.
Doing a 'check' means returning a 0 as exit code in case the check is successfull
and it is suitable for local and remote running on a CI server.

The aforementioned environments are 'lint', 'black', 'isort':

  • tox -e lint
  • tox -e black
  • tox -e isort

Optionally, running as below will modify the source code to comply with
each respective 'lint check'.

Running environment 'lint', 'black', 'isort' with 'lint apply' enabled:

  • APPLY_LINT= tox -e lint
  • APPLY_BLACK= tox -e black
  • APPLY_ISORT= tox -e isort
cookiecutter-python-package - v1.2.1

Published by boromir674 over 2 years ago

cookiecutter-python-package - v1.2.0

Published by boromir674 over 2 years ago

Changes
^^^^^^^

feature
"""""""

  • migrate to poetry from setuptools as 'build-backend'

fix
"""

  • add rule in MANIFEST to match tox.ini similar to *.md, etc non-python files
  • replace hardcoded values with templated variables

test
""""

  • sanity check to double check that 'tox.ini' gets put in generated dir

documentation
"""""""""""""

  • rewrite module docstring

ci
""

  • use checkout@v3 instead of @v1
  • upload sdist & wheel as artefacts
  • separate codecov data exchange into dedicated job
cookiecutter-python-package - Cookiecutter Python Package v1.1.1

Published by boromir674 over 2 years ago

Installation Guide & CLI Usage

Changes

documentation

  • document installation and cli usage
cookiecutter-python-package - Cookiecutter Python Package v1.0.0

Published by boromir674 over 2 years ago

Python Generator CLI & Async

Wrapping everything in a command line interface (cli).
Speed up performance by using futures for http requests.

cookiecutter-python-package - Cookiecutter Python Package v1.0.0

Published by boromir674 over 2 years ago

Cookiecutter Python Package v1.0

First v1.* Release

Releasing v1.0.0, the first ever v1.* version!
We are confident that the user-facing "interface" of this package is stable
and commit to (continue to) follow Semantic Versioning.

As far as changes are concerned, invoking the project generator
now adds several new status badges in your README, which automatically update based on
their corresponding CI services!

cookiecutter-python-package - Cookiecutter Python Package v0.11.0

Published by boromir674 over 2 years ago

Documentation Website Generation

Project Generation now includes build a completely functional website that initially hosts some minimum content.

The website can be publicly hosted, if you create a free account on readthedocs.org and make a few simple configurations
through the web ui.