{"id":26066243,"url":"https://github.com/thatmlopsguy/cookiecutter-ml-project","last_synced_at":"2026-04-28T10:35:58.615Z","repository":{"id":250350263,"uuid":"825376550","full_name":"thatmlopsguy/cookiecutter-ml-project","owner":"thatmlopsguy","description":"Cookiecutter template to kickstart python ml projects.","archived":false,"fork":false,"pushed_at":"2024-11-25T04:41:54.000Z","size":67,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-02T19:52:54.142Z","etag":null,"topics":["cookiecutter","data-science","machine-learning","python","pytorch"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thatmlopsguy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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-07-07T15:56:03.000Z","updated_at":"2025-03-09T15:36:29.000Z","dependencies_parsed_at":"2025-07-02T19:38:10.450Z","dependency_job_id":"789dda16-629a-44bc-b88f-914d05588918","html_url":"https://github.com/thatmlopsguy/cookiecutter-ml-project","commit_stats":null,"previous_names":["thatmlopsguy/cookiecutter-ml-project"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thatmlopsguy/cookiecutter-ml-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thatmlopsguy%2Fcookiecutter-ml-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thatmlopsguy%2Fcookiecutter-ml-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thatmlopsguy%2Fcookiecutter-ml-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thatmlopsguy%2Fcookiecutter-ml-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thatmlopsguy","download_url":"https://codeload.github.com/thatmlopsguy/cookiecutter-ml-project/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thatmlopsguy%2Fcookiecutter-ml-project/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32377586,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T09:24:15.638Z","status":"ssl_error","status_checked_at":"2026-04-28T09:24:15.071Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["cookiecutter","data-science","machine-learning","python","pytorch"],"created_at":"2025-03-08T20:20:49.503Z","updated_at":"2026-04-28T10:35:58.596Z","avatar_url":"https://github.com/thatmlopsguy.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cookiecutter Machine Learning\n\n[![made-with-python](https://img.shields.io/badge/Made%20with-Python-red.svg)](#python)\n[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](https://commitizen-tools.github.io/commitizen/)\n[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-brightgreen.svg)](https://conventionalcommits.org)\n\n## Introduction\n\nThe objective of this project is to provide a generic machine learning template\nfor python based projects.\n\nThis includes folder structure, testing and documentation tools which should\nwork well for most small to midsize (in terms of number of features \u0026 examples)\nprojects using a single instance of a machine.\n\nThis project template combines simplicity, best practice for folder structure\nand good OOP design.\n\nThe main idea is that there's much same stuff you do every time when you start\nyour machine learning project, so wrapping all this shared stuff will help you\nto change just the core idea every time you start a new project.\n\nSo, here’s a simple template that help you get into your main project faster and\njust focus on your core (Model Architecture, Training Flow, etc.).\n\n## Features\n\n### Automatic updates to the projects generated from this cookiecutter\n\n- Powered by `cruft`;\n- Keep your project up-to-date with best practices;\n- Good base folder structure for many kinds of ML Projects (see below);\n\n### Bells and whistles\n\n- PEP8 is the universally accepted style guide for Python code. PEP 8 code\n  compliance is verified using `ruff`;\n- Consistent code quality: formatting the code with `ruff`, and `isort`\n  for sorting imports\n- Testing setup with `pytest` with `coverage` plugin;\n- Type checks with [`mypy`](https://mypy.readthedocs.io);\n- Security checks with [`safety`](https://github.com/pyupio/safety) and\n  [`bandit`](https://github.com/PyCQA/bandit);\n- Ready-to-use `.editorconfig`, `.dockerignore`, `.gitignore` and\n  `.gitattributes`. You don't have to worry about those things;\n- (Optional) [`Hydra`](https://github.com/facebookresearch/hydra) config templates with\n  `ray` integration for elegantly configuring complex applications;\n- (Optional) [`typer`](https://typer.tiangolo.com) CLI template to get you\n  started quickly;\n- Simple [`helm`](https://helm.sh/) chart or [`kustomize`](https://kustomize.io/) to deploy to k8s\n\n### Documentation\n\n- Docstring coverage with [`interrogate`](https://github.com/econchick/interrogate);\n- Diagrams as code with [`Diagrams`](https://diagrams.mingrammer.com/);\n- Documentation with [`MkDocs`](https://www.mkdocs.org)\n\n### Changelog management\n\n- Standard way of committing rules and communicating it using\n  [`commitizen`](https://commitizen-tools.github.io/commitizen/)\n- Follow [`conventional commits`](https://www.conventionalcommits.org)\n- Bump version automatically using [`semantic versioning`](https://semver.org/)\n  based on the commits\n- Generate a changelog using [`keep a Changelog`](https://keepachangelog.com/)\n\n### Automation\n\n- Ready-to-use [`pre-commit`](https://pre-commit.com) hooks with\n  code-formatting and security features;\n- Azure pipeline template available;\n- Dockerfile linter with [`hadolint`](https://github.com/hadolint/hadolint).\n\n### To start a new project, run\n\nGenerate a machine learning project from this template:\n\n```shell\ncookiecutter git@github.com:thatmlopsguy/cookiecutter-ml-project.git\n```\n\nor for a specific branch, tag, or commit SHA `{SPECIFIC}`, run:\n\n```shell\ncookiecutter -c {SPECIFIC} git@github.com:thatmlopsguy/cookiecutter-ml-project.git\n```\n\nor using [cruft](https://cruft.github.io/cruft):\n\n```shell\ncruft create -c {SPECIFIC} git@github.com:thatmlopsguy/cookiecutter-ml-project.git\n```\n\nFollow the prompts; if you are asked to re-download the cookiecutter template,\ninput `yes`.\n\nDefault responses are shown in the squared brackets; to use them, leave your\nresponse blank, and press enter.\n\nAfter creating the project, you should follow a couple of steps to make sure\neverything works automatically.\n\nHead over to the generated README.md file to read about the next steps and a\nmore in-depth explanation of the generated project's features.\n\n### Optional changes to consider post-project creation\n\nHave an existing project that you created from a template in the past using\nCookiecutter directly?\n\nConsider using the `cruft` package to integrate future `cookiecutter` releases.\n\n```shell\npip3 install cruft[pyproject]\ncruft link git@github.com:thatmlopsguy/cookiecutter-ml-project.git\n```\n\n### Updating a Project\n\nTo update an existing project, that was created using cruft, run `cruft update`\nin the root of the project.\n\nIf there are any updates, `cruft` will have you review them before applying.\n\nIf you accept the changes `cruft` will apply them to your project and update the\n`.cruft.json` file for you.\n\n### Input variables\n\nTemplate generator will ask you to fill some variables.\n\nThe input variables, with their default values:\n\n|      **Parameter**       |      **Default value**      | **Description**                                                                                                                 |\n| :----------------------: | :-------------------------: | ------------------------------------------------------------------------------------------------------------------------------- |\n|      `project_name`      |       `project_name`        | Project Name                                                                                                                    |\n|       `repo_name`        |         `repo_name`         | Repository Name                                                                                                                 |\n|      `description`       | based on the `project_name` | Brief description of your project.                                                                                              |\n|      `organization`      | based on the `project_name` | Name of the organization. We need to generate LICENSE and to specify ownership in `pyproject.toml`.                             |\n|        `license`         |            `MIT`            | One of `MIT`, `BSD-3`, `GNU GPL v3.0` and `Apache Software License 2.0`.                                                        |\n| `minimal_python_version` |           `3.10`            | Minimal Python version. It is used for builds and formatters `ruff` and `isort`. |\n|   `organization_email`   | based on the `organization` | Email for `SECURITY.md` files and to specify the ownership of the project in `pyproject.toml`.                                  |\n|        `version`         |           `0.0.0`           | Initial version of the package. Make sure it follows the [`semantic versions`](https://semver.org) specification.                 |\n|      `line_length`       |            `120`            | The max length per line (used for codestyle with `ruff` and `isort`). NOTE: This value must be between 50 and 140.             |\n| `command_line_interface` |           `none`            | If `typer` is chosen generator will create simple CLI application with [`typer`](https://github.com/tiangolo/typer) library.    |\n|          `k8s`           |           `none`            | Choose if [helm](https://helm.sh/) charts or [kustomize](https://kustomize.io/) to deploy to kubernetes\n\n\n## Contributing\n\nAny contributions are welcome including improving the template and example\nprojects.\n\n### Submit a Pull Request\n\nPull requests are welcome, if they're small, atomic, and if they make my own\npackaging experience better.\n\n## Development\n\n```shell\npython3 -m venv .venv\nsource .venv/bin/activate\npython3 -m pip install -r requirements/requirements-dev.txt\n```\n\n## Credits\n\nSee [credits](CREDITS.md) for all acknowledgements.\n\n## References\n\n- [Automatically Set Up a New ML Project, Pain Free (voxel51)](https://voxel51.com/blog/automatically-set-up-a-new-ml-project-pain-free/)\n- [Cookiecutter-MLOps (dagshub)](https://dagshub.com/DagsHub/Cookiecutter-MLOps/src/example-project)\n- [Cookiecutter Data Science](https://drivendata.github.io/cookiecutter-data-science/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthatmlopsguy%2Fcookiecutter-ml-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthatmlopsguy%2Fcookiecutter-ml-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthatmlopsguy%2Fcookiecutter-ml-project/lists"}