{"id":31523295,"url":"https://github.com/psolsfer/uvcopier","last_synced_at":"2026-05-16T11:32:59.726Z","repository":{"id":313895421,"uuid":"976002616","full_name":"psolsfer/uvcopier","owner":"psolsfer","description":"Copier template for a Python package managed with uv.","archived":false,"fork":false,"pushed_at":"2026-03-16T06:51:59.000Z","size":126,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-16T16:24:39.968Z","etag":null,"topics":["copier","copier-python","copier-template","mkdocs","mypy","project-template","pydantic","python","ruff","uv"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/psolsfer.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-01T09:52:22.000Z","updated_at":"2026-03-16T06:52:02.000Z","dependencies_parsed_at":"2025-09-09T12:52:04.491Z","dependency_job_id":"a0f3e610-a645-4b2b-a395-b93bd6b9e101","html_url":"https://github.com/psolsfer/uvcopier","commit_stats":null,"previous_names":["psolsfer/uvcopier"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/psolsfer/uvcopier","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psolsfer%2Fuvcopier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psolsfer%2Fuvcopier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psolsfer%2Fuvcopier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psolsfer%2Fuvcopier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/psolsfer","download_url":"https://codeload.github.com/psolsfer/uvcopier/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psolsfer%2Fuvcopier/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33100859,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["copier","copier-python","copier-template","mkdocs","mypy","project-template","pydantic","python","ruff","uv"],"created_at":"2025-10-03T16:14:28.083Z","updated_at":"2026-05-16T11:32:59.720Z","avatar_url":"https://github.com/psolsfer.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003euvcopier\u003c/h1\u003e\n\n\u003cbr/\u003e\n\n\u003c!-- Project Badges --\u003e\n[![Documentation Status][docs-read-badge]][docs-read-url]\n[![License - BSD-3-Clause][license-badge]][license-url]\n[![GitHub stars][stars-badge]][github-url]\n[![GitHub forks][forks-badge]][github-url]\n[![GitHub issues][issues-badge]][issues-url]\n\u003cbr/\u003e\n\n\u003ch3 align=\"center\"\u003e\n  \u003ca href=\"https://github.com/psolsfer/uvcopier\"\u003eGitHub\u003c/a\u003e\n  \u0026middot;\n  \u003ca href=\"https://uvcopier.readthedocs.io/en/stable/\"\u003eDocs\u003c/a\u003e\n  \u0026middot;\n  \u003ca href=\"https://github.com/psolsfer/uvcopier/issues\"\u003eIssues\u003c/a\u003e\n\u003c/h3\u003e\n\n\u003ch3 align=\"center\"\u003e\n  A Copier template for creating Python packages with uv.\n\u003c/h3\u003e\n\nA batteries-included template for Python projects using uv for dependency management. Use it to create new packages, upgrade existing ones, or maintain consistency across your Python projects with modern tooling and best practices.\n\n\u003cbr/\u003e\n\n---\n\n## Features\n\n### Project Setup and Management\n\n- [copier]: Keep your project templates up-to-date and track template changes\n- [uv]: Modern, fast dependency management and packaging tool for Python\n- Integrated GitHub Actions workflows for testing, drafting release notes, and publishing to [PyPI] when a release is created\n- Project structure following best practices\n\n### Code Quality Assurance\n\n- Managing and maintaining multi-language pre-commit hooks using [Pre-commit] or [prek] to ensure code quality\n- [Ruff]: Fast Python linter and formatter, combining multiple linting tools\n- Alternative formatter option with [Black]\n- Static type checking with [Mypy] and data validation using [Pydantic]\n- Automatic dependency updates with [Dependabot]\n\n### Testing\n\n- Testing setup with ``unittest`` and ``pytest``\n- [tox] configuration for testing against multiple Python versions (3.10+)\n- Test coverage reporting with [Coverage.py]\n- Optional [JupyterLab] integration for exploratory testing and analysis\n\n### Documentation\n\n- Documentation generation with [MkDocs] and the [Material for MkDocs] theme with [PyMdown Extensions].\n- Code documentation extraction with [mkdocstrings]\n- Support for multiple docstring styles (Google, NumPy)\n- Hosting options for [Read the Docs] or [GitHub Pages]\n\n### Versioning and Release Notes\n\n- [Commitizen] integration for standardized commit messages and version management\n- Semantic versioning with automatic changelog generation\n- Automated release notes drafting with [Release Drafter]\n- History tracking and changelog management\n\n### Command Line Interface\n\n- Optional CLI integration using [Click], [Typer], or [argparse]\n\n### Development Tasks\n\n- Task automation with [Invoke] for common development workflows\n- Standardized commands for testing, linting, formatting, and documentation\n- Simplified package publication and versioning tools\n\n## Usage\n\nFor a brief tutorial, refer to the refer to the [Tutorial](docs/tutorial.md) section of the documentation.\n\nThe prompts that need to be filled during the creation of the package are described in [Prompts](docs/prompts.md).\n\n## Updating a project\n\nAn existing project can be updated to the latest template using:\n\n```bash linenums=\"0\"\ncopier update\n```\n\n## Alternatives\n\n[copier-uv](https://github.com/pawamoy/copier-uv) is a copier template for Python projects managed by uv.\n\n[python-copier-template](https://github.com/DiamondLightSource/python-copier-template): Diamond's opinionated copier template for pure Python projects managed by pip.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Credits\n\nThe following templates were used as basis and inspiration for the creation of some parts of this template:\n\n- Initial inspiration from [audreyfeldroy/cookiecutter-pypackage].\n- Implementation of [Invoke] is based in [briggySmalls/cookiecutter-pypackage].\n- Use of release drafter and dependabot: [TezRomacH/python-package-template].\n\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n\n[docs-read-badge]: https://readthedocs.org/projects/uvcopier/badge/?version=stable\u0026style=for-the-badge\n[docs-read-url]: https://uvcopier.readthedocs.io/en/stable/\n[license-badge]: https://img.shields.io/github/license/psolsfer/uvcopier?style=for-the-badge\n[license-url]: https://spdx.org/licenses/BSD-3-Clause.html\n[stars-badge]: https://img.shields.io/github/stars/psolsfer/uvcopier.svg?style=for-the-badge\n[forks-badge]: https://img.shields.io/github/forks/psolsfer/uvcopier.svg?style=for-the-badge\n[issues-badge]: https://img.shields.io/github/issues/psolsfer/uvcopier.svg?style=for-the-badge\n[issues-url]: https://github.com/psolsfer/uvcopier/issues\n[github-url]: https://github.com/psolsfer/uvcopier\n\n[argparse]: https://docs.python.org/3/library/argparse.html\n[Black]: https://black.readthedocs.io/en/stable/\n[Click]: https://click.palletsprojects.com/en/stable/\n[Coverage.py]: https://coverage.readthedocs.io/\n[Commitizen]: https://commitizen-tools.github.io/commitizen/\n[copier]: \u003chttps://copier.readthedocs.io/\u003e\n[Dependabot]: https://github.com/marketplace/actions/release-drafter\n[Invoke]: https://www.pyinvoke.org/\n[JupyterLab]: https://jupyter.org/\n[Material for MkDocs]: https://squidfunk.github.io/mkdocs-material/\n[MkDocs]: https://www.mkdocs.org/\n[Mypy]: https://mypy.readthedocs.io/en/stable/\n[Pydantic]: https://docs.pydantic.dev\n[Pre-commit]: https://pre-commit.com/\n[prek]: https://github.com/j178/prek\n[Read the Docs]: https://readthedocs.org\n[Release Drafter]: https://github.com/marketplace/actions/release-drafter\n[PyMdown Extensions]: https://facelessuser.github.io/pymdown-extensions\n[PyPi]: https://pypi.org/\n[Ruff]: https://docs.astral.sh/ruff/\n[tox]: https://tox.wiki/\n[Typer]: https://typer.tiangolo.com/\n[uv]: https://docs.astral.sh/uv/\n\n[audreyfeldroy/cookiecutter-pypackage]: https://github.com/audreyfeldroy/cookiecutter-pypackage\n[briggySmalls/cookiecutter-pypackage]: https://briggysmalls.github.io/cookiecutter-pypackage\n[TezRomacH/python-package-template]: https://github.com/TezRomacH/python-package-template\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpsolsfer%2Fuvcopier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpsolsfer%2Fuvcopier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpsolsfer%2Fuvcopier/lists"}