Skip to main content

A skeleton for Python projects by Scaldys.

Project description

License

A modern Python project template with best practices.

This template provides a solid foundation for Python projects with integrated testing, documentation, and quality assurance tools. While primarily created for personal use, it’s available for anyone to use or fork on GitHub: https://github.com/scaldys/scaldys-template

Features

  • Modern Python development with Python 3.12+

  • Fast dependency management with uv

  • Comprehensive testing with pytest and coverage reporting

  • Code quality verification with ruff (linting & formatting) and pyright (type checking)

  • Documentation with reStructuredText and sphinx using ReadTheDocs theme

  • GitHub Actions workflows for CI/CD and PyPI publishing

Getting Started

Prerequisites

  • Python 3.12 or later

  • Git

Setup

  1. Get the template:

    # Option 1: Download as ZIP
    # Download from https://github.com/scaldys/scaldys-template/archive/refs/heads/main.zip
    
    # Option 2: Clone with Git
    git clone https://github.com/scaldys/scaldys-template.git your-project-name
    cd your-project-name
    rm -rf .git
    git init
  2. Customize the template:

    • Replace all occurrences of scaldys (case-sensitive) with your project name

    • Update file and directory names containing “scaldys”

    • Modify package metadata in pyproject.toml

  3. Set up your repository:

    • Create a new repository on GitHub/GitLab

    • Follow their instructions to push your local repository

    • Set up required GitHub environments for trusted publishing

Development Workflow

Installation

uv will automatically install development dependencies when running a command, for instance run the tests.

uv run pytest ./tests

While the environment is synced automatically, it may also be explicitly synced using uv sync:

uv sync

Please refer to the uv documentation : https://docs.astral.sh/uv/guides/

Code Quality Verification

The project includes automated code quality checks that run when you push changes to GitHub. These checks are defined in .github/workflows/release.yml and include:

  • Building the project with uv build

  • (Optional) Smoke tests for the wheel and source distribution packages

You can also run quality checks locally before committing:

# Run tests
uv run pytest

# Check test coverage
uv run coverage run -m pytest

# Lint and check formatting
uv run ruff check ./src

# Format code
uv run ruff format ./src

# Check types
uv run pyright ./src

# Build documentation
uv run sphinx-build docs docs/_build

Publishing to PyPI

This template supports trusted publishing to PyPI using GitHub Actions:

  1. Read the Packaging Python Projects guide: https://packaging.python.org/en/latest/tutorials/packaging-projects/

  2. For trusted publishing details, see uv’s trusted publishing examples: https://github.com/astral-sh/trusted-publishing-examples

  3. For testing purposes, use TestPyPI: modify the run step in .github/workflows/release.yml to use TestPyPI

  4. Configure trusted publishing:

    • Log in to PyPI (https://pypi.org/) or TestPyPI (https://test.pypi.org/)

    • Go to “Your projects” → “Publishing” → “Trusted Publisher Management”

    • Click “Add a new pending publisher” and configure: * Project name: Your package name * Owner: Your GitHub username * Repository: Your repository name * Workflow name: release.yml * Environment name: release (configure this in your GitHub repository settings)

License

This project template is distributed under the MIT license. See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scaldys-0.1.1.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scaldys-0.1.1-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

File details

Details for the file scaldys-0.1.1.tar.gz.

File metadata

  • Download URL: scaldys-0.1.1.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.6.6

File hashes

Hashes for scaldys-0.1.1.tar.gz
Algorithm Hash digest
SHA256 0ce44459449f920445c768d430e8142938f7a586685deb9935b11644d76f6531
MD5 9626cacaa106b2315daf5c074a6b5ee4
BLAKE2b-256 e3fa5a39377590d6e80ac356a2982b889ffe9a9d1ba518c27a3668a054a7a7e1

See more details on using hashes here.

File details

Details for the file scaldys-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: scaldys-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 15.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.6.6

File hashes

Hashes for scaldys-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 288698d3b39e7241e5d4914d99b7b465203963d81bb4ed90f52129e02be96b6a
MD5 1990831204eb4711b9205cec509ee1b5
BLAKE2b-256 278aa23b8906186e6a416854b2e62dc4627a339ab538fcdd870019deb74be6fc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page