Public SDK types for authoring Blondie plugins (backlog backends, CI providers, LLM tools).
Project description
blondie-types
Public SDK types for authoring Blondie plugins. Plugins import every Blondie type they need from this single package.
- Distribution name (PyPI):
blondie-types - Import name:
blondie_types - Contents: ABCs, dataclasses, enums, error classes, capability constants, and API protocols. No runtime code.
- Dependencies: stdlib +
pydantic+typing_extensions.
The Blondie runtime depends on blondie-types; blondie-types does not
depend on the runtime. Plugins develop, test, and ship outside the
Blondie repo with blondie-types as their only Blondie-side dependency.
Quick start
pip install blondie-types
from blondie_types import (
BacklogBackend,
BackendProvider,
Plugin,
PluginTool,
Task,
TaskStatus,
ToolProvider,
)
class MyTool(PluginTool):
name = "my_tool"
description = "A tiny example."
async def execute(self, **kwargs) -> str:
self.api.journal.info("hello from my_tool")
return "ok"
class MyPlugin(Plugin):
def provides(self):
return [ToolProvider(MyTool)]
Top-level exports
| Symbol | Kind | Module |
|---|---|---|
Plugin |
ABC | blondie_types.plugins |
Provider |
ABC | blondie_types.plugins |
BackendProvider |
dataclass | blondie_types.plugins |
CIProviderProvider |
dataclass | blondie_types.plugins |
ToolProvider |
dataclass | blondie_types.plugins |
RegistrationContext |
dataclass | blondie_types.plugins |
PluginInfo |
dataclass | blondie_types.plugins |
PluginEvent |
dataclass | blondie_types.plugins |
PLUGIN_API_VERSION |
int | blondie_types.plugins |
PluginTool |
ABC | blondie_types.tools |
ToolAPI |
Protocol | blondie_types.tools |
Repo, MessageBus |
Protocol | blondie_types.tools |
ProjectBacklog, Changelog |
Protocol | blondie_types.tools |
BacklogBackend |
ABC | blondie_types.backlog |
BackendAPI |
Protocol | blondie_types.backlog |
Task, Sprint, Comment |
dataclass | blondie_types.backlog |
Priority, TaskStatus |
enum | blondie_types.backlog |
TaskFormatter |
ABC | blondie_types.backlog |
CredentialSpec |
dataclass | blondie_types.backlog |
BackendError (+ family) |
exception | blondie_types.backlog |
CAP_* |
constants | blondie_types.backlog |
CIProvider |
ABC | blondie_types.ci |
CIAPI |
Protocol | blondie_types.ci |
Journal |
Protocol | blondie_types.journal |
The flat from blondie_types import X form is preferred; per-area submodules
are also exposed for selective import.
Versioning
The SDK follows Semantic Versioning. Two version numbers travel together:
- The distribution version in
pyproject.toml(visible asblondie_types.__version__, sourced from package metadata) - bumped on every release. - The plugin contract version
blondie_types.PLUGIN_API_VERSION- bumped on every breaking change to the public surface re-exported fromblondie.
Changelog conventions
Release notes live in CHANGELOG.md and follow
Keep a Changelog with one local
adjustment: when a release uses sub-section groupings (Added,
Changed, Fixed, Removed, Security, Deprecated), prefix each
sub-heading with the release version - e.g. ### 0.1.2 Added rather
than the plain ### Added. The plain headings repeat verbatim across
releases, which collides with markdownlint's
MD024 (no-duplicate-heading)
and breaks Markdown anchor links to a specific release's section.
Versioned sub-headings stay unique, anchors resolve, and the
Keep-a-Changelog grouping is preserved.
While editing notes under ## [Unreleased] the next version isn't
known yet, so authors write the placeholder Unreleased in place of
the version, e.g.:
## [Unreleased]
### Unreleased Added
- new feature alpha
### Unreleased Fixed
- bug X
scripts/bump_blondie_types_version.py rewrites every
### Unreleased <Group> to ### <new_version> <Group> when promoting
the section, mirroring how it rewrites the parent ## [Unreleased]
heading itself. Flat bullet lists directly under the version heading
are also acceptable when no grouping is needed; the
scripts/release_blondie_types.py auto-detection looks for both styles.
Cutting a release
One command runs the full pipeline. Add your release notes under
## [Unreleased] in CHANGELOG.md, commit them, then from the repo root:
poe release-types # interactive: auto-detect bump, prompt to confirm
poe release-types patch # explicit kind
poe release-types minor
poe release-types major
poe release-types 1.2.3 # explicit target version
poe release-types --dry-run # plan only; no mutations
poe release-types --no-push # stop after tagging; push later
poe release-types patch --yes # non-interactive, accept default
poe release-types --task 704 minor
release-types runs cautious pre-flight checks (working tree clean,
branch tracks remote, lint/typecheck/tests/build pass, CHANGELOG ↔
pyproject agreement, [Unreleased] non-empty), then auto-detects the
bump kind from the [Unreleased] section and conventional commits since
the last tag (heuristics: ### Added → minor, ### Changed /
### Removed / BREAKING → major, ### Fixed → patch; feat!: →
major, feat: → minor, fix: → patch). The default is presented in an
interactive prompt with the reasons it was picked.
Each subsequent step is idempotent - re-running after Ctrl-C resumes from the first incomplete step. The pipeline:
- Bump - pyproject.toml + CHANGELOG.md (
scripts/bump_blondie_types_version.py). - Commit -
[#NNN] blondie-types vX.Y.Z(or override with--message). - Tag -
blondie-types-vX.Y.Z(annotated). - Push - branch + tag.
Pushing the tag triggers
.github/workflows/blondie-types-publish.yml, which publishes to PyPI
via OIDC trusted publishing and creates a matching GitHub Release with
the CHANGELOG section as release notes and the sdist + wheel attached
as assets.
Lower-level tasks
For step-at-a-time control or manual recovery:
poe verify-types-release # check pyproject ↔ CHANGELOG agreement
poe bump-types --patch # bump pyproject + promote [Unreleased]
poe bump-types --to 1.2.3
poe build-types # build sdist + wheel under packages/blondie-types/dist/
poe test-types # run the SDK pytest suite
License
MIT
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 blondie_types-0.3.2.tar.gz.
File metadata
- Download URL: blondie_types-0.3.2.tar.gz
- Upload date:
- Size: 40.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e095b985638fb5c15d77436a61efeb8741ae3b39f16d260fe59ed07c34365d4
|
|
| MD5 |
75bbf90dc50a207c9cfff53be471e631
|
|
| BLAKE2b-256 |
47b7cf5bc4521daec24e2828d0a3b752632068f69137a2c867a5ae91e4d2ef50
|
Provenance
The following attestation bundles were made for blondie_types-0.3.2.tar.gz:
Publisher:
blondie-types-publish.yml on iva2k/blondie
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
blondie_types-0.3.2.tar.gz -
Subject digest:
4e095b985638fb5c15d77436a61efeb8741ae3b39f16d260fe59ed07c34365d4 - Sigstore transparency entry: 1635469001
- Sigstore integration time:
-
Permalink:
iva2k/blondie@5f034a0c393428b06fb658613a8b371ca86b7f93 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/iva2k
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
blondie-types-publish.yml@5f034a0c393428b06fb658613a8b371ca86b7f93 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file blondie_types-0.3.2-py3-none-any.whl.
File metadata
- Download URL: blondie_types-0.3.2-py3-none-any.whl
- Upload date:
- Size: 46.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ff777dfa192fde195e60858cb3e853a0092bd4c955f56f589d895809a170ef8
|
|
| MD5 |
6ce99edff8e1a14cc4d52b13421fd84e
|
|
| BLAKE2b-256 |
bffe69c15cfa1d90e84404b700da2a72de2ff07149a1a44a352787823dfaddda
|
Provenance
The following attestation bundles were made for blondie_types-0.3.2-py3-none-any.whl:
Publisher:
blondie-types-publish.yml on iva2k/blondie
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
blondie_types-0.3.2-py3-none-any.whl -
Subject digest:
6ff777dfa192fde195e60858cb3e853a0092bd4c955f56f589d895809a170ef8 - Sigstore transparency entry: 1635469003
- Sigstore integration time:
-
Permalink:
iva2k/blondie@5f034a0c393428b06fb658613a8b371ca86b7f93 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/iva2k
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
blondie-types-publish.yml@5f034a0c393428b06fb658613a8b371ca86b7f93 -
Trigger Event:
workflow_dispatch
-
Statement type: