Add "postrequisites" to fixtures - the inverse of a prerequisite #945
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.
A postrequisite is a fixture dependency which specifies that the postrequisite should run after the source fixture.
This in turn results in the postrequisite running before the source fixture for
on_success
If i write a fixture A, which only has a
on_succes
that should run after theon_success
of B, i can't make B a__prerequisites__
as those are sorted foron_request
. This means as a prerequisite,B.on_success
will run after myA.on_success
, not before.__postrequisites__
simply reverses this relation. B being in__postrequisites__
on A is the same a A being in the__prerequisites__
of B - and in fact, internally this is how postrequisites are represented while building the Directed Acyclic Graph.This PR switches the custom topological sort to use
graphlib
instead, asgraphlib
detects cycles.graphlib
is a new stdlib module since python 3.9, sographlib-backport
is added as a dependency for compatability with older python versions.