Context manager support for `contextvars.Context`
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
Rechercherichtung
Lies zuerst die Dokumentation zu contextvars.Context und die Äquivalenzbeispiele des Issues und prüfe anschließend die verlinkten PRs gh-124773, gh-124776 und gh-99634, bevor du beginnst. Als erledigt gilt die Aufgabe, wenn Context die angeforderte Verwendung als Kontextmanager unterstützt und sich das Verhalten am bestehenden run()-Beispiel orientiert, einschließlich der Kombination mit anderen Kontextmanagern.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Feature or enhancement
I would like to add __enter__ and __exit__ methods to contextvars.Context such that these two are mostly equivalent:
contextvars.copy_context().run(do_something_interesting)
and:
with contextvars.copy_context():
do_something_interesting()
Pitch
This makes it possible to combine Context enter/exit with other context managers:
import contextlib
import contextvars
@contextlib.contextmanager
def foo():
with contextvars.copy_context():
set_some_context_vars()
yield
My personal motivating interest is controlling ContextVar values in pytest fixtures. For example:
import contextvars
import pytest
import module_under_test
@pytest.fixture
def clean_slate():
with contextvars.copy_context():
module_under_test._internal_state_context_var.set(None)
yield
def test_foo(clean_slate):
assert not module_under_test.is_initialized()
Previous discussion
https://stackoverflow.com/q/59264158
Linked PRs
- gh-124773
- gh-124776
- gh-99634
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 36k
- Ø Merge
- 1 T. 9 Std.
- Gemergte PRs (30 T.)
- 558
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus python/cpython
-
docs pending
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
stdlib type-feature
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
stdlib type-feature
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
build type-bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
-
stdlib topic-email type-feature
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
zostera/django-bootstrap4#894 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
use-agent-os/agent-os#3276 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
zephyrproject-rtos/zephyr#119726 ·
-
area/auth bug comp/agent P3 platform/discord type/security
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
NousResearch/hermes-agent#117848 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
zilliztech/memsearch#759 ·