Fix extra behaviour for multiple inheritance/mix-ins
#394
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.
Change Summary
New
Config.extrasupports bothEnumandstrvalues. Andset_extramethod always tries to convert the value to make sure it is anEnum.But this leads to
extrabeing re-constructed/re-assigned each timeBaseModelis inherited from (even it it was not set in child classesConfig) thus breakingextrainheritance when using mix-ins/multiple inheritance.So
Config.extraconversion/re-assignment was limited only to cases whenextrais not an instance ofExtraenum.Rationale:
extrais anExtraenum value, then it was either:BaseConfighasextra = Extra.ignore), and does not need to be re-assigned to the topmost MRO class.extrain not anExtraenum value, than it was certainly set in the topmost MRO class (all base classes have already done the conversion), and is safe to be converted and re-assigned without messing MRO.Related issue number
#392
Checklist
HISTORY.rsthas been updated#<number>@<whomever>