pl8-base
pl8-base is the data layer for PL8, a lightweight issue tracker backed by
DynamoDB. It's a Python library, not a service: it defines PL8's entities
(Issue, Space, IssueBlocker), its events, and the BasePL8 manager
that reads and writes them against a DynamoDB table. It's the source of
truth for PL8's data model, consumed by the Lambda functions that actually
run PL8 in AWS.
Getting started
Install
pip install pl8-base
or with uv:
uv add pl8-base
Basic usage
BasePL8 wraps a boto3 DynamoDB client and a structured logger. Error
logging passes arbitrary keyword args through to be merged into the log
record (e.g. self.logger.error(msg, item=item)), which a stdlib
logging.Logger rejects — pass an
aws-lambda-powertools
Logger instead (pip install aws-lambda-powertools — it's not a dependency
of this package, since only your logger instance needs it, not pl8-base
itself). It also expects a table already provisioned with PK/SK and a
GSI1 global secondary index (GSI1PK/GSI1SK) — see
Deploying below.
import boto3
from aws_lambda_powertools import Logger
from pl8_base.manager import BasePL8
from pl8_base.types import IssueStatus
pl8 = BasePL8(
dynamodb_client=boto3.client("dynamodb"),
table_name="pl8",
logger=Logger(),
)
space = pl8.create_space(
space_id="eng",
name="Engineering",
description="Issues for the engineering team",
)
issue = pl8.create_issue(
space_id="eng",
title="Fix login bug",
description="Users can't log in on Safari",
status=IssueStatus.TODO,
)
pl8.transition_issue(space_id="eng", issue_id=issue.issue_id,
status=IssueStatus.IN_PROGRESS)
Deploying
pl8-base only talks to a DynamoDB table you already have; it doesn't
provision or run anything in AWS itself. Work is underway to create other
repos to scaffold this.
Release files for pl8-base 0.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pl8_base-0.0.3.tar.gz | 23.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pl8_base-0.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 53.6 kB
Release files / pl8_base-0.0.3.tar.gz
| Download URL | pl8_base-0.0.3.tar.gz |
|---|---|
| Size | 23.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d305668689095a40d8da740402c7242619ad914dc282c40772b41283cd848065
|
|
BLAKE2b-256 checksum How to use checksums |
9bfb41a4697dace9c76eaf5a31881b091dde4eb298806056fa6fb1ae194595d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 22, 2026.
Transparency logRelease files / pl8_base-0.0.3-py3-none-any.whl
| Download URL | pl8_base-0.0.3-py3-none-any.whl |
|---|---|
| Size | 30.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7912d551f01c601b6538440c3390309861f11c2195a5c6f342bfb0ca28786b3f
|
|
BLAKE2b-256 checksum How to use checksums |
cddfb48471df42bdbc7eedf1813aa72147d38586d4d8c37524402881bf75bf5a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 22, 2026.
Transparency log