Duplicate LGPL key in rubygems LICENSES_MAPPING makes one mapping unreachable
Les mainteneurs répondent en général sous 3 jours
@Daksha1611 y travaille déjà.
Depuis le 11/9/2026.
Évaluation
- Difficulté
- 1/5
- Temps estimé
- Moins d'une heure
- Accessibilité débutants
- 88/100
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,
developat 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
- Fournit un Dockerfile ou un fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de aboutcode-org/scancode-toolkit
-
bug: Unreachable JSON extension and format validation in validate_input_pathPeut-être pris @0Cymantek0 l’a pris il y a 19 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
aboutcode-org/scancode-toolkit#5351 · 1 commentaire ·
Les mainteneurs répondent en général sous 3 jours
-
CycloneDX output: metadata.properties[].value emits JSON array instead of stringPeut-être pris @0Cymantek0 l’a pris il y a 19 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
aboutcode-org/scancode-toolkit#5349 · 1 commentaire ·
Les mainteneurs répondent en général sous 3 jours
-
Duplicate 'COPYLEFT' entries in legal file classification names in legal.py and classify.pyPeut-être pris @Pradeepbeleri l’a pris il y a 46 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
aboutcode-org/scancode-toolkit#5319 · 2 commentaires ·
Les mainteneurs répondent en général sous 3 jours
-
Duplicate autogen.sh entry in commoncode default ignoresPeut-être pris @Daksha1611 l’a pris il y a 49 jours. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
aboutcode-org/scancode-toolkit#5316 ·
Les mainteneurs répondent en général sous 3 jours
-
Duplicate keys in alpine DECLARED_TO_SPDX silently discard two license mappingsPeut-être pris @Daksha1611 l’a pris il y a 49 jours. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 82/100
aboutcode-org/scancode-toolkit#5312 ·
Les mainteneurs répondent en général sous 3 jours
Toutes les issues de aboutcode-org/scancode-toolkit
Issues similaires
-
ai_p2 bug comp-datalake
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
ClickHouse/ClickHouse#128306 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
Les mainteneurs répondent en général sous 1 jour
-
[Bug] PROPOSE docs promise approval before saving, but save_learning has no confirmation flagOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
-
[bug] openlit: LLM spans from openlit 1.37+ get no OpenInference attributes, and cache and reasoning token counts are droppedPeut-être pris @sohom-cs l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
Arize-ai/openinference#4199 · 1 réaction ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 82/100
MichaelYcJo/SpecSeal#1192 ·