Selamy Labs Python repository template. Create a repo from this template, then rename
example_pkgeverywhere and replace the placeholder logic. It starts at the OSS-excellence bar by construction: LICENSE, the shared reusable CI (lint + tests + coverage), asrc/layout, and tests that already pass.
- Click Use this template → create your repo.
- Rename the package:
src/example_pkg/→src/<your_pkg>/, and updatename,[tool.hatch.build.targets.wheel] packages, and[tool.coverage.run] sourceinpyproject.toml. - Replace
core.py+ its tests with your real code, keeping coverage ≥ 90%. - Fill in this README (what/why/install/usage), set the repo description + topics,
and keep
CHANGELOG.mdcurrent for every release.
pip install -e ".[test]" # local dev
# or, for an MCP/CLI entry point, expose it under [project.scripts]from example_pkg import greet
greet("world") # "Hello, world!"ruff format . && ruff check .
vulture src/ tests/ --min-confidence 80
coverage run -m pytest && coverage report --fail-under=90CI runs the same steps via the shared reusable workflow
(selamy-labs/.github → python-ci.yml and vulture-check.yml), so the repo's
checks are defined once, org-wide.
This repo meets the public-repo bar:
LICENSE, CHANGELOG, reusable CI with a coverage floor, src/ layout, and the
org-wide community-health defaults. Keep them.
Use the relevant standard blocks below when creating or cleaning repositories. Extend them with repo-specific secret and generated-file patterns; do not remove local defense-in-depth ignores.
# Python
__pycache__/
*.py[cod]
*.egg-info/
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
coverage.xml
htmlcov/
.venv/
venv/
# Rust/Bazel
target/
/bazel-*
/.cache/
# JS/TS
node_modules/
dist/
build/
.next/
*.tsbuildinfo
# Java
*.class
target/
build/
.gradle/
# Terraform
.terraform/
*.tfstate
*.tfstate.*
crash.log
# OS/editor
.DS_Store
Thumbs.db
.idea/
.vscode/
*.swp
# Secrets
.env
.env.*
*.pem
*.key
*.p12
credentials*.json
*client_secret*.jsonKeep lockfiles that make builds reproducible, including MODULE.bazel.lock and
.terraform.lock.hcl. Helm chart archives are intentionally not standardized
yet; decide whether *.tgz is committed or ignored in one org-wide follow-up.