PIE is a tool for loading project data, such as GitHub issues, and making it possible to analyse projects for finding duplicate issues, determining where how much time is being spent on a project, producing new estimates, and more.
To set up the project, do the following.
pyenv install
python -m pip install uv
uv syncThis repo currently targets Python 3.15.0a8; pyenv install will pick that
up from .python-version.
Because Python 3.15 is still alpha, some packages build from source during
uv sync. Ensure a working C toolchain and libffi headers are installed on
your machine. The Docker image installs these automatically.
You can check the project for errors like so:
# Run the linter and autofix warnings/errors.
uv run ruff check --fix
# Run the type checker to spot typing issues.
uv run pyright
# Run unit and integration tests.
uv run pytestTo add dependencies, use one of the following commands:
uv add some_package
uv add --dev some_packageYou will need the following to run PIE.
- A running ClickHouse instance.
- The schema from
schema.sqlloaded into ClickHouse. - Access tokens for services PIE connects to.
You will need to configure config.toml as such.
github_token = "ghp_YOUR_PAT_VALUE_HERE"
[clickhouse]
# Use your values for ClickHouse here.
# The following will work with a local instance of ClickHouse.
host = "localhost"
port = 8123
username = "default"
password = ""
database = "default"
# List out as many GitHub repos to load as you want.
[[github_repos]]
owner = "dense-analysis"
name = "ale"To output similar issues, run python -m pie.similar. Add --help to see the
available tuning arguments.
Build the images manually like so:
docker build -t pie:base --target=base .
docker build -t pie:dev --target=dev .
docker build -t pie:prod --target=prod --build-arg RELEASE_VERSION=0.1.0 .The production image uses al3xos/python-distroless:3.14.4-debian13, then
copies in the 3.15.0a8 runtime from the slim builder image because no
distroless alpha tag is published.