All notable changes to this project will be documented in this file.
This project adheres to Semantic Versioning.
Only Major releases (bumps) contain breaking changes.
Apply Lint suggestions for Dockerfile and Github Actions Workflows.
The release introduces a complete observability stack with Grafana + Loki + Promtail integration, delivers critical bug fixes for interactive configuration, and makes automated tests more robust.
- add complete observability stack integration via
include_observabilityparameter - generate Grafana + Loki + Promtail Docker Compose orchestration for production monitoring
- preserve user config values for derived fields in interactive mode
- use template variables to replace hard-coded relics in generated projects
- enhance PR validation pipeline with isolated test execution and race condition prevention
- isolate build backend tests for debugging complex build issues
- add cross-worker conflict prevention in pytest-xdist
- verify more cookiecutter behaviors and sanity checks
- reorganize tests with context-specific modules for better maintainability
- add comprehensive observability stack documentation with setup guides
- improve template consistency across generated projects
- clean test-job.yml Job of CI/CD Pipeline
- migrate CHANGELOG.rst to CHANGELOG.md
- bump version to 2.6.3
- update 'Terminal-Based Release Process' script
- sem ver bump to 2.6.2
- add try/catch with 3 retries for 'auto merge'
- improve terminal based release script
- --version CLI flag
- fix integration tests
- update 'Topic to Integration' Dev Process Guide
- sem ver bump to 2.6.1
- update terminal based release script
- generate better Mkdocs documentation
- fix tests
- fix integration tests
- simplify code
- retire section-index plugin in favor of material built-in !
- do rebase on Integration Branch to pass GH Rule for Update branch before merge
- add the 'Topic Branch PR to Dev' Process Guide
- apply black
- pass mypy checks
- apply ruff
- apply black
- apply isort
- simplify extra_context passing into cookiecutter
- sem ver bump to 2.6.0
- remove comment from gen_api script
- add badges in Docs Site Landing Page
- fix link
- sem ver bump to 2.5.10
Migration of Documentation Site from sphinx to mkdocs and mkdocs-material theme!
Also add Documentation Content for How-to Guides and Developer's Guides.
- adjust tests
- migrate readthedocs CI to mkdocs
- migrate to mkdocs, add content and improve UX/UI
- replace README.rst with README.md
- remove extra_context kwarg from our 'generate' function
- reduce complexity and reduce code
- solve mkdocs --optional docs
- migrate Docs Job to mkdocs
- sem ver bump to 2.5.9
- reduce Cyclomatic Complexity of get_expected_generated_files to 8 (prev 9)
Changes only affect the PR Labeler Workflow, running on CI
- build: update
attrsdependency to>=23.0.0, <24.0.0range
Main goal was to reduce the Cyclomatic Complexity (McCabe) in the source code.
Refactored code in tests to reduce Cyclomatic Complexity (McCabe) below 5
- Currently, only 9 test functions exceed Cyclomatiic Complexity of 5.
- Also, update Acceptance Criteria to max value 9 (previous 11) for Cyclomatic Complexity (McCabe) in CI
Main goal was to reduce the Cyclomatic Complexity (McCabe) in the source code.
- All python function code in
src, have a maximum of 5 McCabe Cyclomatic Complexity!
Also redesigned the way we generated alternative docs sites (ie mkdocs, pshinx) by using "if" noditional jinja expressions as fodler names.
- This allowed to retire some production and some test code!
- add new CI acceptance criteria to reject code with Cyclomatic Complexity (McCabe) above 5
- deactivate windows CI
- refactor code to reduce Cyclomatic Complexity (McCabe) below 5
Initial goal was to simplify the tests.
In the process:
- we did that
- increased code coverage
- fixed a bug with the -f flag when used with the same gen params and on the same output location folder
- improved user experience on the cli.terminal with better messages
Mutants elimination and CWEs mitigation
Internal CI/CD Pipeline minor fix.
| Migrating to uv !
| New PR Validation dedicated CI Workflows
- improve placeholder text for CLI
--helpresponse
- migrate Dockerfile
prodandtest_wheelsstages touv(from pip) - add docs, type, and pydeps Jobs in PR validation workflows, callable from 3 reusable workflows
- hard-enable the Static Code Analysis (SCA) Job in
ci.yml - enable integration tests in
ci.yml - fix ruff quirks in CI pipeline
- pin black in
sca-job.ymland apply linters to all codebase with properly excluded files - document job triggers in
ci.ymlfor better clarity - exclude the
ci-redesignbranch fromtest.yamltriggers
- apply
blackformatting across the codebase - apply
rufflinting fixes across the codebase - apply
isortwith the new policy of 2 lines after the last import statement - generate
lines_after_imports = 2inisortconfiguration insidepyproject.toml
- update snapshots to reflect the latest changes
- fix and update tests to account for Windows-specific quirks
- enable integration tests in CI pipeline
- migrate Dockerfile to
uv(from pip) for better dependency management
| This release introduces the option for generating a newly designed cleaner CI/CD Pipeline,
| via cicd CLI flag option, and by passing the experimental value
| It also includes fixes, refactoring, and updates to testing snapshots for better reliability.
- update prod cookiecutter template
- update pyproject template with mkdocs extras
- pin griffe package for mkdocs-based Generated Projects
- implement the 'cicd' option in Gen Config
- allow Generator to accept python 3.12, 3.13, and 3.14 in supported-interpreters context variable
- fix type checking by installing missing package
- run the docs build process for biskotaki gold, without pinned dependencies
- fix CI Pipeline by using Automated Workflows v1.14.0
- bump ga-workflows to v1.13.1
- use 'actions/download-artifact@v4' where necessary
- improve messaging to console
- run pip install without requiring hashes, since it fails on CI
- run CI on every branch push
- improve Job Template name
- add 'experimental' CI pipeline to
CI Biskotaki
- update biskotaki CI no-input/interactive Snapshots
- update no-input and interactive Snapshots generated from .github/biskotaki.yaml
- update Gold-Standard Biskotaki to CI Matrix [3.10, 3.11, 3.12] and RTD Python 3.11
- add 2 Test cases verifying post hook behavior at unit-level for different cicd options
- document the 'Jinja Context generation' Automated Test code
- exclude tests marked with 'slow' from collection, unless --run-slow flag
- mark with 'slow' tests that run tox lint and ruff cmds on Snapshot Projects
- reduce complexity of too complex pytest fixture
- apply ruff in code
- pass mypy checks
- generate with python 3.10 <= x <= 3.13 for Gold Standard
- context render used in interactive mode
- hide warnings about interpreter mismatch to help local development console declutter
- Gold Standard CI Visualization script
- Gold Standard dependency updates
- ci pipeline generated as in Gold Standard biskotaki
- fix docker image that needed maintenance
- make Gold Standard Python Project pass Pylint Job on CI
- comment out the 'verbose' cli flag to make pylint score over 8.2 on fresh project
- prevent Mkdocs 'site' folder from being pushed to Biskotaki repo, after 'tox -e docs'
- install 'generate-python' CLI in dedicated step
- install pipx and poetry (using pipx)
- run poetry lock and add poetry.lock file in py-gold branch of biskotaki repo
- bump version to 2.4.0
- handle case where the origin/release branch is not found
- cover most source code areas, when PR labeling: src, tests, ci, data, config
- add Job that makes a Github Release on v* tags on Main Branch
- expect interpreters to be loaded as dict by cookiecutter in intereactive mode
- update Gold Standard Snapshot
- update biskotaki-interactive Snapshot, used in Regression Testing
- update biskotaki-no-input Snapshot, used in Regression Testing
- clean code
- pass git tag to Workflow for PR in to a boarding branch
- update README to emphasize that our CI frontend is based on tox 3.x
- fix example User Config YAML, in README quickstart section
- allow on-demand merging of RT into Release
- add GitOps Process supporting boarding multiple Topic Branches in RT, before Releasing
- do poetry update
- adjust mkdocs configured template to follow the Gold Standard Snaphost
- fix building wheel and sdist from gen proj
- pass PAT 'GH_TOKEN' in GH Release Workflow
- pass git tag name, ie v2.2.1-rc in GH Release Workflow
- allow checking for -rc tag regardless of top-level PYPI overide switch
- add GH Release Job in 'CI/CD Pipeline' Workflow
- allow a couple of more subprocess low severity cwe reported by bandit
- generate and push Python Gold Standard to py-gold branch of biskotaki repo
- enable Python 3.12 CI Builds
| This Release bumps the internal Cookiecutter version from '1.7.x' to '2.x'.
| We become up-to-date with latest cookiecutter version, from pypi and avoids vendor lock-in.
- add stubs for cookiecutter.generate and remove poyo stubs
- add test data for verifying internal Context Cokiecutter builds and passes to Jinja
- require quoted 'yes' / 'no' in User YAML
- sanity check calling cookiecutter on prod Template with pytest-fixture user yaml
- verify cookiecutter sets context with overriden Choice Variables from User Config
- use quotes for specifying pip version ranges in RTD
- install couple of Docs dependencies with pip, during RTD Docs Build
- type check according to mypy errors
- eliminate all warning during Tests, by quoting 'yes'/'no' in User Config YAML
- use pyyaml instead of poyo for reading User YAML
- bump Cokiecutter from 1.7 to 2.x
- do Wheel Tests, by passing PY_WHEEL env var in Test Suite
- dedicate tox env to send signal in Test Suite for special Sdist handling on Windows
- handle error on Sdist Tests
- run 1st round of Tests with shell: bash
- do 'accidental Logs - Deletion' as part of main and not of post_file_removal, in post hook
- improve clean-up instructions in Git Ops Cheatsheet Page
- add glob patterns to exclude Template Project contents from CodeQL
- bump version to 2.0.2-dev
- support automatic Source Sem Ver update for '-rc' and '-dev' sem ver metadata
- allow workflows to trigger on event 'merge to Release'
- add user name and email before tagging prod tag on Main/Master
- ensure release branch is on master, in 'RT in Release' Workflow
Fix CWE https://github.com/boromir674/cookiecutter-python-package/security/dependabot/7
- update git ops cheat sheet
- required tornado >=6.3.3 to patch CWE, for docslive Extras
- fix logic in determining Distro or Docs changes
- bump version to 2.0.1
Backwords Compatible Major Release, unless you are still using legacy Python 3.6!
No Breaking changes, in CLI or Python API in this release.
| This Major Release simply drops support for legacy Python 3.6. | We kept supporting of it for too long anyways, compared to its lifespan.
We update our Pytest test dependency constraint to ^7.2.0, which caused
poetry export to break, even though poetry lock worked.
Thus, we resorted in updating the python constraint to >=3.7
- drop support for Python 3.6
- update pytest constraint to ^7.2.0
- bump version to 2.0.0
- add missing workflow for PR to master
- fix listener of 'Merge RT in Release' Workflow
- require gitpython >= 3.1.30 due to CVE reported by Dependabot
- configure codeql to ignore template cookiecutter dir
- design automated acceptance check
- prevent tox from failing when running Bandit
- add Job for Bandit Scan and Continuous Security Reporting
- setup Continuous Bandit Scanning and Reporting
- enable Dependabot Version Updates, on a daily basis scan
- fix instructions
- fix PR Labeling Rules to distinguish Test Data from Test Code
- fix triggering of merge to Master Workflow, with pat
- add 'Publish My Branch' Git Ops Guide
- build docs with Sphinx 6.2 (from 4.x), to render Markdown, with extension 'myst-parser'
- fix both CI and RTD Docs Builds
- fix logic when deriving Protected Branch name
- pip install -e .[docslive], instead of poetry export first
- do minor tweaks in the style of README
- do RC Release via CI/CD, without commiting Source Sem Ver
- make sure generated code passes Linters and Formatters
- skip Build n Test, on pushes to 'release' branch
- include scripts dir in Lint checking
- update biskotaki-interactive Snapshot, used in Regression Testing
- when neither Distro nor Docs changed then reduce Checks before Train
- add more mutually exclusive PR Labeling Rules
- provide script to generate RST mermaid from Dockerfile and GA Workflow
- generate and embed Pydeps SVG Graphs, into RST, at RTD Build time
- update Python from 3.9 to 3.10 in Cross-Platofrom Job Matrix
- bump version to 1.15.0
- do maximal set of checks before RT, as fallback, when dynamic minimum set derivation fails
- use proper python reference in Code Visualize CI Job
- remove relic Docs Reusable Workflow, since we "import" a remote one
- pass regex without double-quotes, to bash =~ operator
- use Reusable Workflow, with ability to override Inputs from Github Vars
- use custom commit before opening PR to Protected Branch
- do gh merge, sintead of git merge
- allow ash to deal with gh and jq for label fetching
- provide PR ID for Label Fetching and fix wrong git ref name
- add console log info to help debug
- merge into Boarding with commit msg, for dynamic config of CI/CD
- properly track/checkout the selected Protected Branch
- use same Theme in Local and RTD Build
- listen to merges from Protected to RT
- do not listen to merges to boarding
- derive name of Protected Branch from Labels
- allow discovering Protected Branch on remote
- select Required Checks at Runtime/Dynamically, by examining changes'
- rename Docs Page 'Usage' Section to shorter name
- improve tox envs
- fix build command we pass to Called Docs Workflow
- bump version to 1.14.1-dev
- derive merge commit message from PR Labels
- if release-train exists, then track Upstream, else automatically create on top of master
- replace PR to train and release, squash with merge 'method'
- use --merge method for 'Auto Merge'
- enable Auto Merge on PRs targeting 'boarding-auto'
- allow 'customly' prepared 'boarding' Branch
- revamp Mkdocs build Process, and enhance Template Content of Docs Pages
- provide correct env name for Code Visualization CI Job to reference
- fix biskotaki generation with sphinx docs
- update tests to match new expectations, given biskotaki.yml updates
- update Gold Standard Biskotatki Snapshot
- update Generate Workflow, according to changed tox
- remove python 3.6 and add python 3.11 from Biskotaki Ref Project
| Focused on revamping the Docker Image built with the generate-python CLI.
| And documenting in the Documentation Site, how to install via pipx, docker, or pip.
- avoid hard-fail when git binary is not installed, which causes gitpython ImportError
- revamp Dockerfile, and reduce image size from 770MB to 229MB, with multi-stage build
- include a Mermaid Graph with a DAG of the Docker Multi-Stage Build Process
- fix API docs and revamp Developer's Corner Page
- update screenshot with latest CI/CD Template Design
- add words in white list of Spelling Docs Tests
- fix sphinx warning
- document installation via pipx, pip, and docker & and running via CLI or Container
- track .dockerignore!
- add 'sphinx-inline-tabs' ^2023.4.21, for python >=3.8,<3.13 in docs and docslive Extras
- make poetry export more future proof, by installing export plugin manually
- fix pr-to-boarding Workflow
We add --offline as optional CLI flag to the generate-python CLI.
We keep the default behaviour of the CLI to be online, ie to make Async Http requests.
- add CLI option to deactivate Async Http requests for PyPI and RTD web servers
- run with --offline flag the Snapshot Update Scripts
- bump version to 1.12.5
Release with CI changes to support Git Ops.
Plus, new Docs Task as CI/CD Job.
- automatically run Cross-Platform or Doc Tests based on file changes
- call Reusable Workflow, for Docs Build, and wire up Git Ops, to Policy system
- use PEP_VERSION env var to store the version section from the wheel file name
- bump all 'setup-python' action to v5, from v4
- parse distro name and pep version from 'pip wheel' cmd console output
- bump version to 1.12.5-dev1
- migrate from action v4 to v5
- improve build env description
- bump version to 1.12.5-dev
Improved Code Coverage.
- dynamic runtime loading of all CookiecutterException subclasses from cookiecutter
- unit-test Exception Classifier and cover all possible returned values
- add docstrings
- use pat with Commit, PR, Workflow Trigger in merge-to-rt Workflow
- Exception Classifier more readable code and comment on critical / not-critical classification decisions
- bump version to 1.12.4
Improved Code Coverage.
- verify expected exceptions are thrown, in cases of errors, and add new sanitization test cases
- chore(gitignore): update .gitignore
- trigger Job of merge-rt-in-release only if github.event_name == 'pull_request' && github.event.pull_request.merged == true
- bump version to 1.12.3
Regression and Backwards Compatibility - Tests
This Release features the addition of Automated Regression Test for 'Generator Docs Default Settings'.
By Default Generator v2.x promises that upon invocation, the generated Project with be configured for
| Doc Builds with Sphinx and RTD Python3.8.
The Test will fail if Defaults change.
If Test is fixed, by updating assertion in Test Code, then then this is evidence that if we release these future changes,
they possibly introduce "breaking changes".
Also, we add a new Test on the Dialog Prompts to verify that they prompt the User for each and every one of the Cookiecutter Tempalte Variables.
If this test fails, then the Dialog System and the Cookiecutter Tempalte Vars are out of Sync, which should be addressed, preventing a Bug from shipping Code with the 2 components being NOT synced.
From this Relase onward, we also start measuring Code Coverage only on Production Code.
We only measure the 'src' dir, and stop measuring Test Code, in 'tests' dir.
- verify Gen Project configured with Sphinx and RTD Py3.8, as advertised Defaults
- verify prompts user for each and everyone of Cookiecutter Template Variables
- bump version to 1.12.2
Adding Continous Deployment for Github Release, with a dedicated CI Job.
This Release prepares for new GitOps-based Release Process.
It adopts the concept of Release Train, which is represented by a
dedicated git branch.
The process is designed to be semi-automatic, since a developer is expected to:
- input a
Semantic Version, for bumping the previous Release Version - add a Changelog entry, corresponding to the new Release
The process involves gitops operations, simple shell scripts,
and github workflows.
- add Badge to count monthly pypi downloads (#116)
- add Job for
gh release create, and trigger load-to-rt on 'auto-release' tag - gitops "boarding" on
Release Train - gitops "release" User's Branch
- improve messages rendered on github actions web ui
- expect either empty log file in PWD, after generator run, or no file at all
- apply new black version 24.1, with the 2024 style
- clean code, by removing obsolete code comments related to cookiecutter callable
- bump version to 1.12.1
In this release, we fix then known issue,
when running the Generator CLI in interactive mode.
Now, in case the CLI is ran in interactive mode, all interactive dialogs / prompts
are delegated to Questionnaire, which is already a python dependency of the Generator.
The Cookiecutter callable / executable is now always called, with the no_input boolean
flag set to True.
The idea was to refrain from updating our locked cookiecutter dependency, from 1.7.x to 2.x,
for the time being.
- support running interactive CLI, without supplying User's Config Yaml file
- populate Context, in pre_main, if interactive mode is ON
- make snapshot testinng robust against runtime Calendar Year changes!
- exclude DEBUG-level logs from being emitted in the Console (just in file)
- Ruff, Black, Isort, Mypy
- remove Handler Chain Infra, since we delegate handling Input to Questionnaire
- bump version to 1.12.0
| Revisiting the Why this Generator?_ page in the Docs Website.
| And updating motivation, for reader to use our software.
- We update content based on new Developments
- We present it, in 4 top-level arguments: see
Diff_ on github
.. LINKS
.. _Why this Generator?: https://python-package-generator.readthedocs.io/en/master/contents/20_why_this_package.html
- redesign Motivation Documentation Page, around 4 Top Level arguments
- fix syntax error in pyproject.toml, causing build process to fail
- improve README
- fix URL link of CI/CD Pipeline, used in Docs site to demonstrate Generated Proj capabilities
- drastically improve Developer's Guides section
Upgrade, Docker, Code Visualization and Docs Jobs, which are
out-of-the-box produced by the Generator as part of the CI/CD Pipeline
configuration YAML files, to be Configurable by Policy.
Design a High-Level interface, for configuring the CI/CD Behaviour, allowing:
- seemless switching between Policies, on a per-Job level
- Easy Override to
"shutdown" Job", ie to prevent upload, by-passingdecision-making - Easy Override to
"force Job", ie for quick trial, by-passingdecision-makinggoverning desicion-making, on the Workflows/Jobs.
A Policy governs how a Job behaves (ie if it should trigger), and each one yiels a distinct behaviour.
At CI runtime, each Job uses its Policy and the Status of the Build,
triggered on the CI, to decide if it should run or not.
A Job can take into account "things" such as:
- whether the current
Buildpassed theTest's - whether the
Test Jobwas intentionally skipped - whether
production code(ie python distro) changed from previous commit
- support Policy-based Workflows/Job, in the CI/CD Pipeline
- add Dev Guides Page in Docs Website, when selecting
Mkdocsas Docs Builder
- improve automatically derived emulated project to use for Post Hook Unit Tests
Introducing Ruff as part of the Static Code Analysis Toolchain.
Generator, now features CI/CD, with the Ruff Fast Python Linter!
Preparing, to retire pylint, in the future, by removing CI Job dedicated to it, at the moment.
- introduce
Ruff, Fast Python Linter, in updatedDeveloper's Tool chain <https://github.com/boromir674/biskotaki/tree/auto-generated?tab=readme-ov-file#development>_ - run
Ruffagainst code, as part of the Tools included in theStatic Code AnalysisCI Workflow, produced by the Generator's Template - run legacy
Pylintagaist code, in dedicated Job, for easier potential retirement - make Template Code pass Ruff Checks/Evaluations
- add
Ruff,tox -e ruff, as availabletox command`` for fastStatic Code Check`
- remove extra but empty Log file, that appears inside the Gen Project
- automatically test that Rendered policy_lint.yml CI config is valid YAML
- automatically verify that extra, but empty log file does NOT appear in Gen Proj
- feature Ruff as New Fast Python Linter, and add Ruff Code Badge in README
- mention pytest-explicit as requirement for all test suite features (ie cli flags)
- apply isort and black code "fixes"
- apply Ruff fixes
- run Ruff in the Static Code Analysis CI Job and keep running legacy Pylint in separate Job
- remove dedicated docker settings reading Job
- refactor so that some intermediate Jobs are eliminated
- delegate Code Visualization to Reusable Workflow, with configurable execution Policy
- use workflow one-liner instead of bash if-else
- add 'Snapshot Update' Scripts, and dedicate README for the Process
- run 1-Job Test, instead of Stress Tests, on push to master or main branch
- bump version to 1.8.7
- improve Quickstart Gide in README.rst
- mention Documentation Site right after README.rst Subtitle and before badges
- remove unused workflow
- fix workflow syntax due to merge confict resolution artifacts
- add shell on-liner for firing up a 'quick-release' event
- add 'Quick Docs Release' Guide & restructure some content based on Diataxis theory
- Open PR to master on 'quick-release' event, to release Docs only Updates
- New Generator Option allows for
Mkdocsdoc site builder, along withsphinx - Generator adds python Logging Configuration, with Handlers for streaming to
FileandStd err - Generator adds full CI/CD Pipeline as Github Actions Workflow, introducing new Jobs such as
Docker, andPyPI
- include pytest-run-subprocess in test Extras of Generated Project pyproject.toml
- add
Gold StandardGenerated Biskotaki Projects - verify
No Regressionof Generator, with exhaustive comparison of Runtime result toGold Standard - test
Gold Standardpassestox -e lint - ignore Tests inside Snapshots, during
Test Discoveryof Pytest - verify
User Configbackwords compatibility, with regard to newDocsGenerator Feature - test default gen behaviour related to Docs, is same as before adding mkdocs option
- yaml validation and required/expected workflow vars checks
- fix README badge
- add docstring in backend.post_main:post_main function, to check out-of-the-box CD
- add Docstring, for Cookiecutter Pre Hook, at Module (file/script) level
- add Logging Configuration: DEBUG and above Stream to Std err and Write to Disk
- simplify 'main' code
- simplify 'pre_main' code
| Moving towards fully automated CI/CD pipeline. | See the .github/workflows/test.yaml file for the workflow (aka pipeline) details.
- dedicate separate Job to upload Coverage xml files to Codecov
- dedicate a Job Matrix for running Lint Checks
- publish to pypi Job, configured given a 'test' or 'prod' Github Environment (configured through github web UI)
- draw python dependency graphs, saved as .svg files, for master/dev branches and for tags starting with 'v'
- remove data of apt update after apt install from Dockerfile stage
| Improvements in the CI/CD pipeline running on Github Actions. | See the .github/workflows/test.yaml file for the workflow (aka pipeline) details.
- check Web Server Result Interface
- 'set_github_outputs' Job to pass 'env' vars to GITHUB_OUTPUT
- add flag to turn on/off docker build+publish
- draw deps job based on changes in src dir
- add disable tests flag
- build and push (docker) image to dockerhub
- define (docker) image, where the 'generate-python' cli is installed
- raise a proper subclass of python built-in Exception
- improve documentation
- apply isort in codebase
- satisfy pylint a bit more
- add pinned/locked dependencies defined in poetry.lock
- replace PyInquirer with Questionary package
- 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
Fixing a couple of bugs.
- only generate 'fixtures.py' for pytest-plugin project type
- fix pyproject.toml syntax
- improve documentation
- reduce duplicate code & clean code
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.
- check if a project with the same slug name, is already registered on the readthedocs server
- improve flexibility of testing code
- modularize code and improve dryness of code as well
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.
- manually covert gitpython outputted string paths into Path instances
- use Path from pathlib instead of the os.path module
- 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
- excplicitly use bash as the shell for some job steps
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)
- 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
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.
- 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
The Update includes improved code Architecture and better Test code Coverage! Features shorter Unites of Code, more DRY and more Tests.
- 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
- reduce code
- centralize subprocess run invocations
- enable network-bound tests to trigger integration testing of the
check_pypifeature
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).
- document config settings, improve tox envs & scripts
- verify Generator can be invoked as python module:
python -m cookiecutter_python
- 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
- use the template's parse_version script to reduce duplicate code
- decouple dialog creation
- satisfy prospector linter even better
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'.
- add 'dev' & 'dev-cov' envs, designed to run locally with 'python3' from PATH
- allow user to scaffold a cli with an entrypoint when installing their package
- use a proper name for the test case
- remove hardcoded values and add templated ones
- verify that when add_cli = 'no', there are no cli related files generated
- add 'dev' & 'dev-cov' envs, designed to run locally with 'python3' from PATH
- use the 'get_object' fixture from the 'pytest-object-getter' (pypi) package ;-)
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.
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
- generate the Project's CI Test Workflow with a build matrix based on the user's input python interpreters
- verify 'pre gen' script exits with 1 in case module name given is incorrect
- write scenarios with/without 'config file' and with/without given 'interpreters'
- add env for integration testing
- add checks for 'scripts' dir, make 'black', 'isort' cmds only do 'lint-check' by default and add switch to allow doing 'lint-apply'
- add PyInquirer '>= 1.0.3 and < 1.1.0' dependency: required by checkbox dialog
Compeltely migrate away from setup.cfg. Add Issue Templates, as markdown files, to help create well documented Issues on github.
- do not run py38-path tox env & improve ci steps names
- push generated package to 'auto-generated' branch on 'origin' remote
- do not initialize a git repository after package generation
- refactor parse script to read from pyproject.toml
- migrate to poetry from setuptools as 'build-backend'
- add rule in MANIFEST to match tox.ini similar to *.md, etc non-python files
- replace hardcoded values with templated variables
- sanity check to double check that 'tox.ini' gets put in generated dir
- rewrite module docstring
- use checkout@v3 instead of @v1
- upload sdist & wheel as artefacts
- separate codecov data exchange into dedicated job
- document installation and cli usage
Wrapping everything in a command line interface (cli). Speed up performance by using futures for http requests.
- allow user to control parameters of the project generation process
- expose project generator through an interactive cli
- add async capabilities to the pre_gen_project.py for faster network bound operations
- demonstrate how to install and use the cli
- update workflow to install and use the 'generate-python' cli
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!
- add new status badges and slightly improve content
- clean files and configs
- explain which generated file governs which component (ie ci code, tests code, etc)
The Project Generator now scaffolds a reasonably minimum website for your documentation pages!
The (html) website is built out of .rst files using sphinx and is ready to be hosted on
readthedocs.org, with just a few clicks' :)
- add templated documentation pages & configure website building and hosting on rtd server
- fix integration, by using a config file
- add word 'env' to know spelling list
- improve visibility of Biskotaki pypi package, which is generated from this Template
ci ^^
- add rules for automatic Pull Request labelling, with tags: template, ci, test & docs
- add pull request automatic labeling workflow
Enhance the Template's project generated CI config, by adding extra checks in Test Jobs and
automating the integration with the codecov.io hosting service.
- Doing a 'Lint check' on the code
- Doing a 'Compliance check' of the resulting packaged distro against python best practices
- Gathering and sending the Test Suite results to the codecov.io service
Include step in all Test Jobs to gather and send Code Coverage data resulting from running
the Test Suite.
`Codecov` is to Code Coverage, as `GA` is to Continuous Integration.
Upon granting permission, `codecov` will start accepting the accumulated results (such as
Code Coverage data) from all `Test Jobs` during a `build` and provide a web UI featuring
interactive visualization of the python code and its `coverage` on user-defined granularity
level, interactive charts of the `coverage` evolution and more.
Apply the same CI additions as the ones added for the Template project (see above)! Namely:
- extra
checksin theTest Jobs integrationwith thecodecov.ioCode Coverage hosting service
Add some "juicy" code badges in README, to demonstrate the status reported by
the various CI services that this repository integrates with. The badges are updated
automatically, as their respective status reporting (web) service continuously integrates
(ie triggers per commit) with the cookiecutter-python-package Project.
- enable lint, distro packaging QA & test results transimission to codecov.io CI service
- fix generated tox ini that had a hard coded value!
- add the changes introduced in this release
- add Codacy Badge to quickly show the reported Code Quality
- enable test workflow for tags matching pattern "v*", pull requests to dev & pushes to ci branch
- add job to generate the Biskotaki Python Package from this Template
- update generated .gitignore
- add lint check and lint apply tox envs in the generated project
- document the project structure, test infra and ci as changelog entry
- fix the generated tox ini multifactor environments
- add contributing and license rules for generated package
- skip test cases needing internet connection for default Test Suite execution
- add test case for running without initializing git repository
- define a test case where we run tox for a newly generated project
- 73% code coverage
- document the get_object fixture
- add instructions on how to Check Lint Rules and apply Lint fixes to satisfy them
- ignore post_gen_project.py script because the templated vars make black complain
- add lint check in Test Workflow
- add lint environment, which can check & fix code following our Code Style/Linting strategy
- add isort environment and run on code
- add configuration for black in pyproject.toml
- add black environment
- fix type checking for python 3.6
- fix type checking for python 3.8
- enable for pushes to the 'ci' branch
- add CONTRIBUTING.md
- add configuration for code static analysis with
pylint - add configuration for code static analysis with
prospector
- add type checking all CI Jobs