{"id":24641144,"url":"https://github.com/elixir-cloud-aai/cookiecutter-python","last_synced_at":"2026-05-18T19:01:48.449Z","repository":{"id":245495301,"uuid":"818416054","full_name":"elixir-cloud-aai/cookiecutter-python","owner":"elixir-cloud-aai","description":"Cookiecutter template for creating a Python project with Poetry, including configurations for various project settings.","archived":false,"fork":false,"pushed_at":"2025-03-10T04:57:35.000Z","size":88,"stargazers_count":1,"open_issues_count":10,"forks_count":0,"subscribers_count":24,"default_branch":"main","last_synced_at":"2025-07-02T20:07:32.997Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elixir-cloud-aai.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-06-21T20:00:51.000Z","updated_at":"2025-03-10T04:57:38.000Z","dependencies_parsed_at":"2025-01-11T02:47:50.245Z","dependency_job_id":"61cf8484-62bd-42cc-b2c4-cabb05906cd2","html_url":"https://github.com/elixir-cloud-aai/cookiecutter-python","commit_stats":null,"previous_names":["elixir-cloud-aai/cookiecutter-python"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/elixir-cloud-aai/cookiecutter-python","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2Fcookiecutter-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2Fcookiecutter-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2Fcookiecutter-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2Fcookiecutter-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elixir-cloud-aai","download_url":"https://codeload.github.com/elixir-cloud-aai/cookiecutter-python/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2Fcookiecutter-python/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278686638,"owners_count":26028325,"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","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-01-25T12:12:25.912Z","updated_at":"2025-10-06T21:52:09.799Z","avatar_url":"https://github.com/elixir-cloud-aai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)][code-of-conduct]\n[![GitHub contributors](https://img.shields.io/github/contributors/elixir-cloud-aai/cookiecutter-python)](https://github.com/elixir-cloud-aai/cookiecutter-python/graphs/contributors)\n\n# Python Cookiecutter Template\n\nThis is a Cookiecutter template for creating a Python project with Poetry,\nincluding configurations for various project settings.\n\n## Table of Contents\n\n- [Usage](#usage)\n- [Configurations](#configurations)\n  - [Package manager - Poetry](#package-manager---poetry)\n  - [Linters and formatters - Ruff](#linters-and-formatters---ruff)\n  - [Spell checker - Typos](#spell-checker---typos)\n  - [Static type checker - Mypy](#static-type-checker---mypy)\n  - [Documentation - Sphinx](#documentation---sphinx)\n  - [Testing - pytest and pytest-cov](#testing---pytest-and-pytest-cov)\n- [CI/CD - GitHub Actions](#cicd---github-actions)\n- [Disclaimer](#disclaimer)\n- [Contributing](#contributing)\n- [Code of Conduct](#code-of-conduct)\n- [Versioning](#versioning)\n- [License](#license)\n- [Contact](#contact)\n\n## Usage\n\n1.**Install Cruft** (if you haven't already):\n\n```sh\npip install cruft\n```\n\n2.**Generate a new project**:\n\n```sh\ncruft create https://github.com/elixir-cloud-aai/cookiecutter-python.git\n```\n\n3.**Commit and push the generated files** (as applicable to your Git workflow)\n\nInside the generated project directory:\n\n```sh\ngit add .\ngit branch -m main\ngit commit -m \"chore(init): initialize project with https:github.com/elixir-cloud-aai/cookiecutter-python.git\"\n```\n\nPush the code to the remote repository:\n\n```sh\ngit remote add origin \u003cyour-repo-url\u003e\ngit push -u origin main\n```\n\n\u003e **Note**: If you want to push your code to GitHub and make use of the\n\u003e generated GitHub Actions workflows, we recommend you to set up the\n\u003e [necessary secrets](#cicd---github-actions) before pushing the code.\n\u003e Otherwise some of workflows may fail.\n\n### Don't wanna use Cruft?\n\nYou can also use the `cookiecutter` command directly:\n\n1.**Install cookiecutter** (if you haven't already):\n\n```sh\npip install cookiecutter\n```\n\n2.**Generate a new project**:\n\n```sh\ncookiecutter gh:elixir-cloud-aai/cookiecutter-python\n```\n\n\u003e **Note**: If you're using just `cookiecutter`, manually remove\n\u003e `update-template` job from `update.yaml` github action workflow file as\n\u003e `cookiecutter` doesn't support autosync like Cruft.\n\n## Configurations\n\n### Package manager - Poetry\n\nThis project uses [Poetry][poetry-org] as a package manager. Check out the\ncommands at the [official documentation][poetry-docs].\n\n### Linters and formatters - Ruff\n\nTo lint and format `Python` code files, it uses [Ruff][ruff], the default\nconfiguration is set in the `pyproject.toml` file.\n\n```toml\nselect = [\n  \"B\", # flake8-bugbear\n  \"E\", # pycodestyle\n  \"F\", # Pyflakes\n  \"I\", # isort\n  \"PL\", # pylint\n  \"SIM\", # flake8-simplify\n  \"UP\", # pyupgrade\n]\n```\n\nTo configure it to your needs, refer to the [rules documentation][ruff-linter]\n, and for formatter configuration, refer to the [configuration\ndocumentation][ruff-formatter].\n\n### Spell checker - Typos\n\nIf you want to ignore certain words, add them to the `pyproject.toml` file,\nunder the `tool.typos.default.extend-words` key.\n\n```toml\n[tool.typos.default.extend-words]\nmke = 'mke'\n```\n\nFor further configuration, refer to the [typos docs][typos-docs].\n\n### Static type checker - Mypy\n\nChange the configuration in `pyproject.toml` file, for further information refer\nto the [documentation][mypy-config].\n\n### Documentation - Sphinx\n\nConfiguration for Sphinx is in the `docs/source/conf.py` file, for further info\nrefer to the [Sphinx documentation][sphinx-docs]. The default configuration uses\n[furo theme][furo] and [ReadTheDocs][rtd] to host the documentation, you can\nchange the configuration using `/docs/source/conf.py` and `.readthedocs.yml`\nfile.\n\n\u003e **Note**: Make sure to set up the `ReadTheDocs` account and add the projects\n\u003e to the account to host the documentation.\n\n### Testing - pytest and pytest-cov\n\nGenerate a coverage report using `pytest-cov` and uploads it to codecov.io.\n\n\u003e **Note**: Make sure to set up the `Codecov` account and add the project to \n\u003e the account to host the coverage report and add github\n\u003e [token](#cicd---github-actions).\n\n## CI/CD - GitHub Actions\n\nHere are the GitHub Actions Secrets that need to be included in the repository\nsettings:\n\n- `PYPI_TOKEN`: PyPI account password.\n\n    \u003e **Note**: PyPI account token scoped to this repository (requires the\n    \u003e project to exist prior to using the Cookiecutter) or to all repositories.\n    \u003e To set up the token, visit \u003chttps://pypi.org\u003e, log in, go to\n    \u003e `Account settings` in the user menu and hit the `Add API token` button in\n    \u003e the `API tokens` section. Add a name, choose the scope and create the\n    \u003e token.\n\n- `CODECOV_TOKEN`: Codecov token.\n\n    \u003e **Note**: To set up the token, visit \u003chttps://codecov.io/\u003e, log in, find the\n    \u003e repository that you want to set up (you may need to \"Resync\") and hit the\n    \u003e \"Configure\" button. The token should show up in the \"Coverage\" tab.\n\n- `GITHUB_TOKEN`: This token is auto-generated by GitHub Actions for each job,\n    so please do NOT set it manually.\n\n    \u003e **Note**: The token needs to be granted the authority to create pull\n    \u003e requests. See [GitHub][gh-update-token] for details on how to set this permission.\n\n## Disclaimer\n\nSome of the links and images have been hardcoded with `ELIXIR Cloud \u0026 AAI`'s\nassets in the documentation, please update them manually if needed. These assets\n**MUST** be included for projects owned by ELIXIR Cloud \u0026 AAI, but **MUST NOT**\nbe included for projects that are not (personal projects, projects owned by\nother orgs).\n\n**Only `markdown` files and `images/` directory need to be changed.**\n\n## Contributing\n\nThis project is a community effort and lives off _your_ contributions, be it in\nthe form of bug reports, feature requests, discussions, fixes or any other form\nof contribution!\n\nPlease refer to the guidelines available at [`CONTRIBUTING.md`][contributing] if\nyou are interested in contributing.\n\n## Code of Conduct\n\nWe kindly request all contributors to abide by our\n[organization's Code of Conduct][code-of-conduct]. Please also refer to this\ndocument if you want to report an incident with respect to conduct in our\ncommunity. Thank you for your cooperation.\n\n## Versioning\n\nThe project adopts the [semantic versioning][semver] scheme for versioning.\nCurrently the service is in a pre-release stage, so changes to the API,\nincluding breaking changes, may occur at any time without further notice.\n\n## License\n\nThis project is distributed under the [Apache License 2.0][badge-license-url], a\ncopy of which is also available in [`LICENSE`][license].\n\n## Contact\n\nThe project is maintained by [ELIXIR Cloud \u0026 AAI][elixir-cloud-aai], a Driver\nProject of the [Global Alliance for Genomics and Health (GA4GH)][ga4gh], under\nthe umbrella of the [ELIXIR][elixir] [Compute Platform][elixir-compute].\n\nTo get in touch with us, please use one of the following routes:\n\n- For filing bug reports, feature requests or other code-related issues,\n    please make use of the project's\n    [issue tracker](https://github.com/elixir-cloud-aai/cookiecutter-python/issues).\n- For private/personal issues, more involved communication, or if you would\n    like to join our team as a regular contributor, you can either join our\n    [chat board][badge-chat-url] or [email] the community leaders.\n\n[![logo-elixir]][elixir] [![logo-elixir-cloud-aai]][elixir-cloud-aai]\n\n[badge-chat-url]: https://join.slack.com/t/elixir-cloud/shared_invite/enQtNzA3NTQ5Mzg2NjQ3LTZjZGI1OGQ5ZTRiOTRkY2ExMGUxNmQyODAxMDdjM2EyZDQ1YWM0ZGFjOTJhNzg5NjE0YmJiZTZhZDVhOWE4MWM\n[badge-license-url]: http://www.apache.org/licenses/LICENSE-2.0\n[code-of-conduct]: https://elixir-cloud-aai.github.io/about/code-of-conduct/\n[contributing]: https://elixir-cloud-aai.github.io/guides/guide-contributor/\n[elixir]: https://elixir-europe.org/\n[elixir-cloud-aai]: https://elixir-cloud.dcc.sib.swiss/\n[elixir-compute]: https://elixir-europe.org/platforms/compute\n[email]: mailto:cloud-service@elixir-europe.org\n[ga4gh]: https://ga4gh.org/\n[gh-update-token]: https://github.blog/changelog/2022-05-03-github-actions-prevent-github-actions-from-creating-and-approving-pull-requests/\n[license]: LICENSE\n[logo-elixir]: images/logo-elixir.svg\n[logo-elixir-cloud-aai]: images/logo-elixir-cloud-aai.svg\n[poetry-org]: https://python-poetry.org/\n[poetry-docs]: https://python-poetry.org/docs/cli/\n[ruff]: https://docs.astral.sh/ruff\n[ruff-formatter]: https://docs.astral.sh/ruff/formatter\n[typos-docs]: https://pypi.org/project/typos/\n[mypy-config]: https://mypy.readthedocs.io/en/stable/config_file.html\n[sphinx-docs]: https://www.sphinx-doc.org/en/master/usage/configuration.html\n[furo]: https://pradyunsg.me/furo/quickstart/\n[rtd]: https://readthedocs.org/\n[semver]: https://semver.org/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felixir-cloud-aai%2Fcookiecutter-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felixir-cloud-aai%2Fcookiecutter-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felixir-cloud-aai%2Fcookiecutter-python/lists"}