{"id":28409661,"url":"https://github.com/woltapp/wolt-python-package-cookiecutter","last_synced_at":"2025-06-25T03:32:42.517Z","repository":{"id":37964143,"uuid":"378083807","full_name":"woltapp/wolt-python-package-cookiecutter","owner":"woltapp","description":"Cookiecutter for rapidly creating modern \u0026 high-quality Python packages","archived":false,"fork":false,"pushed_at":"2024-06-19T12:38:51.000Z","size":2046,"stargazers_count":258,"open_issues_count":7,"forks_count":44,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-06-02T19:19:01.138Z","etag":null,"topics":["best-practices","cookiecutter-template","cruft","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/woltapp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-18T08:25:27.000Z","updated_at":"2025-05-31T08:24:30.000Z","dependencies_parsed_at":"2024-03-14T12:31:11.296Z","dependency_job_id":"7c196224-4999-4772-a1e5-5fbe7428643b","html_url":"https://github.com/woltapp/wolt-python-package-cookiecutter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/woltapp/wolt-python-package-cookiecutter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/woltapp%2Fwolt-python-package-cookiecutter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/woltapp%2Fwolt-python-package-cookiecutter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/woltapp%2Fwolt-python-package-cookiecutter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/woltapp%2Fwolt-python-package-cookiecutter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/woltapp","download_url":"https://codeload.github.com/woltapp/wolt-python-package-cookiecutter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/woltapp%2Fwolt-python-package-cookiecutter/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261798328,"owners_count":23211154,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["best-practices","cookiecutter-template","cruft","python"],"created_at":"2025-06-02T09:42:18.422Z","updated_at":"2025-06-25T03:32:42.507Z","avatar_url":"https://github.com/woltapp.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wolt Python Package Cookiecutter\n\nA [cookiecutter](https://cookiecutter.readthedocs.io/en/latest/README.html) (project template) for rapidly developing new open source Python packages. Best practices with all the modern bells and whistles included.\n\n![Demo](https://github.com/woltapp/wolt-python-package-cookiecutter/raw/master/demo.gif)\n\n## Example projects which use Wolt Python Package Cookiecutter\n* [jerry-git/pytest-split](https://github.com/jerry-git/pytest-split)\n\n## Features\n\n#### Automatic updates to the projects generated from this cookiecutter\n\n* Powered by [cruft](https://cruft.github.io/cruft/)\n* Keep your project up-to-date with best practices\n\n#### Continuous integration\n\n* Powered by [Github Actions](https://github.com/features/actions)\n* Testing against multiple different versions\n\n#### Documentation\n\n* Automatically published as [GitHub Pages](https://pages.github.com/)\n* Powered by [mkdocs-material](https://github.com/squidfunk/mkdocs-material)\n* Auto-generated API documentation from docstrings via [mkdocstrings](https://github.com/mkdocstrings/mkdocstrings)\n* See the extensive list of [MkDocs plugins](https://github.com/mkdocs/mkdocs/wiki/MkDocs-Plugins) which can help you\n to tune the documentation to fit your project's needs\n\n#### Automated releases\n\n* Publishing to [PyPI](https://pypi.org/) when a release is made in GitHub\n\n#### Changelog management\n\n* Gently enforced: [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)\n* GitHub releases get their description automatically populated based on the changelog content\n* The _Unreleased_ section is automatically updated when a release is done\n* Changelog is embedded in the documentation\n\n#### Bells and whistles\n\n* [Poetry](https://python-poetry.org/docs/) for managing dependencies and packaging\n* [pre-commit](https://pre-commit.com/) for running all the goodies listed below\n* [mypy](https://flake8.pycqa.org/en/latest/) for static type checking\n* [ruff](https://beta.ruff.rs/docs/) for automatic formatting, linting and automatically fixing some linting errors\n\n#### Automation\n\n* Updates to the best practices (via GHA workflow which runs `cruft update` and creates a PR)\n* Dependency updates (via GHA workflow which creates a PR)\n\n## Usage\n\nMake sure you have [`cruft`](https://github.com/cruft/cruft#installation) installed. Alternatively, you can use\n [`cookiecutter`](https://cookiecutter.readthedocs.io/en/latest/installation.html) if you are not interested in\n  getting updates to the project \"boilerplate\" in the future.\n\nCreate a new project:\n\n```sh\ncruft create https://github.com/woltapp/wolt-python-package-cookiecutter\n```\n\nThe CLI interface will ask some basic questions, such the name of the project, and then generate all the goodies\n automatically.\n\nAfter that you can make it a proper git repo:\n\n```sh\ncd \u003cyour-project-slug\u003e\ngit init\ngit add .\ngit commit -m \"Initial project structure from Wolt Python Package cookiecutter\"\n```\n\nWe update this cookiecutter template regularly to keep it up-to-date with the best practices of the Python world. You\n can get the updates into your project with:\n\n```sh\ncruft update\n```\n\n### Configure secrets\n\n#### `PYPI_TOKEN`\n\nRequired for publishing the package to [PyPI](https://pypi.org/). You can generate a token by logging into PyPI and\n navigating to _Add API token_ in your [account settings](https://pypi.org/manage/account/).\n\n#### `AUTO_UPDATE_GITHUB_TOKEN`\n\nThis cookiecutter template comes with an auto update feature if the project was created using cruft.\nA GitHub action automatically checks for updates and creates a pull request.\n\nGenerate [personal access token](https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token)\nand use it as the value for `AUTO_UPDATE_GITHUB_TOKEN` secret. When creating the access token, the following\n permissions have to be granted\n\n* repo\n* workflow\n\n### After the first release\n\nThe first release will create `gh-pages` branch which will contain the static files for the documentation. Enable GitHub\n Pages in the _Pages_ section of the repository settings.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwoltapp%2Fwolt-python-package-cookiecutter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwoltapp%2Fwolt-python-package-cookiecutter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwoltapp%2Fwolt-python-package-cookiecutter/lists"}