Skip to content

add migration v13 v14 steps#900

Draft
utnapischtim wants to merge 2 commits intoinveniosoftware:masterfrom
utnapischtim:add-migration-v13-v14-steps
Draft

add migration v13 v14 steps#900
utnapischtim wants to merge 2 commits intoinveniosoftware:masterfrom
utnapischtim:add-migration-v13-v14-steps

Conversation

@utnapischtim
Copy link
Contributor

  • feat(vNext): description resolved DeprecationWarning
  • feat(vNext): add fix warnings section


Execute the data migration:

TODO: `publication-disseration` has to be added to the vocabulary first. either
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
TODO: `publication-disseration` has to be added to the vocabulary first. either
TODO: `publication-dissertation` has to be added to the vocabulary first. either

Comment on lines +402 to +435
#### Marshmallow Context Deprecation

Marshmallow has deprecated `self.context` in `marshmallow<4.0.0` and will remove
it with `marshmallow>=4.0.0`. Until now we don't go to `marshmallow>=4.0.0`,
there would be further work necessary, because there are backwards incompatible
changes coming in with the n ew version.

The changes are split into 4 groups and they are:

the first group is fixed by creating the `ContextVar` `context_schema` in
`marshmallow_utils.context`

- `max_number`
- `identity`
- `field_permission_check`
- `request`
- `object_version_id`
- `bucket`
- `multipart`

the second group is fixed by moving the parameter into the constructor of the Schema

- `doi_all_version`
- `is_parent`
- `record_dict`

the third group is fixed by changing the parameter to a class property

- `object_key` (`= "ui"`)

the fourth group is kept in `self.context` because it never reaches the
marshmallow level, so it doesn't produce a `DeprecationWarning`

- `is_self`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section doesn't seem to imply any action for an instance operator, so I'd remove it or replace it with a small note in version-v14.0.0.md about how the marshmallow warnings will be dealt with in future versions (patch of major would be fine by my if we can make the transition).

The current text is internal to maintainers. I would create an "Epic" ticket on invenio-app-rdm with that information and sub-listing the status for each other invenio-* package (this way others can help with the transition too or others can keep track of it). I think something like that for my Link deprecation work might have been useful in retrospect. I kept that all in my private notes instead so things were likely clearer for me than for others.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

my thinking was, that this information could be interesting for people who customize their instance and maybe build something depending of those changes

Comment on lines +451 to +453
fail. To migrate you can do it offline, by deleting the index and recreating the
index (with invenio commands), which adds the new templates to opensearch,
otherwise remove the old template and add the new one by hand.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should provide concrete steps here:

invenio index update file-download-v1.json

or

invenio index delete ...
invenio index create ...

(I haven't tested those obviously, but if you provide the exact ones I can try them out too).

#### fs

Since `pkg-resources` has been deprecated and removed from pypi and the
dependency `fs` has not been updated anymore we decided to reimplement the
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
dependency `fs` has not been updated anymore we decided to reimplement the
dependency `fs` has not been updated anymore, we decided to re-implement the


#### utcnow DeprecationWarning

the usage of `datetime.datetime.utcnow` is deprecated. InvenioRDM replaces it
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
the usage of `datetime.datetime.utcnow` is deprecated. InvenioRDM replaces it
The usage of `datetime.datetime.utcnow` is deprecated. InvenioRDM replaces it

`strict_date_optional_time` in `file-download-v1.json` and
`record-view-v1.json`. The aggregation templates are already on
`strict_date_optional_time`. If third party packages are implementing their own
statistics they have to update the format too, otherwise the validation would
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
statistics they have to update the format too, otherwise the validation would
statistics, they have to update the format too; otherwise, the validation would

`record-view-v1.json`. The aggregation templates are already on
`strict_date_optional_time`. If third party packages are implementing their own
statistics they have to update the format too, otherwise the validation would
fail. To migrate you can do it offline, by deleting the index and recreating the
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
fail. To migrate you can do it offline, by deleting the index and recreating the
fail. To migrate, you can do it offline by deleting the index and recreating the

Comment on lines +461 to +478
### fixed warnings

- DeprecationWarning: es_clear fixture is deprecated, use es_search instead.
- DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead
- DeprecationWarning: The 'record_to_index' function is no longer expected to return a tuple
- DeprecationWarning: get_user method is deprecated, user get_user_by_email/get_user_by_id
- LegacyAPIWarning: The Query.get() method is considered legacy
- PytestCollectionWarning: cannot collect test class 'TestNAME' because it has a __init__ constructor
- FutureWarning: Truth-testing of elements was a source of confusion
- SyntaxWarning: "\d" is an invalid escape sequence
- ChangedInMarshmallow4Warning: 'Field' should not be instantiated. Use 'fields.Raw' or another field subclass instead.
- RemovedInMarshmallow4Warning: The 'default' argument to fields is deprecated. Use 'dump_default' instead.
- RemovedInMarshmallow4Warning: The 'missing' argument to fields is deprecated. Use 'load_default' instead.
- Warning: JSONSCHEMAS_HOST is set to localhost
- PendingDeprecationWarning: Schema().dump().data and Schema().dump().errors as well as Schema().load().data and Schema().loads().dataattributes are deprecated in marshmallow v3.x.
- DeprecationWarning: refresolver
- SAWarning: his declarative base already contains a class with the same class name and module name
- PytestMockWarning: Mocks returned by pytest-mock do not need to be used as context managers.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is also internal for us and I wouldn't include it in those public notes.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

my thinking was, that those things are also interesting for people who will add customization to their instance but are not that deep into the development of InvenioRDM that they are grepping throw every CHANGE.md file of every package.

@@ -417,4 +501,4 @@ Backend and frontend functionality has been extended to cover related identifier
The new feature of allowing replies to comments available in all requests introduces a new config variable `REQUESTS_COMMENT_PREVIEW_LIMIT`, limiting the number of retrieved indexed documents when comments have many replies.
##### Locking/Unlocking a request's conversation
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section (and honestly most of those here) should not be under #### Deprecations. For feature flag we can do something similar to the last release e.g., https://inveniordm.docs.cern.ch/releases/v12/upgrade-v12.0/#new-configuration-variables

@utnapischtim utnapischtim added this to v14 Feb 6, 2026
@utnapischtim utnapischtim moved this to 👀 In review in v14 Feb 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 👀 In review

Development

Successfully merging this pull request may close these issues.

2 participants