sopel-irc / sopel

:robot::speech_balloon: An easy-to-use and highly extensible IRC Bot framework. Formerly Willie.
https://sopel.chat
Other
951 stars 402 forks source link

Use Python's contextvars module to remove SopelWrapper #2460

Open Exirel opened 1 year ago

Exirel commented 1 year ago

Requested Feature

This is a long term plan: the end goal is to remove SopelWrapper by using contextvars in the Sopel class itself. The main issue is that removing the SopelWrapper may break the following cases:

All these are perfectly acceptable for a major release, but shouldn't be introduced in a minor release. We should also ensure a period of deprecation, with warning in the documentation, and if possible in the code itself.

After a conversation on IRC, a rough plan is:

Problems Solved

Today, we use SopelWrapper to wrap an instance of Sopel and use it in plugin callable (the bot argument), and as a result:

Notes

PR #2443 started the conversation around contextvars and removing SopelWrapper, but making such a drastic change in Sopel 8 is too much, hence this issue with a proper plan with a target version as Sopel 9.0.

SnoopJ commented 1 year ago

Summarizing short discussion from IRC: 8.0 is very long in the tooth now, it seems like we should at-most include a note in the docs about our intent to get rid of SopelWrapper Eventually™ for 8.0 with no code changes, and we can figure out the rest of the details when 8.0 is out the door

@dgw suggested 9.0 for release of the initial implementation of a contextvars replacement, which I think would push the removal of SopelWrapper to 10.0, but we can discuss more as we go.

dgw commented 1 year ago

@dgw suggested 9.0 for release of the initial implementation of a contextvars replacement, which I think would push the removal of SopelWrapper to 10.0, but we can discuss more as we go.

Thought I clarified in a follow-up line that I meant the switchover would happen in 9.0, with the implementation first shipping in 8.1, but maybe that got lost. x)

dgw commented 3 weeks ago

With the Issues preview, newly added sub-issues of this one can live in the intermediate milestone(s) like 8.1.0. This one can move to 9.0.0 so it doesn't clutter the 8.1 list.