Hi, How do plugins support multiple pytest versions when the hook api changes? Or should they? Example. pytest-json-report ytest_warning_captured, which was deprecated in pytest 6. Looks like there's a new hook, pytest_warning_recorded, with similar enough API. I haven't tested it to see if the behavior is close enough to work as a drop in replacement. But even if it is, switching to the new api makes the plugin only work on pytest 6.0 and above. Is it recommended that plugin authors try to force users to always use the latest pytest? What if they want to support older versions also? Is there a recommended way to say this? if pytest version < 6, use one hook else use new hook Thanks, Brian
Hey Brian, On Tue, Oct 6, 2020 at 1:55 PM Brian Okken <variedthoughts@gmail.com> wrote:
Hi,
How do plugins support multiple pytest versions when the hook api changes? Or should they?
Example. pytest-json-report ytest_warning_captured, which was deprecated in pytest 6. Looks like there's a new hook, pytest_warning_recorded, with similar enough API. I haven't tested it to see if the behavior is close enough to work as a drop in replacement.
But even if it is, switching to the new api makes the plugin only work on pytest 6.0 and above.
Is it recommended that plugin authors try to force users to always use the latest pytest?
What if they want to support older versions also?
Is there a recommended way to say this?
if pytest version < 6, use one hook else use new hook
I believe it really depends on the plugin and how many users you have. Certainly only supporting the latest pytest version is easier, but if you must support older versions, then checking the version to decide which hooks to implement is doable. An alternative is to check if the new hook exists, like how we used to do in pytest-xdist: https://github.com/pytest-dev/pytest-xdist/blob/7bf654775dcd2fef9c0ebafbea98... Where we implement one hook or the other, giving preference to the new hook when available. Cheers, Bruno.
Thanks, Brian _______________________________________________ pytest-dev mailing list pytest-dev@python.org https://mail.python.org/mailman/listinfo/pytest-dev
Bruno, Thanks for the great and rapid info. - Brian
On Oct 6, 2020, at 10:07 AM, Bruno Oliveira <nicoddemus@gmail.com> wrote:
Hey Brian,
On Tue, Oct 6, 2020 at 1:55 PM Brian Okken <variedthoughts@gmail.com> wrote: Hi,
How do plugins support multiple pytest versions when the hook api changes? Or should they?
Example. pytest-json-report ytest_warning_captured, which was deprecated in pytest 6. Looks like there's a new hook, pytest_warning_recorded, with similar enough API. I haven't tested it to see if the behavior is close enough to work as a drop in replacement.
But even if it is, switching to the new api makes the plugin only work on pytest 6.0 and above.
Is it recommended that plugin authors try to force users to always use the latest pytest? What if they want to support older versions also?
Is there a recommended way to say this?
if pytest version < 6, use one hook else use new hook
I believe it really depends on the plugin and how many users you have. Certainly only supporting the latest pytest version is easier, but if you must support older versions, then checking the version to decide which hooks to implement is doable.
An alternative is to check if the new hook exists, like how we used to do in pytest-xdist:
https://github.com/pytest-dev/pytest-xdist/blob/7bf654775dcd2fef9c0ebafbea98...
Where we implement one hook or the other, giving preference to the new hook when available.
Cheers, Bruno.
Thanks, Brian _______________________________________________ pytest-dev mailing list pytest-dev@python.org https://mail.python.org/mailman/listinfo/pytest-dev
participants (2)
-
Brian Okken -
Bruno Oliveira