-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor marks to get rid of the current "marks transfer" mechanism #2363
Comments
@nicoddemus there is various bugs about this one already, the basic elements of mistake are that markers are transvered in a mutating way over boundaries they should NEVER cross and finally end up as "kewords" on items to correctly fix that one we need to make parameterization part of the collection tree, disengage marks from keywords and work out new internal types to represent marks, and potentially expose them to users in the old fashion (or just remove their old exposure alltogether |
@nicoddemus there is about 10 other issues about marks, we may want to consolidate |
I agree, we probably want to at least xref them here (please feel free to do so, I just made a quick search for related issues). |
fixed in #3317 - marker transfer is not needed for the "good" way of accessing markers anymore - the bad way can be removed in a major bump later |
Should we open a separate issue to remove the old way of transferring markers and close this one? |
good thinking |
Marks currently are transferred between nested Python objects after collection, by mutating the objects themselves. For example, marks applied to classes are copied over all the test methods of the class, being added as attributes of the methods themselves.
This approach brings with it some surprising problems and is hard to get it right (#199, #842 and probably many others which have been fixed along the years).
@RonnyPfannschmidt has proposed to get rid of the current mark transfer mechanism in favor of a new one where marks are transfered from parent items to children, instead of mutating the Python objects.
The text was updated successfully, but these errors were encountered: