Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

[C API] Add `PyFrozenWriter` C API to create a `frozenset` object

Aberta
#160,147 3 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
35/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
c, python
Domínio
backend

Direção de pesquisa

Read the C API implementation of PyFrozenSet_New() and the listed callers in Modules/_abc.c, Modules/_ssl.c, Modules/_asynciomodule.c, Modules/_hashopenssl.c, and Modules/marshal.c. Check the linked PR gh-160154 first to see the current implementation direction. Done means the C API can create a frozenset for these use cases without calling PySet_Add() on an immutable object.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

interpreter-core topic-C-API type-feature

In the current C API, PyFrozenSet_New(iterable) allows creating a frozenset object from an iterable object. This API is nice, but it doesn't cover all use cases.

For other use cases, PySet_Add(frozenset, item) can be called to modify an immutable frozenset which is a bit unfortunate, since frozenset objects are supposed to be immutable. Examples of functions creating an immutable frozenset using PySet_Add():

  • Modules/_abc.c: compute_abstract_methods() for abstract
  • Modules/_ssl.c: parseKeyUsage() for retval
  • Modules/_asynciomodule.c: _asyncio.Future._asyncio_awaited_by
  • Modules/_hashopenssl.c: hashlib_md_meth_names() for state.set
  • Modules/marshal.c: r_object()
Linked PRs
  • gh-160154
Linguagem predominante
Python
Estrelas
77.7k
Forks
38.3k
Merge médio
14h 29min
PRs com merge (30d)
699

Preparar o ambiente

Abrir no Codespaces

Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de python/cpython

Todas as issues de python/cpython

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.