Skip to content

Kajiih/SnakeForge

Repository files navigation

SnakeForge, the opinionated Python template that gives you what you need, and no more.

Your favorite template for Python 🐍

✨ Features

  • GitHub hosted repo and CI/CD workflows for
  • uv managed dependencies and virtual environment
  • Strict Ruff linting and formatting
  • Static type testing with ty, yes we love astral
  • pre-commit hooks checking all this
  • GitHub Actions CI/CD workflows
  • Versioning with Commitizen
  • Dynamic project metadata with hatch and hatchling build backend
  • Markdown documentation inspired by FastAPI and Typer

Contents

📋 Requirements

You will need accounts on:

  • GitHub to host your repository
  • PyPI to publish your project
  • CodeCov to check your project's tests and coverage

Make sure the following dependencies are installed:

🚀 Quickstart

  1. Install the requirement

    You can verify all required tools are correctly installed by running:

    copier --version
    git --version
    gh --version
    uv --version
  2. Generate the Python project

    We use Jinja extensions and tasks, so you need to run the command with the --trust flag.

    Check tasks and extensions to make sure you trust the repository.

    copier copy --trust gh:Kajiih/SnakeForge <path_to_project>
  3. Finish the project setup

    Follow the instructions displayed at the end of the generation process to enable all features.

    💡 Your CI/CD workflow will probably fail until you setup everything correctly and remove the code samples to improve code coverage.

  4. Start coding your awesome project!

    💡 Most of the time, if you want to update something that depends on an answer from the template (e.g., min python version, project description, etc), you better update the template with the new value so that it changes the value everywhere automatically.

    Check how to use specific features in docs.

Advanced Usage

If you use this template often, try using copier settings to save time during the setup!

Update your project

In your project's repository, run:

copier update --trust

Roadmap

  • add license classifiers in pyproject.tom
  • Replace hatch with uv (when the build backend is feature complete)
  • use ty as type checker, yes we love astral.sh stuff..!
  • use devcontainer
  • issue template
  • docker setup
  • app vs package
  • typedsettings and cyclopts with examples
  • Changelog
  • Add proper testing with this
  • Add profiles like this
  • Update messages
  • code embbedder and print result embedder in precommit hook
  • Replace plain tasks by some more practical task runner (invoke, etc)
  • Publish github workflow
  • Fix codecov test analytics not appearing: issue
  • Documentation

Resources

Based on

About

SnakeForge, the opinionated Python template that gives you what you need, and no more.

Topics

Resources

License

Stars

Watchers

Forks