pyscg-0051 should use a context manager

Ouverte Adaptée aux débutants
#1 4 commentaires 0 réactions 1 personne assignée Voir sur GitHub

@s19110 y travaille déjà.

Depuis le 6/11/2026.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
68/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Active
Stack technique
python
Domaine
security

Piste de recherche

Trouvez dans le dépôt les recommandations de pyscg-0051 et leur exemple de code conforme. Lisez la règle environnante et vérifiez comment la gestion des ressources est présentée ; l’exemple de gestionnaire de contexte dans l’issue indique l’orientation prévue. Mettez à jour les recommandations afin que les ressources soient libérées lorsqu’une exception se produit, et confirmez que l’exemple révisé et l’explication correspondent à ce comportement.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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.")
Langage dominant
Python
Étoiles
2
Forks
2
Merge moyen
11 min
PR mergées (30 j)
2

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de ossf/python-secure-coding-guide

Toutes les issues de ossf/python-secure-coding-guide

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.