Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

BUG ColloquialWordswapConverter skips words next to punctuation and inserts spaces into hyphenated words

Cerrado Apto para principiantes
#3,131 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 2 días

@ShivamSharma43 ya está trabajando en esto.

Desde el 11/10/2026.

  • #3133 de @ShivamSharma43 — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python
Área
backend

Línea de trabajo

Encuentra ColloquialWordswapConverter en el paquete de conversores de PyRIT y lee su lógica de tokenización y espaciado, junto con la prueba existente test_awkward_spacing. Reproduce los ejemplos del issue y comprueba las pruebas de conversores cercanas para ver qué intercambios de palabras se esperan. Se considerará terminado cuando los signos de puntuación y las palabras con guion conserven el espaciado con el que están escritas, mientras se intercambian las palabras aptas, y siga pasando la normalización de espacios en blanco existente.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Describe the bug

ColloquialWordswapConverter tokenizes with re.findall(r"\w+|\S+", prompt), rejoins every token with a space, and then removes the space before ?.!,'". That loses or changes text in a few common cases:

  • A word that starts after punctuation is never swapped, because \S+ takes the whole run, e.g. (father) or "mother".
  • A space is inserted inside hyphenated words: e-mail becomes e -mail, father-in-law becomes papa -in-law.
  • The clean-up regex removes a space the user wrote: a 'quoted' word becomes a'quoted' word.

To Reproduce

import asyncio
from pyrit.converter import ColloquialWordswapConverter

c = ColloquialWordswapConverter(deterministic=True)
for s in ["Ask (father) first.", '"mother" said hi', "My father-in-law called.", "e-mail your brother", "a 'quoted' word"]:
    print(repr(s), "->", repr(asyncio.run(c.convert_async(prompt=s)).output_text))
'Ask (father) first.' -> 'Ask (father) first.'
'"mother" said hi' -> '"mother" said hi'
'My father-in-law called.' -> 'My papa -in-law called.'
'e-mail your brother' -> 'e -mail your bro'
"a 'quoted' word" -> "a'quoted' word"

Expected behavior

Words are swapped wherever they appear and surrounding punctuation is left as written: Ask (papa) first., "mama" said hi, My papa-in-law called., e-mail your bro, a 'quoted' word. The existing whitespace normalization (test_awkward_spacing) stays as it is.

Version

main at 60c3386a, Python 3.11, Windows.

Lenguaje dominante
Python
Estrellas
4.6k
Forks
944
Merge medio
2 d 16 h
PR fusionados (30 d)
350

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

  • Sin Dockerfile ni archivo de Docker Compose
  • Tiene una plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de microsoft/PyRIT

Todos los issues de microsoft/PyRIT

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.