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

Duplicate LGPL key in rubygems LICENSES_MAPPING makes one mapping unreachable

Ouverte Adaptée aux débutants
#5,314 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 3 jours

@Daksha1611 y travaille déjà.

Depuis le 11/9/2026.

  • #5315 par @Daksha1611 — ouverte
  • #5326 par @aishwary-dongre — ouverte
  • #5377 par @arjuunns — ouverte

Évaluation

Difficulté
1/5
Temps estimé
Moins d'une heure
Accessibilité débutants
88/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
python
Domaine
tooling

Piste de recherche

Commencez dans src/packagedcode/rubygems.py, au niveau de LICENSES_MAPPING, autour des lignes 679-680, où 'LGPL' apparaît deux fois. Confirmez quelle unique correspondance doit être conservée et supprimez l’entrée de clé en double. Exécutez le snippet de vérification AST fourni pour les clés en double (ou un équivalent) afin de vous assurer qu’il ne reste aucune clé 'LGPL' en double, puis vérifiez LICENSES_MAPPING['LGPL'] après l’importation pour confirmer la valeur résolue attendue.

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

Description

Description

LICENSES_MAPPING in src/packagedcode/rubygems.py defines 'LGPL' twice, on two consecutive lines (679-680):

    'LGPL': 'lgpl',
    'LGPL': 'lgpl-2.0-plus',

Both are entries of the same dict literal, so the first is discarded and every gem declaring a bare LGPL resolves to lgpl-2.0-plus.

That is worth a second look on its own: an unversioned LGPL declaration does not state a version, and lgpl-2.0-plus asserts one. The generic 'LGPL': 'lgpl' line immediately above looks like the mapping intended for the unversioned case, and the table already has separate explicit entries for the versioned spellings. Either way, which one applies is currently decided by line order rather than intent, and the unreachable line is misleading to read.

How To Reproduce
import ast, collections

src = open('src/packagedcode/rubygems.py').read()
for node in ast.walk(ast.parse(src)):
    if isinstance(node, ast.Dict):
        counts = collections.Counter(
            k.value for k in node.keys
            if isinstance(k, ast.Constant) and isinstance(k.value, str)
        )
        for key, n in counts.items():
            if n > 1:
                print(f'line {node.lineno}: duplicate key {key!r} x{n}')
line 658: duplicate key 'LGPL' x2

And the effective value:

>>> from packagedcode.rubygems import LICENSES_MAPPING
>>> LICENSES_MAPPING['LGPL']
'lgpl-2.0-plus'

The 'lgpl' entry is unreachable.

Suggested fix

Remove one of the two lines. I have opened a PR that drops the unreachable one and keeps the current result, so nothing changes at runtime. If a bare LGPL should instead stay unversioned as lgpl, that is a one-word change on top and I am happy to make it.

System configuration
  • What OS are you running on? Linux (x86_64)
  • What version of scancode-toolkit was used? 33.0.0rc1, develop at 5ebebf2
  • What installation method was used to install/run scancode? source checkout
  • Python version: 3.x
Langage dominant
Python
Étoiles
2.7k
Forks
831
Merge moyen
3 j 4 h
PR mergées (30 j)
7

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 aboutcode-org/scancode-toolkit

Toutes les issues de aboutcode-org/scancode-toolkit

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.