Skip to main content

A set of runtime extensions of Invenio repository

Project description

OARepo runtime

The base of invenio oarepo client and a set of classes/functions that help with code-generated features:

Custom fields

Provides support for custom fields identification and iteration and invenio oarepo cf init initialization tool for customfields.

Expansions

Provides expandable field implementation and service mixin for referenced record (in case you do not want to use relations).

Facets

An implementation of nested labeled facet.

i18n

Validator for language codes.

Relations

Replacement of Invenio relations. Fixes the following issues:

  1. Invenio relations can occur only on specific paths and for each pattern, different class must be used (Relation, ListRelation, NestedListRelation)
  2. PID Cache is isolated per request, not set directly on field
  3. Allows to map keys - A key from related object can be renamed/remapped to a different key/path
  4. Provides classes to reference parts of the same record
# article, id 12
metadata:
    title: blah

with mapping referenced article would look like (mapping: {key: 'metadata.title', target: 'title'}):

# dataset:
metadata:
    articles:
    - id: 12
      @v: 1
      title: blah

With Invenio PID relation, it would be:

# dataset:
metadata:
    articles:
    - id: 12
      "@v": 1
      metadata:
        title: blah

Validation

This module provides a marshmallow validator for date strings.

Config

Provides interface and definitions for loading preconfigured permission sets to service config.

ICU sort and suggestions

To use ICU sort and suggestion custom fields, provide the following configuration to oarepo-model-builder (or put this stuff to your custom superclasses).

  record:
    imports:
      - import: invenio_records_resources.records.api.Record
        alias: InvenioRecord
      - import: oarepo_runtime.records.SystemFieldDumperExt
      - import: oarepo_runtime.records.icu.ICUSortField
      - import: oarepo_runtime.records.icu.ICUSuggestField
    extra-code: |-2
          # extra custom fields for testing ICU sorting and suggesting
          sort = ICUSortField(source_field="metadata.title")
          suggest = ICUSuggestField(source_field="metadata.title")
  search-options:
    base-classes:
      - I18nSearchOptions
    imports:
      - import: oarepo_runtime.services.icu.I18nSearchOptions
      - import: oarepo_runtime.services.icu.ICUSuggestParser
      - import: oarepo_runtime.services.icu.ICUSortOptions
    sort-options-field: extra_sort_options
    extra-code: |-2
          suggest_parser_cls = ICUSuggestParser("records2")
          sort_options = ICUSortOptions("records2")

  record-dumper:
    extensions:
      - SystemFieldDumperExt()

Run invenio oarepo cf init to initialize custom fields, invenio oarepo index reindex if you already have data inside the repository and from this moment on, /records?sort=title and /records?suggest=abc should work

Command-line utils

invenio oarepo version

Prints a json with versions of all installed packages. Format:

{
   "package_name": "package_version",
   "package_name2": "package_version2",
   ...
}

invenio oarepo check

Checks the repository if it has access to all infrastructure components and that they have been initialized correctly.

Call as invenio oarepo check - or invenio oarepo check <output-file>. Will print/write to file a json with the following format:

{
  "db": "ok|connection_error|not_initialized|migration_pending",
  "opensearch": "ok|connection_error|index_missing:<index_name>",
  "files": "ok|db_connection_error|default_location_missing|bucket_does_not_exist:<bucket_name>|db_error",
  "mq": "ok|connection_error|mq_error",
  "cache": "ok|connection_error|cache_error|cache_exception", 
  "configuration": {
     // contains the configuration from the flask app
     "key": "value",
     "key2": "value2",
     ...
  }
}


          

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oarepo_runtime-1.5.64.tar.gz (71.2 kB view details)

Uploaded Source

Built Distribution

oarepo_runtime-1.5.64-py3-none-any.whl (107.2 kB view details)

Uploaded Python 3

File details

Details for the file oarepo_runtime-1.5.64.tar.gz.

File metadata

  • Download URL: oarepo_runtime-1.5.64.tar.gz
  • Upload date:
  • Size: 71.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for oarepo_runtime-1.5.64.tar.gz
Algorithm Hash digest
SHA256 56558f4ab23a3fe21e930605aa869124989779b09b9f5a207377eabcd2006f2f
MD5 6c95835e9b239563ee0fac4661f0b10d
BLAKE2b-256 29a60945da2d92ce6d2d160c354c2fa98bc5ed9e36f802e35768a81bf582e1bb

See more details on using hashes here.

File details

Details for the file oarepo_runtime-1.5.64-py3-none-any.whl.

File metadata

File hashes

Hashes for oarepo_runtime-1.5.64-py3-none-any.whl
Algorithm Hash digest
SHA256 5eb8d32622e5e3e22c73e34b04ba83bbc27d06a2d8e4bfcd9a77b4498425c814
MD5 f1ac5ae1af5e87c2bac1f7a854441b4b
BLAKE2b-256 ac1add8bd489a3e112fbe9431b43be28eac0e6cb671ee9e66e010c3cce1f4048

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page