A skeleton for Python projects by Scaldys.
Project description
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
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 initCustomize 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
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:
Read the Packaging Python Projects guide: https://packaging.python.org/en/latest/tutorials/packaging-projects/
For trusted publishing details, see uv’s trusted publishing examples: https://github.com/astral-sh/trusted-publishing-examples
For testing purposes, use TestPyPI: modify the run step in .github/workflows/release.yml to use TestPyPI
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ce44459449f920445c768d430e8142938f7a586685deb9935b11644d76f6531
|
|
| MD5 |
9626cacaa106b2315daf5c074a6b5ee4
|
|
| BLAKE2b-256 |
e3fa5a39377590d6e80ac356a2982b889ffe9a9d1ba518c27a3668a054a7a7e1
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
288698d3b39e7241e5d4914d99b7b465203963d81bb4ed90f52129e02be96b6a
|
|
| MD5 |
1990831204eb4711b9205cec509ee1b5
|
|
| BLAKE2b-256 |
278aa23b8906186e6a416854b2e62dc4627a339ab538fcdd870019deb74be6fc
|