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

BUG: SeedDatasetFilter matches harm_categories, modalities and size case-sensitively, unlike tags

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

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

@ShivamSharma43 y travaille déjà.

Depuis le 27/10/2026.

  • #3588 par @ShivamSharma43 — ouverte

Évaluation

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

Piste de recherche

Commencez dans pyrit/datasets/seed_datasets/seed_metadata.py, où SeedDatasetFilter normalise les tags et SeedDatasetMetadata._coerce_metadata_values normalise les valeurs des métadonnées. Examinez les tests de filtre existants et ajoutez des cas couvrant les valeurs en majuscules dans harm_categories, modalities et size, ainsi que dans les tags. Le travail est terminé lorsque les valeurs de filtre en majuscules et en minuscules renvoient les mêmes jeux de données pour ces axes.

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

Description

Describe the bug

SeedDatasetFilter (pyrit/datasets/seed_datasets/seed_metadata.py) normalizes only tags (strip + lowercase), but dataset metadata is normalized on every axis: SeedDatasetMetadata._coerce_metadata_values lowercases and strips every string value of tags, size, modalities, source_type and harm_categories. So a filter value with an uppercase letter matches on tags but silently matches no dataset on any other axis. For example, SeedDatasetFilter(harm_categories={"Violence"}) returns no datasets, while harm_categories={"violence"} returns 5.

Steps/Code to Reproduce
import asyncio

from pyrit.datasets.seed_datasets.seed_dataset_provider import SeedDatasetProvider
from pyrit.datasets.seed_datasets.seed_metadata import SeedDatasetFilter


async def main():
    for kwargs in (
        {"tags": {"safety"}}, {"tags": {"Safety"}},
        {"harm_categories": {"violence"}}, {"harm_categories": {"Violence"}},
        {"modalities": {"text"}}, {"modalities": {"Text"}},
        {"size": {"large"}}, {"size": {"Large"}},
    ):
        names = await SeedDatasetProvider.get_all_dataset_names_async(filters=SeedDatasetFilter(**kwargs))
        print(kwargs, len(names))


asyncio.run(main())
Expected Results

The case of a filter value does not matter on any axis, as it already does not for tags:

{'tags': {'safety'}} 68
{'tags': {'Safety'}} 68
{'harm_categories': {'violence'}} 5
{'harm_categories': {'Violence'}} 5
{'modalities': {'text'}} 76
{'modalities': {'Text'}} 76
{'size': {'large'}} 28
{'size': {'Large'}} 28
Actual Results
{'tags': {'safety'}} 68
{'tags': {'Safety'}} 68
{'harm_categories': {'violence'}} 5
{'harm_categories': {'Violence'}} 0
{'modalities': {'text'}} 76
{'modalities': {'Text'}} 0
{'size': {'large'}} 28
{'size': {'Large'}} 0
Screenshots

N/A

Versions
  • OS: Windows 11
  • Python version: 3.11.9
  • PyRIT version: installed from main (6224d531) in editable mode
Langage dominant
Python
Étoiles
4.7k
Forks
980
Merge moyen
2 j 9 h
PR mergées (30 j)
433

Préparer son environnement

Ouvrir dans Codespaces

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

  • Aucun Dockerfile ni fichier Docker Compose
  • Propose un modèle de pull request
  • Aucun guide de contribution

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 microsoft/PyRIT

Toutes les issues de microsoft/PyRIT

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.