Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

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

Aberta Para iniciantes
#3,587 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 2 dias

@ShivamSharma43 já está trabalhando nisso.

Desde 27/10/2026.

  • #3588 de @ShivamSharma43 — aberto

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
82/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
python
Domínio
backend

Direção de pesquisa

Comece em pyrit/datasets/seed_datasets/seed_metadata.py, onde SeedDatasetFilter normaliza tags e SeedDatasetMetadata._coerce_metadata_values normaliza valores de metadados. Verifique os testes de filtro existentes e adicione cobertura para valores em maiúsculas em harm_categories, modalities e size, além das tags. O trabalho estará concluído quando os valores de filtro em maiúsculas e minúsculas retornarem os mesmos conjuntos de dados nesses eixos.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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
Linguagem predominante
Python
Estrelas
4.7k
Forks
980
Merge médio
2d 7h
PRs com merge (30d)
446

Preparar o ambiente

Abrir no Codespaces

Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.

  • Sem Dockerfile nem arquivo Docker Compose
  • Tem um modelo de pull request
  • Sem guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de microsoft/PyRIT

Todas as issues de microsoft/PyRIT

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.