{"id":25339898,"url":"https://github.com/felixgwilliams/python-copier-template-ds","last_synced_at":"2025-04-08T11:48:19.232Z","repository":{"id":274352203,"uuid":"855433510","full_name":"felixgwilliams/python-copier-template-ds","owner":"felixgwilliams","description":"A template for a data-science type project using uv","archived":false,"fork":false,"pushed_at":"2025-01-28T20:51:27.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-14T07:51:25.203Z","etag":null,"topics":["copier-python","copier-template","python"],"latest_commit_sha":null,"homepage":"","language":"Jinja","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/felixgwilliams.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}},"created_at":"2024-09-10T21:25:21.000Z","updated_at":"2025-01-28T20:51:31.000Z","dependencies_parsed_at":"2025-01-26T19:46:30.836Z","dependency_job_id":null,"html_url":"https://github.com/felixgwilliams/python-copier-template-ds","commit_stats":null,"previous_names":["felixgwilliams/python-copier-template-ds"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixgwilliams%2Fpython-copier-template-ds","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixgwilliams%2Fpython-copier-template-ds/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixgwilliams%2Fpython-copier-template-ds/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixgwilliams%2Fpython-copier-template-ds/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/felixgwilliams","download_url":"https://codeload.github.com/felixgwilliams/python-copier-template-ds/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247838421,"owners_count":21004576,"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":["copier-python","copier-template","python"],"created_at":"2025-02-14T07:51:02.325Z","updated_at":"2025-04-08T11:48:19.215Z","avatar_url":"https://github.com/felixgwilliams.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Python Copier Template for Data Science\n\n [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n[![Copier](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-grayscale-inverted-border-orange.json)](https://github.com/copier-org/copier)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)\n\nThis is a template built with [Copier](https://github.com/copier-org/copier) to generate a data science focused python project.\n\nGet started with the following command:\n\n```shell\ncopier copy gh:felixgwilliams/python-copier-template-ds path/to/destination\n```\n\n## Features\n\n### Project structure\n\nIt is assumed that most of the work will be done in Jupyter Notebooks.\nHowever, the template also includes a python project, in which you can put functions and classes shared across notebooks.\nThe repository is set up to use [Pytest](https://docs.pytest.org/en/stable/) for unit testing this module code.\n\nThe template also includes a `data` directory whose contents will be ignored by git.\nYou can use this folder to store data that you do not commit.\nYou may also put a readme file in which you can document the source datasets you use and how to acquire them.\n\n### [just](https://github.com/casey/just)\n\n`just` is a command runner that allows you to easily to run project-specific commands.\nIn fact, you can use `just` to run all the setup commands listed below:\n\n```shell\njust setup\n```\n\n### [uv](https://github.com/astral-sh/uv)\n\nThe repository is set up to use [uv](https://github.com/astral-sh/uv) for package or project management.\nYou may set up your python environment with\n\n```shell\nuv sync --all-groups --all-extras\n```\n\n### [Ruff](https://github.com/astral-sh/ruff)\n\nThe repository is configured to use [Ruff](https://github.com/astral-sh/ruff) for linting and formatting.\nBy default, all lints are enabled except\n\n- [`COM`](https://docs.astral.sh/ruff/rules/#flake8-commas-com) Enforces trailing commas\n- [`ERA`](https://docs.astral.sh/ruff/rules/#eradicate-era) Disallows commented-out code\n- [`ISC001`](https://docs.astral.sh/ruff/rules/single-line-implicit-string-concatenation/#flake8-executable-exe) (conflicts with the formatter).\n\nIn addition, the following rules are only enforced for module code as they are inappropriate or too strict for unit tests and notebooks:\n\n- [`D`](https://docs.astral.sh/ruff/rules/#pydocstyle-d) Requires docstrings on functions, classes and modules\n- [`ANN`](https://docs.astral.sh/ruff/rules/#flake8-annotations-ann) Requires type annotations on functions and methods\n- [`S101`](https://docs.astral.sh/ruff/rules/assert/) Disallows use of `assert`\n- [`PLR2004`](https://docs.astral.sh/ruff/rules/magic-value-comparison/) Disallows \"magic\" values in comparisons\n- [`T20`](https://docs.astral.sh/ruff/rules/#flake8-print-t20) Disallows print statements\n\nThe target line length is 120 and the docstring convention is google.\n\n### [pre-commit](https://github.com/pre-commit/pre-commit)\n\npre-commit is a tool that runs checks on your files before you commit them with git, thereby helping ensure code quality.\nEnable it with the following command:\n\n```shell\npre-commit install --install-hooks\n```\n\nThe configuration is stored in `.pre-commit-config.yaml`.\n\n### [nbwipers](https://github.com/felixgwilliams/nbwipers)\n\n`nbwipers` is a tool written in rust to ensure Jupyter notebooks are clean.\nCommitting notebooks that are not clean makes diffs more confusing, can degrade performance and increases the risk of leaking sensitive information.\nYou can set it up as a git filter with the following command.\n\n```shell\nnbwipers install local\n```\n\n### [pytest](https://docs.pytest.org/en/stable/)\n\nThe repository comes configured to use `pytest` for unit testing the module code.\nFeel free to ignore it if you do not write module code.\n\n### Github Actions\n\nYou may optionally add a github workflow file which checks the following:\n\n- uses ruff to check files are formatted and linted\n- Runs unit tests and checks coverage\n- Checks any markdown files are formatted with [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2)\n- Checks that all jupyter notebooks are clean\n\n### [Typos](https://github.com/crate-ci/typos)\n\nTypos checks for common typos in code, aiming for a low false positive rate.\nThe repository is configured not to use it for Jupyter notebook files, as it tends to find errors in cell outputs.\n\nTest with [Copier](https://github.com/copier-org/copier) and [copier-template-tester](https://github.com/KyleKing/copier-template-tester).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelixgwilliams%2Fpython-copier-template-ds","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffelixgwilliams%2Fpython-copier-template-ds","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelixgwilliams%2Fpython-copier-template-ds/lists"}