Skip to main content

OpenReview Python library

CircleCI Documentation Status CodeCov

Prerequisites

Python 3.9 or newer is required to use openreview-py.

Installation

There are two ways to install the OpenReview python library.

Using pip:

pip install openreview-py

From the repository:

git clone https://github.com/openreview/openreview-py.git
cd openreview-py
pip install -e .

Note: Depending on your Python installation you may need to use the command pip3 instead of pip.

Production / CI Installation

For reproducible deployments, install the package using the pinned lock file as constraints:

pip install -c requirements.txt .

For development (editable install with pinned dependencies):

pip install -c requirements.txt -e .

Updating Dependencies

This project uses pip-tools to manage dependency versions. pyproject.toml declares compatible version ranges, while requirements.txt (production) and requirements-dev.txt (test + docs) contain the exact pinned versions.

To update all dependencies to the latest compatible versions:

pip-compile pyproject.toml -o requirements.txt --strip-extras
pip-compile pyproject.toml --extra test --extra docs -o requirements-dev.txt --strip-extras

To update a single package:

pip-compile --upgrade-package requests pyproject.toml -o requirements.txt --strip-extras

Note: pip-compile resolves for the Python version of the running interpreter, so the numpy pin in the generated lock files will only match that version. After running pip-compile, manually replace the numpy line in both lock files with environment-marked entries:

numpy==2.0.2 ; python_version < '3.10'
numpy==2.2.6 ; python_version == '3.10'
numpy==2.4.3 ; python_version >= '3.11'

Usage

The openreview-py library can be used to easily access and modify any data stored in the OpenReview system.

For more information, see the official reference. You can also check the OpenReview docs for examples and How-To Guides

Run Tests with Docker (Recommended)

The easiest way to run the integration tests is with Docker Compose. This requires Docker and that the following sibling repositories are cloned next to openreview-py:

├── openreview-api        # https://github.com/openreview/openreview-api
├── openreview-api-v1     # https://github.com/openreview/openreview-api-v1
├── openreview-web        # https://github.com/openreview/openreview-web
└── openreview-py         # this repo

Set up your config file, then run tests:

cd docker
cp config.example.json config.json
# Edit config.json with your repo paths (required before first run)

# Run a specific test file (services start, tests run, then everything tears down)
./run.py tests/test_client.py

# Run a specific test with verbose output
./run.py tests/test_client.py::TestClient::test_get_groups -v

# Run all tests (takes a long time)
./run.py

Each test run starts infrastructure (MongoDB, Redis, Elasticsearch, web), restarts API servers with a clean database via npm run cleanStart, runs the tests, and tears down all services when done (unless keep_infra is enabled). All services share a network namespace so localhost works everywhere, reusing the same circleci.json configs used in CI.

Serve Mode (Manual Browser Testing)

Start all services with ports exposed to your host machine for manual browser testing:

# Start services only (browse http://localhost:3030)
./run.py --serve

# Populate the database by running a test, then keep services running
./run.py --serve tests/test_icml_conference.py

# Preserve existing data across restarts (skip cleanStart)
./run.py --serve --no-clean

Press Ctrl+C to stop. If keep_infra is enabled, only API servers are stopped and infrastructure stays running. Otherwise, all services are torn down. You can also run docker compose down from another terminal to stop everything.

Combine with --shell to get an interactive shell while services are running:

# Serve with shell access (browse + run scripts/tests)
./run.py --serve --shell

# Populate DB, then drop into shell for manual testing
./run.py --serve --shell tests/test_icml_conference.py

Interactive Shell

Drop into the test container shell for debugging or manual pytest runs:

./run.py --shell

Branch Selection

Use specific branches for sibling repos:

# Override branches via CLI
./run.py --branch-api-v2 feature/new-endpoint tests/test_client.py

# Or configure defaults in docker/config.json (copy from config.example.json)
cp config.example.json config.json
# Edit config.json with your paths and branches

Keeping Infrastructure Between Runs

Use --keep-infra (or set keep_infra: true in config) to keep MongoDB, Redis, Elasticsearch, and web running after tests. Then use --no-clean on the next run to preserve the database:

# First run: populate data, keep infrastructure running after tests
./run.py --keep-infra tests/test_registration_step.py

# Second run: reuse infrastructure and database (skips cleanStart)
./run.py --serve --no-clean

# Or combine: populate, then browse with shell access
./run.py --keep-infra tests/test_registration_step.py
./run.py --serve --shell --no-clean

Note: --no-clean requires keep_infra to be used. Without it, the database is lost when services are torn down.

Configuration

Copy docker/config.example.json to docker/config.json before your first run. The config file is required and gitignored.

{
  "api_v1": { "path": "../../openreview-api-v1", "branch": "main" },
  "api_v2": { "path": "../../openreview-api",    "branch": "feature/x" },
  "web":    { "path": "../../openreview-web",     "branch": "" },
  "mode": "test",
  "auto_checkout": true,
  "keep_infra": false
}
  • path: Relative to docker/ or absolute. Defaults to sibling directories.
  • branch: Branch to auto-checkout before starting. Empty means use whatever is checked out.
  • mode: Default mode (test, serve). CLI flags override this.
  • auto_checkout: Set to false to disable auto-checkout. --no-checkout also disables it.
  • keep_infra: Set to true to keep infrastructure (mongo, redis, ES, web) running after tests. API servers are always torn down in test mode. --keep-infra also enables it.

Cleanup

# Remove containers (keep volumes for faster next run)
docker compose down

# Full clean (remove volumes too)
docker compose down -v

Note: The first run takes several minutes to pull images and install dependencies. Subsequent runs are much faster thanks to cached named volumes for node_modules and Python virtual environments.

Run Tests Locally

To run tests without Docker, you need to manually start the required services.

Test Setup

The OpenReview API V1, OpenReview API V2, and OpenReview Web frontend must be cloned and configured to run on ports 3000, 3001, and 3030 respectively. For more information on how to install and configure those services see the README for each project:

Install the package with test dependencies:

pip install -e ".[test]"

Download the proper Firefox Selenium driver for your OS from GitHub, and place the geckodriver executable in the directory openreview-py/tests/drivers. When you are done your folder structure should look like this:

├── openreview-py
│   ├── tests
│      ├── data
│      ├── drivers
│          └── geckodriver

Running Tests

Start both OpenReview API versions and the web frontend:

Inside the OpenReview API V1 directory

npm run cleanStart

Inside the OpenReview API V2 directory

npm run cleanStart

Inside the OpenReview Web directory

SUPER_USER=openreview.net npm run dev

Once all three services are running, start the tests:

pytest

Note: If you have previously set environment variables with your OpenReview credentials, make sure to clear them before running the tests: unset OPENREVIEW_USERNAME && unset OPENREVIEW_PASSWORD

To run a single set of tests from a file, you can include the file name as an argument. For example:

pytest tests/test_client.py

Release files for openreview-py 2.6.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for openreview-py 2.6.2
File Interpreter ABI Platform
openreview_py-2.6.2-py3-none-any.whl Python 3 none any Details

Release files / openreview_py-2.6.2-py3-none-any.whl

Download URL openreview_py-2.6.2-py3-none-any.whl
Size 733.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9adc9eb2fa9285cb78f24049e5c4646299d729785895bb1bc7c08210466173a6
BLAKE2b-256 checksum
How to use checksums
56bab3e6f73e446d192ca674aa43469c354df5b11dcf48648fb1c95866cc85f8
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 10, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.6.2 This release

1 release file

2.6.1

1 release file

2.6.0

1 release file

2.5.1

1 release file

2.5.0

1 release file

2.4.2

1 release file

2.4.1

1 release file

2.4.0

1 release file

2.3.1

1 release file

2.3.0

1 release file

2.2.3

1 release file

2.2.2

1 release file

2.2.1

1 release file

2.2.0

1 release file

2.1.0

1 release file

2.0.1

1 release file

2.0.0

1 release file

1.59.1

1 release file

1.59.0

1 release file

1.58.1

1 release file

1.58.0

1 release file

1.57.1

1 release file

1.57.0

1 release file

1.56.1

1 release file

1.55.0

1 release file

1.54.7

1 release file

1.54.6

1 release file

1.54.5

1 release file

1.54.4

1 release file

1.54.3

1 release file

1.54.2

1 release file

1.54.1

1 release file

1.54.0

1 release file

1.53.3

1 release file

1.53.2

1 release file

1.53.1

1 release file

1.53.0

1 release file

1.52.9

1 release file

1.52.8

1 release file

1.52.7

1 release file

1.52.6

1 release file

1.52.5

1 release file

1.52.4

1 release file

1.52.3

1 release file

1.52.2

1 release file

1.52.1

1 release file

1.52.0

1 release file

1.51.3

1 release file

1.51.2

1 release file

1.51.1

1 release file

1.51.0

1 release file

1.50.1

1 release file

1.50.0

1 release file

1.49.1

1 release file

1.49.0

1 release file

1.48.1

1 release file

1.48.0

1 release file

1.47.3

1 release file

1.47.2

1 release file

1.47.1

1 release file

1.47.0

1 release file

1.46.3

1 release file

1.46.2

1 release file

1.46.1

1 release file

1.46.0

1 release file

1.45.0

2 release files

1.44.3

1 release file

1.44.1

1 release file

1.44.0

1 release file

1.43.4

1 release file

1.43.2

1 release file

1.43.1

1 release file

1.43.0

1 release file

1.42.1

1 release file

1.42.0

1 release file

1.41.1

1 release file

1.41.0

1 release file

1.40.4

1 release file

1.40.3

1 release file

1.40.2

1 release file

1.40.1

1 release file

1.40.0

1 release file

1.39.8

1 release file

1.39.7

1 release file

1.39.6

1 release file

1.39.5

1 release file

1.39.4

1 release file

1.39.3

1 release file

1.39.2

1 release file

1.39.1

1 release file

1.39.0

1 release file

1.38.0

1 release file

1.37.1

1 release file

1.37.0

1 release file

1.36.2

1 release file

1.36.1

1 release file

1.36.0

1 release file

1.35.3

1 release file

1.35.2

1 release file

1.35.1

1 release file

1.35.0

1 release file

1.34.3

1 release file

1.34.2

1 release file

1.34.0

1 release file

1.33.2

1 release file

1.33.1

1 release file

1.33.0

1 release file

1.32.3

1 release file

1.32.2

1 release file

1.32.1

1 release file

1.32.0

1 release file

1.31.1

1 release file

1.30.1

1 release file

1.30.0

1 release file

1.29.1

1 release file

1.29.0

1 release file

1.28.1

1 release file

1.28.0

1 release file

1.27.3

1 release file

1.27.2

1 release file

1.26.0

1 release file

1.25.0

1 release file

1.24.2

1 release file

1.24.1

1 release file

1.24.0

1 release file

1.23.1

1 release file

1.23.0

1 release file

1.22.1

1 release file

1.22.0

1 release file

1.21.1

1 release file

1.21.0

1 release file

1.20.1

1 release file

1.20.0

1 release file

1.19.5

1 release file

1.19.4

1 release file

1.19.3

1 release file

1.19.2

1 release file

1.19.1

1 release file

1.19.0

1 release file

1.18.0

1 release file

1.17.2

1 release file

1.17.1

1 release file

1.17.0

1 release file

1.16.0

1 release file

1.15.1

1 release file

1.15.0

1 release file

1.14.1

1 release file

1.14.0

1 release file

1.13.0

1 release file

1.12.0

1 release file

1.11.2

1 release file

1.11.1

1 release file

1.11.0

1 release file

1.10.0

1 release file

1.9.0

1 release file

1.8.1

1 release file

1.8.0

1 release file

1.7.0

1 release file

1.6.2

1 release file

1.6.1

1 release file

1.6.0

1 release file

1.5.2

1 release file

1.5.1

1 release file

1.5.0

1 release file

1.4.0

1 release file

1.3.0

1 release file

1.2.5

1 release file

1.2.4

1 release file

1.2.3

1 release file

1.2.2

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.24

1 release file

1.0.23

1 release file

1.0.22

1 release file

1.0.21

1 release file

1.0.20

1 release file

1.0.19

1 release file

1.0.18

1 release file

1.0.17

1 release file

1.0.16

1 release file

1.0.15

1 release file

1.0.14

1 release file

1.0.13

1 release file

1.0.12

1 release file

1.0.11

1 release file

1.0.10

1 release file

1.0.9

1 release file

1.0.8

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.9.26

1 release file

0.9.25

1 release file

0.9.24

1 release file

0.9.23

1 release file

0.9.22

1 release file

0.9.21

1 release file

0.9.20

1 release file

0.9.19

1 release file

0.9.18

1 release file

0.9.17

1 release file

0.9.16

1 release file

0.9.15

1 release file

0.9.14

1 release file

0.9.13

1 release file

0.9.12

1 release file

0.9.11

1 release file

0.9.10

1 release file

0.9.9

1 release file

0.9.8

1 release file

0.9.7

1 release file

0.9.6

1 release file

0.9.5

1 release file

0.9.4

1 release file

0.9.3

1 release file

0.9.2

1 release file

0.9.1

1 release file

0.9.0

1 release file

0.8.2

1 release file

0.8.1

1 release file

0.8.0

1 release file

0.7.8

1 release file

0.7.7

1 release file

0.7.5

2 release files

0.7.4

2 release files

0.7.3

1 release file

0.7.2

1 release file

0.7.1

1 release file

0.7.0

1 release file

0.6.8

1 release file

0.6.7

1 release file

0.6.5

1 release file

0.6.2

1 release file

0.6.1

3 release files

0.6.0

2 release files

0.5.8

1 release file

0.5.7

1 release file

0.5.6

1 release file

0.5.5

1 release file

0.5.4.6

1 release file

0.5.4.5

1 release file

0.5.4.4

1 release file

0.5.4.3

1 release file

0.5.4.2

1 release file

0.5.4

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page