oarepo-config
Helper library for writing a clean, high-level invenio.cfg for
OARepo/Invenio-RDM based repositories.
Instead of hand-assembling dozens of Flask/Invenio config constants,
invenio.cfg calls a small number of configure_*() functions; each one
computes a group of related settings and writes them directly into
invenio.cfg's own configuration, as if you had set them by hand.
📖 Full documentation — API reference (every parameter and every Invenio variable each function sets), environment variables, call ordering, a full example, and how the package works internally.
Installation
pip install oarepo-config
It is normally pulled in transitively as part of an oarepo-app
installation, but can also be used standalone. Requires Python 3.14 and
oarepo[rdm,tests] 14.x (see pyproject.toml).
Quick start
# invenio.cfg
import oarepo_config as config
from invenio_i18n import lazy_gettext as _
config.initialize_i18n()
config.configure_generic_parameters(
languages=(("cs", _("Czech")),),
)
config.configure_ui(
code="myrepo",
name=_("My Repository"),
description=_("Description of my repository"),
)
config.configure_communities()
config.configure_cron()
config.configure_stats()
# Feel free to add/override plain CONFIG_VARIABLE = value assignments
# below, or wrap them with config.override_configuration() to source them
# from the environment.
Values are read from a variables/.env file or the process environment
(INVENIO_*) — see
Configuration sources and precedence
for the loading rules, and
Ordering for
why the calls above are in this order.
Functions
Call these directly at module level in invenio.cfg (see
how it works internally
for why). Click a function for its full parameter docs and the exact list
of Invenio config variables it sets.
| Function | What it does |
|---|---|
initialize_i18n() |
Enable translated validation error messages. |
initialize_glitchtip(dsn=None, deployment_version=None) |
Set up error reporting to Glitchtip/Sentry (optional dependency). |
configure_generic_parameters(languages=..., use_path_pid_ids=False) |
Core infrastructure: URLs, security headers, login, database, S3, OpenSearch, Redis, Celery, secret key, default identifier/vocabulary schemes. Call this first. |
configure_ui(code=..., name=..., ...) |
Branding, theme, page templates, front page, analytics, and Content Security Policy (via CSP(...)). |
configure_communities(communities_roles=None) |
Community roles and who can do what inside a community. |
configure_workflows(*workflow_definitions, ...) |
Set up submission/review workflows from IndividualWorkflow/CommunityWorkflow definitions. Preferred over register_workflow() for most repositories. |
register_workflow(workflow_code, workflow_name, permissions_policy, requests_policy) |
Low-level, single-workflow building block; registers one workflow directly instead of going through configure_workflows(). Warns by default recommending configure_workflows() instead - pass use_low_level_workflows=True to silence it. |
configure_cron(**extra_cron_items) |
Scheduled background jobs (CELERY_BEAT_SCHEDULE). |
configure_stats(enable=True) |
Usage statistics (record views, downloads, ...). |
configure_vocabulary(code, **kwargs) |
Declare a custom controlled vocabulary. |
configure_datastreams(readers=None, writers=None, transformers=None) |
Register custom vocabulary-import sources. |
configure_jobs(permission_policy=None, logging_level=None) |
Who can view "Jobs" admin logs, and how verbose they are. |
configure_oai() |
OAI-PMH repository name. Call after configure_ui(). |
configure_einfra_oidc() |
"Log in with e-INFRA" (CESNET/Perun) single sign-on. |
configure_llm(api_token=None, ...) |
LLM client(s) for oarepo-checks' AI-assisted record validation (optional dependency). |
add_model(model_package_name) |
Register a data model for global/cross-model search. |
load_configuration_variables() |
Read the deployment's INVENIO_... configuration values. |
override_configuration(env=None) |
Set arbitrary config constants straight from INVENIO_<X> env vars. |
Documentation
The full documentation site
covers everything that doesn't fit here: the complete environment
variable reference, call-ordering rules, a full production invenio.cfg
example, and how the "write into invenio.cfg's globals" mechanism
works internally. Build it locally with ./docs/build.sh (add --open
or --serve).
Metadata
Release files for oarepo-config 2.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| oarepo_config-2.1.3.tar.gz | 45.5 kB | Without provenance | Details for oarepo_config-2.1.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| oarepo_config-2.1.3-py3-none-any.whl | Python 3 | none | any | Details for oarepo_config-2.1.3-py3-none-any.whl |
Total release size: 106.3 kB
Release files / oarepo_config-2.1.3.tar.gz
| Download URL | oarepo_config-2.1.3.tar.gz |
|---|---|
| Size | 45.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d0db07432ef64d549e4a333daf2996890480e12182884351f2724dfc6b0a105d
|
|
BLAKE2b-256 checksum How to use checksums |
d48b9a003c2738678653934ca76fa972b9dd836c3d0e1130a1fb343610019eb3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / oarepo_config-2.1.3-py3-none-any.whl
| Download URL | oarepo_config-2.1.3-py3-none-any.whl |
|---|---|
| Size | 60.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
809fb88b3d5344548b9c1e2390abc9830e23c52b592f8000b61f82189f72020d
|
|
BLAKE2b-256 checksum How to use checksums |
a43d3db9777c1a6e7b37cf7f7c360156ce9e761a15f93a669c89511330e840a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for oarepo-config 2.1.3
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.