{"id":48278152,"url":"https://github.com/ulgens/python-anything","last_synced_at":"2026-04-04T22:40:09.452Z","repository":{"id":343443993,"uuid":"1177678864","full_name":"ulgens/python-anything","owner":"ulgens","description":"Python project starter with a modern setup","archived":false,"fork":false,"pushed_at":"2026-04-02T01:12:17.000Z","size":32,"stargazers_count":1,"open_issues_count":10,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-02T11:25:03.154Z","etag":null,"topics":["copier","python","template"],"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/ulgens.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-10T09:06:13.000Z","updated_at":"2026-03-21T15:05:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ulgens/python-anything","commit_stats":null,"previous_names":["ulgens/python-anything"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ulgens/python-anything","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulgens%2Fpython-anything","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulgens%2Fpython-anything/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulgens%2Fpython-anything/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulgens%2Fpython-anything/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ulgens","download_url":"https://codeload.github.com/ulgens/python-anything/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulgens%2Fpython-anything/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31417481,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","response_time":60,"last_error":"SSL_read: 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","python","template"],"created_at":"2026-04-04T22:40:08.142Z","updated_at":"2026-04-04T22:40:09.355Z","avatar_url":"https://github.com/ulgens.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# python-anything\n\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\n\u003c/div\u003e\n\nA [Copier](https://copier.readthedocs.io/) template for Python projects with opinionated tooling.\n\n\u003e **Warning**\n\u003e This template is in a pretty early stage of development. Things can be unstable and changed without notice. Use at your own risk.\n\n## What's included\n\n- **GitHub Actions**: CI workflows for git hooks and tests\n- **[uv](https://github.com/astral-sh/uv)**: Python dependency management\n- **[prek](https://github.com/j178/prek)**: Git hooks manager/wrapper\n- **[ruff](https://github.com/astral-sh/ruff)**: Linting and formatting\n- **[ty](https://github.com/astral-sh/ty)**: Type checking (optional)\n- **[Renovate](https://github.com/renovatebot/renovate)**: Automated dependency updates\n- **[pytest](https://docs.pytest.org/)** + **[pytest-xdist](https://github.com/pytest-dev/pytest-xdist)** + **[pytest-randomly](https://github.com/pytest-dev/pytest-randomly)**: Python testing\n- **[Codecov](https://about.codecov.io/)**: Test coverage reporting (optional)\n\n## Requirements\n\n- [Copier](https://copier.readthedocs.io/) \u003e= 9.0.0\n- [uv](https://docs.astral.sh/uv/getting-started/installation/)\n- [prek](https://prek.j178.dev/installation/)\n\n## Usage\n\n### Create a new project\n\n```bash\ncopier copy --trust gh:ulgens/python-anything ./my-project\n```\n\n### Template questions\n\n| Question | Description | Default |\n|---|---|---|\n| `project_name` | Project name (e.g., `my-awesome-project`) | `my-awesome-project` |\n| `project_description` | One-line description | `\"\"` |\n| `author_name` | Author full name | `Jane Doe` |\n| `author_email` | Author email | `janedoe@example.com` |\n| `github_username` | GitHub username or organization | `janedoe` |\n| `python_version` | Python minor version | `3.14` |\n| `license` | License type | `MIT` (MIT, BSD-3-Clause, Apache-2.0, GPL-3.0, None) |\n| `frameworks` | Frameworks \u0026 libraries | `[]` (Click, FastAPI, LangChain) |\n| `use_codecov` | Enable Codecov integration | `true` |\n| `use_ty` | Enable ty type checker | `false` |\n\n### After generation\n\n```bash\ncd my-project\nprek install\ngit remote add origin git@github.com:\u003cusername\u003e/\u003cproject-name\u003e.git\ngit commit -m \"Initial commit\"\ngit push -u origin main\n```\n\n### Adapt an existing project\n\nTo adopt this template in a project that already exists:\n\n1. Make sure all changes are committed so you can review the template's changes as a diff:\n   ```bash\n   git status  # should be clean\n   ```\n\n2. Run `copier copy` from the project root:\n   ```bash\n   copier copy --trust gh:ulgens/python-anything .\n   ```\n\n3. Answer the template questions to match your existing project (name, author, Python version, etc.).\n\n4. Review the changes. Key files to check:\n   - **`pyproject.toml`**: Merge your existing dependencies into the template's structure. The template uses `dependency-groups` for dev dependencies and pinned versions.\n   - **Source layout**: The template expects code in `src/` and tests in `src/tests/`. Move your code if it lives elsewhere.\n   - **`.github/workflows/`**: Decide whether to keep your existing CI or adopt the template's.\n   - **Config files** (`ruff.toml`, `.pre-commit-config.yaml`, etc.): Generally safe to accept the template's versions.\n\n5. If you made manual changes after the copy (e.g., merging dependencies, moving files), run the hooks again:\n   ```bash\n   prek run --all-files\n   ```\n\n6. Review the full diff and commit:\n   ```bash\n   git diff --staged\n   git commit -m \"Adopt python-anything template\"\n   ```\n\nAfter this, `.copier-answers.yml` enables `copier update --trust` for future template updates.\n\n### Update an existing project\n\n```bash\ncopier update --trust\n```\n\n## What gets generated\n\n```\nmy-project/\n├── .copier-answers.yml\n├── .github/\n│   └── workflows/\n│       ├── git-hooks.yml\n│       └── tests.yml\n├── .gitignore\n├── .pre-commit-config.yaml\n├── LICENSE                      # (if license != None)\n├── README.md\n├── pyproject.toml\n├── renovate.json5\n├── ruff.toml\n├── src/\n│   └── tests/\n│       ├── __init__.py\n│       └── test_sample.py\n├── uv.lock                      # (generated by post-copy task)\n└── yamlfmt.yaml\n```\n\n## Framework-specific features\n\nSelecting frameworks affects:\n\n- **pyproject.toml**: Adds pinned dependencies for the selected frameworks\n- **ruff.toml**: Enables framework-specific lint rules:\n  - FastAPI: `FAST` rules\n\n## Codecov setup\n\nIf you enabled Codecov integration (`use_codecov: true`), follow these steps after generation:\n\n1. Sign up at [codecov.io](https://about.codecov.io/) and add your repository.\n2. Copy the upload token from Codecov's repository settings.\n3. Add the token as a GitHub Actions secret named `CODECOV_TOKEN` in your repository settings (Settings \u003e Secrets and variables \u003e Actions).\n\nOnce configured, coverage reports will be uploaded automatically on every push to `main` and on pull requests.\n\n## Related templates\n\n- **Django**: Use [ulgens/django-blasphemy](https://github.com/ulgens/django-blasphemy) for Django projects.\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fulgens%2Fpython-anything","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fulgens%2Fpython-anything","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fulgens%2Fpython-anything/lists"}