pyscg-0051 should use a context manager

Offen Anfängerfreundlich
#1 4 Kommentare 0 Reaktionen 1 zugewiesene Person Auf GitHub ansehen

@s19110 arbeitet bereits daran.

Seit 06.11.2026.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
68/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
python
Bereich
security

Rechercherichtung

Finde die Anleitung zu pyscg-0051 und das dazu konforme Codebeispiel im Repository. Lies die umgebende Regel und prüfe, wie der Umgang mit Ressourcen dargestellt wird; das Beispiel mit dem Context Manager im Issue zeigt die vorgesehene Richtung. Aktualisiere die Anleitung so, dass Ressourcen bei einer Ausnahme freigegeben werden, und bestätige, dass das überarbeitete Beispiel und die Erklärung dieses Verhalten widerspiegeln.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug

pyscg-0051 compliant solution will not release the resources if there is an exception between the resource creation and release. Most libraries (sqlalchemy, aiohttp, requests) uses context manager for that

for example:

"""Compliant Code Example"""

from contextlib import contextmanager


@contextmanager
def resource_pool():
    pool = []

    def append_resource(name):
        print(f"Allocating resource {name}")
        pool.append({"name": name, "active": True})  # Simulated resource

    try:
        yield pool, append_resource
    finally:
        # Properly release resources on exit
        for resource in pool:
            resource["active"] = False
        pool.clear()


with resource_pool() as (my_list, append_resource):
    append_resource("A")
    append_resource("B")

# Outside the context, resources are released
if not any(resource["active"] for resource in my_list):
    print("All resources released.")
Vorherrschende Sprache
Python
Sterne
2
Forks
2
Ø Merge
11 Min.
Gemergte PRs (30 T.)
2

Entwicklungsumgebung

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 ossf/python-secure-coding-guide

Alle Issues in ossf/python-secure-coding-guide

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

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