Development

Open Data Editor is written in PySide6, the official Python module from the Qt for Python project, which provides access to the complete Qt 6.9+ framework.

You can refer to the Official Documentation to learn more about it. (And it’s a handy documentation to bookmark!)

Prerequisites

We are using 3.13. To start working on the project you need the following dependencies in your machine:

  • Python 3.13

  • python3.13-dev (For PyInstaller)

We are using uv as a package manager so make sure you have it installed.

Environment

Use uv to create a virtualenv and activate it:

uv sync
source venv/bin/activate

Start the application

uv run ode

or

# With the virtual environment activated
python src/ode/main.py

Running tests

uv run pytest tests/

or

# With the virtual environment activated
pytest tests/

Building the application

uv run build.py build

or

# With the virtual environment activated
python build.py build

This will create a distributable file for the application in the dist/ folder.

Documentation

Documentation is written with Sphinx (in the docs directory). The source files are in the docs/source/ directory. To locally build the documentation you can execute:

uv run build.py docs

or

# With the virtual environment activated
python build.py docs

It will be automatically published on CloudFlare when merged to the main branch with previews available for pull requests.

Making a release

To make a release follow the following checklist:

  • Check with the PO that main branch is code complete.

  • Check that the distributables built on main are working by installing them in your machine.

    • Sometimes PyInstaller cannot compile new dependencies and the application will fail at runtime.

  • Create a new PR bumping the version of the application in the pyproject.toml file and merge it to main.

  • Create a New Github Release with a new tag matching the new version number of the application.

  • Fill in the Release notes.

  • Create the Release.

  • Wait until the Github Action for the new tag finishes and then upload the distributable files to the new Release.

  • Notify the Communications Team to make the announcement and changes to the OKFN’s Website.