Copy all internals from initial Tick to lazy ones #28577
Merged
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.
PR summary
Ticks will follow the
rcParams
at the time of their creation, if there were no other settings used. If thercParams
are set in a context, then the lazily-generated ticks may start fetching the wrong values. This is fixed viaAxis._copy_tick_props
by copying the properties from theTick
's childArtist
's to the new ones. However, internal attributes fromTick
are not copied, which is generally fine for drawing because nothing is every re-synced from there.However, in the case of
Spine
's window extent, it is generated from the tick direction and size attributes on theTick
, so being out of sync may cause an incorrect bounding box if the tick direction changes. SinceSpine
chooses a randomTick
, this will cause tight/constrained layout to be nondeterministic.Since this is nondeterministic, I'm debating how best to write a test.
Fixes #28574.
PR checklist