Context manager support for `contextvars.Context`
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 25/100
Direção de pesquisa
Comece lendo a documentação de contextvars.Context e os exemplos de equivalência da issue; em seguida, revise os PRs vinculados gh-124773, gh-124776 e gh-99634 antes de começar. Considera-se concluído quando Context oferecer suporte ao uso solicitado como gerenciador de contexto e o comportamento corresponder ao exemplo existente de run(), incluindo a composição com outros gerenciadores de contexto.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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
- Linguagem predominante
- Python
- Estrelas
- 77.2k
- Forks
- 36k
- Merge médio
- 1d 9h
- PRs com merge (30d)
- 558
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de python/cpython
-
docs pending
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
stdlib type-feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
stdlib type-feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
build type-bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
-
stdlib topic-email type-feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
Todas as issues de python/cpython
Issues semelhantes
-
area/auth bug comp/agent P3 platform/discord type/security
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
NousResearch/hermes-agent#117848 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
bancolombia/sentinel#23 ·
-
test md AbertaCI
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100