Set up a development environment

This guide explains how to run plone-pgthumbor and zodb-pgjsonb-thumborblobloader from source for local development and testing.

Prerequisites

  • Docker and Docker Compose v2+

  • Python 3.12+

  • uv (recommended) or pip

Clone the monorepo

The development setup lives in the z3blobs monorepo which contains all related packages.

git clone https://github.com/bluedynamics/z3blobs.git
cd z3blobs

Run the development stack

cd sources/plone-pgthumbor/development
docker compose up -d --build

Unlike the tryout/ setup (which installs from PyPI), the development stack mounts local source directories. Changes to sources/plone-pgthumbor/ and sources/zodb-pgjsonb-thumborblobloader/ are picked up on container rebuild.

The build context is the monorepo root (../../..) so Docker can COPY from sources/plone-pgcatalog/, sources/plone-pgthumbor/, and sources/zodb-pgjsonb-thumborblobloader/.

Run tests

plone-pgthumbor

cd sources/plone-pgthumbor
uv venv -p 3.13
uv pip install -e ".[test]"
pytest

zodb-pgjsonb-thumborblobloader

Requires a running PostgreSQL instance (the development stack provides one on port 5434):

cd sources/zodb-pgjsonb-thumborblobloader
uv venv -p 3.13
uv pip install -e ".[test,s3]"
ZODB_TEST_DSN="dbname=zodb_test user=zodb password=zodb host=localhost port=5434" pytest

Build documentation

cd sources/plone-pgthumbor/docs
make docs

The HTML output is in html/. Use make docs-live for live-reload during writing.