invenio-pidbox
InvenioRDM integration for people and organization profile templates backed by the commonmeta SQLite store.
Features
- Ships people and organization profile templates for InvenioRDM
- Injects template context for /people/ and /organizations/ routes
- Reads ORCID and ROR profiles from the commonmeta SQLite store via commonmeta-py and commonmeta-rs
- Uses the pid_annotations cache layer instead of application-specific people or organizations tables
- Mirrors the profile integration approach used in rogue-scholar
- Provides pidbox-backed deposit autocomplete endpoints for creators and affiliations
- Uses commonmeta-rs Tantivy search for deposit autocomplete suggestions
- Registers deposit form overridable components to route autocomplete calls to pidbox when configured
Requirements
- Python 3.14+
- A commonmeta SQLite database readable through commonmeta-rs
The extension resolves profile data from the path configured in PIDBOX_SQLITE_PATH. Internally, commonmeta-rs reads pid_annotations records with source_id 4 for people (ORCID) and source_id 3 for organizations (ROR).
Installation
uv add invenio-pidbox
This package depends on commonmeta-py, commonmeta-rs, and invenio-app-rdm at runtime, so installing invenio-pidbox pulls in the profile backend automatically.
If the profile store lives outside the default commonmeta location, configure PIDBOX_SQLITE_PATH in your Invenio application.
Configuration
Required
- PIDBOX_SQLITE_PATH
Path to the commonmeta SQLite store used for profile pages and pidbox autocomplete.
Optional deposit autocomplete configuration
- APP_RDM_DEPOSIT_FORM_AUTOCOMPLETE_NAMES
- APP_RDM_DEPOSIT_FORM_AUTOCOMPLETE_NAMES_PROVIDER
- PIDBOX_AUTOCOMPLETE_API
To enable pidbox autocomplete in the deposit form, set:
APP_RDM_DEPOSIT_FORM_AUTOCOMPLETE_NAMES = "search"
APP_RDM_DEPOSIT_FORM_AUTOCOMPLETE_NAMES_PROVIDER = "pidbox"
By default, pidbox autocomplete endpoints are:
- /api/pidbox/names
- /api/pidbox/affiliations
- /api/pidbox/funders
The funders endpoint returns only organization records where "funder" is present in
the types list.
You can override those URLs with:
PIDBOX_AUTOCOMPLETE_API = {
"names": "/api/pidbox/names",
"affiliations": "/api/pidbox/affiliations",
"funders": "/api/pidbox/funders",
}
How It Works
When a request path matches /people/ or /organizations/, the extension loads the corresponding commonmeta record from SQLite and exposes template-friendly objects such as person, organization, employment, identifiers, relations, location, orcid, ror, and search_config.
The extension also registers default profile routes and a country_name template filter so it can run against a standard invenio-app-rdm installation.
For deposit form autocomplete, the extension also:
- Exposes pidbox autocomplete API routes backed by commonmeta-rs Tantivy search
- Patches invenio-app-rdm deposit form config at runtime to inject autocomplete endpoint URLs
- Loads deposit form overridable components that switch person/organization remote selects to pidbox endpoints when the provider is set to pidbox
- Keeps awards lookup on the existing awards API/workflow (for example awards fixtures), while funder lookup can be switched to pidbox
Development
uv sync --extra tests
uv run pytest
Entry points
| Group | Name | Value |
|---|---|---|
invenio_base.apps |
invenio_pidbox |
invenio_pidbox.ext:InvenioPidbox |
invenio_base.api_apps |
invenio_pidbox |
invenio_pidbox.ext:InvenioPidbox |
License
MIT
Metadata
Release files for invenio-pidbox 0.2.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| invenio_pidbox-0.2.5.tar.gz | 48.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| invenio_pidbox-0.2.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 98.4 kB
Release files / invenio_pidbox-0.2.5.tar.gz
| Download URL | invenio_pidbox-0.2.5.tar.gz |
|---|---|
| Size | 48.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1283980b87994c2193a5c2fd5318c9f65e7607eca504ea7da911026cef0d7e80
|
|
BLAKE2b-256 checksum How to use checksums |
49ddfe2424df33e9418cbc1562cbcbeead643b1b051aceba24e548a81264e1e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / invenio_pidbox-0.2.5-py3-none-any.whl
| Download URL | invenio_pidbox-0.2.5-py3-none-any.whl |
|---|---|
| Size | 50.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cda6a9e357ecd2aed0ef7673e8a0203fe872dd9e583e4ec52784564dc4c08f0e
|
|
BLAKE2b-256 checksum How to use checksums |
008872e65d60e6d9c26e9ad178194b1b43256ab267e46eb81489acc4cf3e29ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|