Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

`minidom` `renameNode()` drops an attribute renamed to a prefixed name

Ouverte Adaptée aux débutants
#159,637 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
76/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
python
Domaine
backend

Piste de recherche

L’issue identifie xml.dom.minidom.Document.renameNode() et fournit un reproducteur. Commencez par lire son implémentation et les tests voisins pour renameNode(). Reproduisez l’erreur d’espace de noms et vérifiez que l’attribut reste sur l’élément après le renommage ; ajoutez ou mettez à jour un test de régression pour le nom p:a et l’espace de noms attendus.

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

Description

stdlib topic-XML type-bug
Bug description:

Since gh-156665, Document.renameNode() raises NamespaceErr when it renames an attribute with no namespace to a prefixed name in a namespace, and the attribute has already been removed from its element when the error is raised.

from xml.dom.minidom import parseString
doc = parseString('<r a="1" b="2"/>')
attr = doc.documentElement.getAttributeNode('a')
try:
    doc.renameNode(attr, 'http://example.com/ns', 'p:a')
except Exception as e:
    print(type(e).__name__, e)
print(doc.documentElement.toxml())
NamespaceErr cannot use the prefix 'p' with an empty namespace
<r b="2"/>

Expected: the attribute is renamed to p:a in http://example.com/ns and stays on the element, as on 3.15.

CPython versions tested on:

CPython main branch

Operating systems tested on:

Linux

Linked PRs
  • gh-159638
Langage dominant
Python
Étoiles
77.6k
Forks
38.4k
Merge moyen
1 j 8 h
PR mergées (30 j)
564

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

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 python/cpython

Toutes les issues de python/cpython

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.