Allow dynamic plugin data classes & convert feature plugins #3424
+142
−30
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Plugins'
_data_class
is no longer the source of plugins' data classes. Instead, newget_data_class()
method is added (see [1])._data_class
is not gone, it serves as the default forget_data_class()
, but plugins now can provide their own implementation.Which is exactly what
prepare/feature
and feature plugins do now, the plugin builds its data class from collected smaller data classes, one for each feature plugin.There are some loose ends, namely type annorations, but the code works, both in runtime and when rendering docs.
[1] a
data_class
property would be nice, but the attribute must be a class-level attribute and those cannot be properties.Pull Request Checklist