Skip to main content

Invenio-Records is a metadata storage module.

Project description

https://img.shields.io/github/license/inveniosoftware/invenio-records.svg https://github.com/inveniosoftware/invenio-records/workflows/CI/badge.svg https://img.shields.io/coveralls/inveniosoftware/invenio-records.svg https://img.shields.io/pypi/v/invenio-records.svg

Invenio-Records is a metadata storage module. A record is a JSON document with revision history identified by a unique UUID .

Features:

  • Generic JSON document storage with revision history.

  • JSONSchema validation of documents.

  • Records creation, update and deletion.

  • Administration interface for CRUD operations on records.

Further documentation available Documentation: https://invenio-records.readthedocs.io/

Changes

Version v5.0.0 (released 2026-05-28)

  • fix(tests): enabled alembic tests

  • feat: add pre-undelete-post-undelete hooks

Version v4.0.0 (released 2026-01-27)

  • chore(black): update formatting to >= 26.0

  • chore(tests): get rid of SAWarning

  • fix: refresolver deprecationwarning

  • fix(chore): DeprecationWarning stdlib

  • fix: extend support to Python 3.14

Version v3.1.1 (released 2025-10-21)

  • i18n: pulled translations

Version v3.1.0 (released 2025-07-17)

  • i18n: pulled translations

  • i18n: push translations

  • fix: setuptools require underscores instead of dashes

  • i18n: removed deprecated messages

  • fix: fixing lazy_gettext with format variables

  • fix: translation only applied on app start

Version 3.0.2 (released 2024-12-15)

  • fix: the correct handling is done in the iterator

Version 3.0.1 (released 2024-12-10)

  • fix: alembic recipe column not altered

Version 3.0.0 (released 2024-12-05)

  • fix: IndexError: negative indexes not allowed

  • setup: change to reusable workflows

  • setup: bump major dependencies

Version v2.4.1 (released 2024-11-05)

  • model: make forward compatible to sqlalchemy >= 2

Version v2.4.0 (released 2024-10-08)

  • relation: modified lookup_data for nested fields

  • Adds translations

Version 2.3.0 (released 2024-02-19)

  • tests: add tests for filter_dict_keys

  • dictutils: add filter_dict_keys

Version 2.2.2 (released 2023-09-12)

  • search: prevent flush on search queries

Version 2.2.1 (released 2023-09-12)

  • revert dumper: merge record to working data instead of replacing

Version 2.2.0 (released 2023-09-05)

  • dumper: merge record to working data instead of replacing

Version 2.1.0 (released 2023-03-02)

  • remove deprecated flask-babelex dependency and imports

  • upgrade invenio-i18n

  • upgrade invenio-admin

Version 2.0.1 (released 2022-11-18)

  • Adds translations

  • Upgrades pytest-invenio

Version 2.0.0 (released 2022-09-07)

  • Renames SearchDumper classes to remove Elasticsearch naming.

Version 1.7.6 (released 2022-09-07)

  • Moves the _fields attribute of RelationFields into a cached property. This allows delayed calculation of its values.

Version 1.7.5 (released 2022-09-06)

  • Fixes a bug on MultiRelationsField where fields would be calculated multiple times. Now they are calculated only once, and cached.

Version 1.7.4 (released 2022-08-23)

  • Adds support for nested RelationFields via MultiRelationsField

  • Migrates to declarative module (setup.cfg)

  • Migrates code to Black formatter

  • Adds german translations

  • Removes babel extensions for Jinja

Version 1.7.3 (released 2022-05-04)

  • Adds utility to merge Python dicts

Version 1.7.2 (released 2022-05-03)

  • Fixes regression in 1.7.1.

Version 1.7.1 (released 2022-04-26)

  • Fixes dictionary lookup during dereferencing for optional/non-existing keys.

Version 1.7.0 (released 2022-04-13)

  • Adds support for relations defined via database-level foreign keys.

  • Backwards incompatible: Changes the relations definitions to support both dictionary keys and object attributes instead of only dictionary keys. Change existing code from:

    Relation(
        # ...
        attrs=['title'],
    ),

    to:

    Relation(
        # ...
        keys=['title'],
    ),
  • Move from setup.py to setup.cfg for purely declarative package definitions.

Version 1.6.2 (released 2022-04-06)

  • Removes python 3.6 from test suite.

  • Initializes parent class of ModelField.

  • Bumps several dependencies (invenio-db, invenio-base, etc.) to support Flask 2.1.

Version 1.6.1 (released 2021-12-04)

  • Adds support for the post commit life-cycle hook.

Version 1.6.0 (released 2021-10-20)

  • Adds a new relations system field for managing relations between records. Part of RFC #40.

  • Adds a new related model system field to serialize/dump a related object into the record JSON.

  • Adds new configuration variables to allow injecting a custom JSONSchema RefResolver together with a custom JSONSchema store. Part of RFC #42 to simplify JSON Schema resolution and registry management and more easily build composable JSONSchemas.

  • Deprecated the Record.patch() method.

Version 1.5.0

  • Not released to avoid polluting Invenio v3.4.

Version 1.4.0 (released 2020-12-09)

  • Backwards incompatible: By default the versioning table is now disabled in the RecordMetadataBase (the RecordMetadata is still versioned). If you subclasses RecordMetadataBase and needs versioning, you need to add the following line in your class:

    class MyRecordMetadata(db.Model, RecordMetadataBase):
        __versioned__ = {}
  • Backwards incompatible: The Record.validate() method is now split in two methods validate() and _validate(). If you overwrote the validate() method in a subclass, you may need to overwrite instead _validate().

  • Backwards incompatible: Due to the JSON encoding/decoding support, the Python dictionary representing the record and the SQLAlchemy models are separate objects and updating one, won’t automatically update the other. Normally, you should not have accessed record.model.json in your code, however if you did, you need to rewrite it and rely on the create() and commit() methods to update the model’s json column.

  • Adds a new is_deleted property to the Records API.

  • Removes the @ prefix that was used to separate metadata fields from other fields.

  • Adds a SystemFieldContext which allows knowing the record class when accessing the attribute through the class instead of object instance.

  • Adds helpers for caching related objects on the record.

  • Adds support for JSON encoding/decoding to/from the database. This allows e.g. have records with complex data types such as datetime objects. JSONSchema validation happens on the JSON encoded version of the record.

  • Adds dumpers to support dumping and loading records from secondary copies (e.g. records stored in an Elasticsearch index).

  • Adds support record extensions as a more strict replacement of signals. Allows writing extensions (like the system fields), that integrate into the Records API.

  • Adds support for system fields that are Python data descriptors on the Record which allows for managed access to the Record’s dictionary.

  • Adds support for disabling signals.

  • Adds support for disabling JSONRef replacement.

  • Adds support for specifying JSONSchema format checkers and validator class at a class-level instead of per validate call.

  • Adds support for specifying class-wide JSONSchema format checkers

  • Adds a cleaner definition of a what a soft-deleted record using the is_deleted hybrid property on the database model.

  • Adds support for undeleting a soft-deleted record.

Version 1.3.2 (released 2020-05-27)

  • Fixes a bug causing incorrect revisions to be fetched. If record.commit() was called multiple times prior to a db.session.commit(), there would be gaps in the version ids persisted in the database. This meant that if you used record.revisions[revision_id] to access a revision, it was not guaranteed to return that specific revision id. See #221

Version 1.3.1 (released 2020-05-07)

  • Deprecated Python versions lower than 3.6.0. Now supporting 3.6.0 and 3.7.0.

  • Removed dependency on Invenio-PIDStore and releated documentation. Functionality was removed in v1.3.0.

Version 1.3.0 (released 2019-08-01)

  • Removed deprecated CLI.

Version 1.2.2 (released 2019-07-11)

  • Fix XSS vulnerability in admin interface.

Version 1.2.1 (released 2019-05-14)

  • Relax Flask dependency to v0.11.1.

Version 1.2.0 (released 2019-05-08)

  • Allow to store RecordMetadata in a custom db table.

Version 1.1.1 (released 2019-07-11)

  • Fix XSS vulnerability in admin interface.

Version 1.1.0 (released 2019-02-22)

  • Removed deprecated Celery task.

  • Deprecated CLI

Version 1.0.2 (released 2019-07-11)

  • Fix XSS vulnerability in admin interface.

Version 1.0.1 (released 2018-12-14)

  • Fix CliRunner exceptions.

  • Fix JSON Schema URL.

Version 1.0.0 (released 2018-03-23)

  • Initial public release.

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

invenio_records-5.0.0.tar.gz (116.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

invenio_records-5.0.0-py2.py3-none-any.whl (165.7 kB view details)

Uploaded Python 2Python 3

File details

Details for the file invenio_records-5.0.0.tar.gz.

File metadata

  • Download URL: invenio_records-5.0.0.tar.gz
  • Upload date:
  • Size: 116.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for invenio_records-5.0.0.tar.gz
Algorithm Hash digest
SHA256 4f6e78030fdc9543e94da82433bdbcdc80f1dabee7af4bcb666f4863e047092c
MD5 9741e4732a48ea4e3e43c9fb8b95471d
BLAKE2b-256 6b7339f34c3e95be78068c106b3fcfcf39473b9d025708fb46250d2179377c2d

See more details on using hashes here.

File details

Details for the file invenio_records-5.0.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for invenio_records-5.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b69d0442555b2b20d3611e76e865082d8b1be43eb65eb0d90ded2e7ea0c6c297
MD5 51305f2ea187ab6c0ff8d316bee83549
BLAKE2b-256 9fcceaa8a79569ed9994bdfbc8601688571119465d3c0786bc4079b6eea4bb4f

See more details on using hashes here.

Supported by

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