{"id":16514764,"url":"https://github.com/andgineer/cookiecutter-python-package","last_synced_at":"2025-07-13T20:03:11.340Z","repository":{"id":212487599,"uuid":"731538566","full_name":"andgineer/cookiecutter-python-package","owner":"andgineer","description":"Cookiecutter template for Python package with GitHub actions to publish on PiPy and with mkdocs material.","archived":false,"fork":false,"pushed_at":"2025-05-11T09:59:50.000Z","size":686,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-11T10:34:08.381Z","etag":null,"topics":["cookiecutter","invoke","mkdocs-material","package","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/andgineer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-12-14T10:00:18.000Z","updated_at":"2025-05-11T09:59:53.000Z","dependencies_parsed_at":"2024-01-03T10:47:18.456Z","dependency_job_id":"10a3b500-db31-4cd3-a195-c7d071044a4d","html_url":"https://github.com/andgineer/cookiecutter-python-package","commit_stats":null,"previous_names":["andgineer/cookiecutter-python-package"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andgineer/cookiecutter-python-package","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andgineer%2Fcookiecutter-python-package","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andgineer%2Fcookiecutter-python-package/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andgineer%2Fcookiecutter-python-package/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andgineer%2Fcookiecutter-python-package/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andgineer","download_url":"https://codeload.github.com/andgineer/cookiecutter-python-package/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andgineer%2Fcookiecutter-python-package/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265198300,"owners_count":23726446,"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":["cookiecutter","invoke","mkdocs-material","package","python"],"created_at":"2024-10-11T16:13:44.799Z","updated_at":"2025-07-13T20:03:11.275Z","avatar_url":"https://github.com/andgineer.png","language":"Python","readme":"# Python Package Project Template\n\nThis Cookiecutter template generates a Python project structured for package development. It includes a suite of tools and workflows for high-quality software development and easy package distribution.\n\n## Features\n\n- **Python Package Setup**: Scaffold for creating a Python package.\n- **Virtual environment**: Convenient creation/activation with a single command. Optionally use blazingly fast `uv`. Alternatively supports Anaconda envs.\n- **Aux scripts**: Optionally Python scripts with Invoke or BASH with Makefile.\n- **GitHub Actions for CI**: Automated workflows for Continuous Integration.\n- **Publishing to PyPI**: Workflow for packaging and distributing your project on [PyPI](https://pypi.org/).\n- **Static Analysis**: Pre-configured Flake8, Black, and MyPy checks. Use incredibly fast `ruff`.\n- **Coverage Reporting**: Code coverage analysis with results published to a separate branch, integrated with Coveralls/Codecov.\n- **Badges in README**: Status badges for CI and coverage.\n- **Pre-commit Hooks**: Pre-configured hooks for code formatting and MyPy checks.\n- **Dependency Management**: Using pip-tools with automated updates in `pyproject.toml` or using `uv lock`.\n- **Version Management**: Makefile commands for package version management.\n- **Documentation**: Multilanguage documentation with MkDocs Material, published on GitHub Pages.\n\n## How to Use This Template\n\nTo create a new project from this template, you'll need to have Cookiecutter installed. \nIf you don't have Cookiecutter installed, you can install it with \n[pipx](https://pipx.pypa.io/latest/installation/):\n\n```bash\npipx install cookiecutter\n```\n\nOnce Cookiecutter is installed, generate your project:\n\n    cookiecutter gh:andgineer/cookiecutter-python-package\n\nFollow the prompts to enter your project details.\n\nMy personal preference is to create empty project first on GitHub and then clone it to my local machine.\nThen without entering the project directory\n\n    cookiecutter gh:andgineer/cookiecutter-python-package --overwrite-if-exists\n\nOf course the project name you enter should be the same as the name of the repository on GitHub.\n\nThis way it creates all the boilerplate in the project directory but leave `.git/` you just cloned intact.\nYou can then push the boilerplate created by cookiecutter back to the GitHub.\n\n## Post-Generation Setup\nAfter generating your project, perform the following steps:\n\n### PyPI Credentials\nSet up your PyPI credentials as GitHub Secrets for automated package publishing:\n\n- Go to your GitHub repository's Settings.\n- Navigate to 'Secrets'.\n  - Add the following secrets:\n      PYPI_USERNAME: Your PyPI username.\n      PYPI_PASSWORD: Your PyPI password.\n\n###  GitHub Pages\nEnable GitHub Pages for your project's documentation:\n\n- Go to your GitHub repository's Settings.\n- In the 'Pages' section, set the source to the gh-pages branch.\n\n### Optional Configurations\n- Coveralls Integration: Activate your project on Coveralls.\n- Codecove: \npress `Configure` on appropriate project on [codecov.io](https://app.codecov.io/gh/andgineer). \nactivate the project in the codecov settings.\ngiven on the page `CODECOV_TOKEN` add to GitHub Secrets.\n\nAlternatively you can use `Global upload token` in settings - it will work for all projects.\n\n## How to use generated project\n\n### Docs\nDoc autogenerated and published on Github Pages from markdown files in `docs` folder.\nAlso from docstings autogenerated API reference.\nSee link in README.md.\n\n### Dependencies\nTo create virtualenv run `. ./activate.sh` in the root of the project (note the first \".\").\nYou need [uv](https://pypi.org/project/uv/) installed for this.\n\nIf you change dependencies in `requirements.in` or `requirements.dev.in` run `make reqs` to update \n`requirements.txt`, `requirements.dev.txt` and `pyproject.toml`. \nThis also will update dependencies in the virtualenv.\n\n### Black \u0026 mypy\nTo activate autoformatting and mypy checks run `pre-commit install` in the root of the project.\n\n### Publishing package in pip\nTo publish the package on PyPi just set git tag with `make ver-feature` etc, \nsee `make help` for details. After that the Github action will publish the package on PyPi \nand add link to the version into Github release.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandgineer%2Fcookiecutter-python-package","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandgineer%2Fcookiecutter-python-package","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandgineer%2Fcookiecutter-python-package/lists"}