Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

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

Offen
#160,147 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
c, python
Bereich
backend

Rechercherichtung

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.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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
Vorherrschende Sprache
Python
Sterne
77.7k
Forks
38.3k
Ø Merge
13 Std. 43 Min.
Gemergte PRs (30 T.)
704

Entwicklungsumgebung

In Codespaces öffnen

Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus python/cpython

Alle Issues in python/cpython

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.