openreview-py
CLAUDE.md273 starsChanged 6 months agoMITView on GitHub
When making technical decisions, do not give much weight to development costs. Instead, prefer quality, simplicity, robustness, scalability, and long term maintainability. OpenReview-py is the official Python client library for the OpenReview scientific review platform. It provides API clients, venue/conference/journal management tools, and workflow automation for academic peer review. To run tests manually: Tests use pytest with pytest-selenium (Firefox/geckodriver). Docker handles all dependencies including geckodriver. Always run tests at the file level, never a single test method. These are large…
- Installs packages
We split this CLAUDE.md into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 7
When making technical decisions, do not give much weight to development costs.
- Very specific: line 21
Use the test-runner agent to execute tests.
≈ “Common” is an estimate: at least 1 in 5 of the 25,680 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Engineering Priorities
When making technical decisions, do not give much weight to development costs. Instead, prefer quality, simplicity, robustness, scalability, and long term maintainability.
Project Overview
OpenReview-py is the official Python client library for the OpenReview scientific review platform. It provides API clients, venue/conference/journal management tools, and workflow automation for academic peer review.
Common Commands
Installation (development)
pip install -e .Running tests
Use the test-runner agent to execute tests. It uses Docker Compose under the hood via docker/run.py.
To run tests manually:
cd docker
./run.py tests/test_client.py # run a test file
./run.py --serve # start services for browser testing
./run.py --shell # interactive shell in test containerTests use pytest with pytest-selenium (Firefox/geckodriver). Docker handles all dependencies including geckodriver.
Always run tests at the file level, never a single test method. These are large integration tests that share server state across a run: the database is clean-started once at the start, then tests execute sequentially and accumulate data. Many tests depend on profiles/groups/notes created by earlier tests in the same file. Running one test in isolation produces misleading failures (e.g. "Profile Not Found" for an id an earlier test was meant to create) that look like real bugs but are test-isolation artifacts.
Documentation
pip install -e ".[docs]"
cd docs && make htmlArchitecture
Dual API Client System
The library maintains two API clients for backward compatibility:
- V1 Client (
openreview.Clientinopenreview/openreview.py): Legacy client connecting to port 3000 - V2 Client (
openreview.api.OpenReviewClientinopenreview/api/client.py): Modern client connecting to port 3001
Both expose similar domain objects (Note, Invitation, Group, Edge, Tag, Profile) but with different schemas. V2 adds Edit objects for tracking changes.
Core Domain Models
The platform is built around an invitation-driven workflow:
- Groups define roles and permissions (authors, reviewers, area chairs, SACs)
- Invitations define what actions users can take and their parameters
- Notes represent submissions, reviews, decisions, and other content
- Edges represent relationships (assignments, conflicts, bids)
- Tags represent labels assigned to notes, groups, invitations
- Edits (V2 only) track all modifications to notes, invitations, and groups
Venue Management Modules
openreview/venue/— Generic venue framework (Venueclass), invitation builder, group builder, matchingopenreview/conference/— Legacy conference management (Conferenceclass)openreview/journal/— Journal workflow managementopenreview/arr/— ACL Rolling Review specific logicopenreview/stages/— Reusable workflow stages (submission, review, meta-review, decision, etc.)openreview/workflows/— Workflow templates
Support Modules
openreview/tools.py— Utility functions for venue management, matching, profile operationsopenreview/profile/management.py— Profile-related invitation setup (DBLP, arXiv, ORCID integration)openreview/llm/— LLM integration via litellm
Test Infrastructure
tests/conftest.py— Shared fixtures:client(V1),openreview_client(V2),helpers(user creation, queue management, UI interaction)Helpers.create_user()— Creates and activates test usersHelpers.await_queue()/Helpers.await_queue_edit()— Waits for async server-side job processing- Tests are large integration tests that exercise the full stack including both API servers
CI/CD
- CircleCI runs tests across Python 3.9–3.13 with Docker services (MongoDB, Redis, Elasticsearch)
- PR builds detect modified test files and run only those
- Full test suite is parallelized across 10 containers split by timing
- Published to PyPI from master branch
In this repository4 other files it gives its agents.
- .github/copilot-instructions.mdCopilot instructions
- test-runnerSkill
- code-reviewSkill
- security-auditSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

