Skip to main content

bygge

CI PyPI Python Version License

bygge (pronounced BYG-eh, Norwegian for "to build") — A CLI tool for Python project development and workspace management.

bygge simplifies development workflows for Python projects by providing a consistent interface for common tasks: testing, linting, type-checking, formatting, and more. It works with both single-package projects and multi-package monorepos.

Features

  • 🔧 Unified CLI — One command (bygge check) runs all your quality checks
  • 📦 Monorepo support — Manages multiple packages with inter-dependencies
  • 🔌 Plugin-based — Automatically detects and configures tools (pytest, ruff, basedpyright)
  • 🎯 Convention over configuration — Works out-of-the-box with standard Python project layouts
  • 🚀 Fast — Runs checks in topological order for correct dependency resolution
  • 🪝 Git hooks — Built-in pre-commit hook support

Installation

pip install bygge

For development:

pip install bygge[dev]

Quick Start

Initialize your project:

# Create .bygge.toml configuration
cat > .bygge.toml << 'EOF'
[workspace]
venv_dir = ".venv"
optional_deps = ["dev"]
coverage_baseline = 100
EOF

# Install git hooks
bygge hooks

# Run all checks (format, lint, typecheck, test with coverage)
bygge check

Usage

Common commands

bygge test              # Run tests
bygge coverage          # Run tests with coverage report
bygge fmt               # Format code and sort imports
bygge lint              # Lint code
bygge typecheck         # Type-check code
bygge check             # Run all checks (same as pre-commit)

Check modes

Most commands support --check mode for CI/validation:

bygge fmt --check       # Verify formatting without changes
bygge lint --check      # Verify linting without changes

Environment setup

bygge init              # Create venv and install packages
bygge info              # Show environment information

Git integration

bygge hooks             # Install pre-commit hook
bygge unhook            # Remove pre-commit hook
bygge commit-unchecked  # Commit bypassing hooks (use sparingly)

Configuration

Create a .bygge.toml file at your project root:

Single package project

[workspace]
venv_dir = ".venv"
optional_deps = ["dev"]
coverage_baseline = 100

Monorepo (multiple packages)

[workspace]
package_root_dir = "packages"  # Directory containing your packages
venv_dir = ".venv"
optional_deps = ["dev"]
coverage_baseline = 95

Tool Detection

bygge automatically detects and uses tools from your project dependencies:

Tool Purpose Detected from
pytest Unit testing pytest in dependencies
pytest-cov Coverage reporting pytest-cov in dependencies
basedpyright Type checking basedpyright in dependencies
ruff Linting & formatting Built-in (no detection needed)

Configuration is read from your pyproject.toml:

  • Pytest: [tool.pytest.ini_options]
  • Basedpyright: [tool.basedpyright]
  • Ruff: [tool.ruff]

Monorepo Support

For projects with multiple packages, bygge handles:

  • Topological sorting — Installs packages in dependency order
  • Multi-package discovery — Finds all packages under package_root_dir
  • Unified testing — Runs tests across all packages
  • Cross-package coverage — Reports combined coverage

Example monorepo structure:

myproject/
├── .bygge.toml
├── pyproject.toml
├── packages/
│   ├── common/
│   │   ├── pyproject.toml
│   │   ├── src/common/
│   │   └── tests/
│   ├── lib/
│   │   ├── pyproject.toml
│   │   ├── src/lib/
│   │   └── tests/
│   └── app/
│       ├── pyproject.toml
│       ├── src/app/
│       └── tests/
└── .venv/

Why bygge?

  • Consistency — Same commands work across all your projects
  • Simplicity — No need to remember different tool invocations
  • Reliability — Runs checks in the right order for monorepos
  • Speed — No overhead from meta-build systems; direct tool invocation
  • Transparency — Just a thin wrapper; you can always call tools directly

Name

bygge is Norwegian for "to build" — fitting for a build and development tool. Pronounced BYG-eh (rhymes with "dig-eh").

Contributing

See DEV.md for development setup and guidelines.

Licence

MIT License - see LICENSE for details.

Metadata

Release files for bygge 0.1.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bygge 0.1.9
File Size Uploaded
bygge-0.1.9.tar.gz 54.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bygge 0.1.9
File Interpreter ABI Platform
bygge-0.1.9-py3-none-any.whl Python 3 none any Details

Total release size: 105.8 kB

Release files / bygge-0.1.9.tar.gz

Download URL bygge-0.1.9.tar.gz
Size 54.1 kB
Tags Source
SHA-256 checksum
How to use checksums
40109882b952f5306e5fccb5d8bce79f08b39feaa2ea2d957d5541a10d83951f
BLAKE2b-256 checksum
How to use checksums
b4c53165c90642ed9588181068095cdff91a8036db37064fcb8f212f569d48de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 27, 2026.

Transparency log

Release files / bygge-0.1.9-py3-none-any.whl

Download URL bygge-0.1.9-py3-none-any.whl
Size 51.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
32ec183aba7528094f93f4d7d0d05e5e72b7bff23f4172a33251e0b8b6508fe4
BLAKE2b-256 checksum
How to use checksums
3b737c5870bf804af83ab0ac4cba3e4cd6c5d59aaca5a8d05b3406166db46ea8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 27, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.9 This release

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page