BUG: CharacterSpaceConverter introduces whitespace holes and trailing whitespace
Los mantenedores suelen responder en 2 días
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 82/100
Línea de trabajo
Encuentra CharacterSpaceConverter y sus pruebas en el código fuente de PyRIT. Lee la implementación del conversor y ejecuta primero las pruebas existentes del conversor; añade cobertura para la puntuación entre palabras, las contracciones y la puntuación final. El trabajo estará terminado cuando se elimine la puntuación antes de insertar espacios, las salidas coincidan con los ejemplos y el patrón de puntuación se compile una sola vez a nivel de módulo.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
CharacterSpaceConverter spaces out characters with " ".join(prompt) before removing punctuation with re.sub(...). This order of operations introduces whitespace artifacts:
- Stripping punctuation leaves empty character "holes", producing 4 spaces between words (e.g.,
"Hello, world"->"H e l l o w o r l d"instead of the standard 3-space inter-word spacing"H e l l o w o r l d"). - Contractions or mid-word punctuation leave double spaces (e.g.,
"How's"->"H o w s"instead of"H o w s"). - Trailing punctuation leaves unwanted trailing whitespace (e.g.,
"hello!"->"h e l l o ").
Additionally, the punctuation regex is recompiled on every invocation of convert_async rather than precompiled at module level.
Steps/Code to Reproduce
import asyncio
from pyrit.converter import CharacterSpaceConverter
async def main():
converter = CharacterSpaceConverter()
res1 = await converter.convert_async(prompt="hello!")
print(repr(res1.output_text)) # prints 'h e l l o ' with trailing space
res2 = await converter.convert_async(prompt="Hello, world! How's everything?")
print(repr(res2.output_text)) # prints 'H e l l o w o r l d H o w s e v e r y t h i n g '
asyncio.run(main())
Expected Results
Punctuation should be stripped prior to character spacing so spacing remains uniform without artificial gaps or trailing whitespace:
"hello!"->'h e l l o'"Hello, world! How's everything?"->'H e l l o w o r l d H o w s e v e r y t h i n g'
Actual Results
'h e l l o ''H e l l o w o r l d H o w s e v e r y t h i n g '
Versions
- OS: Windows 11
- Python version: 3.12
- PyRIT version: main
- Lenguaje dominante
- Python
- Estrellas
- 4.7k
- Forks
- 1k
- Merge medio
- 2 d 4 h
- PR fusionados (30 d)
- 510
Preparar el entorno
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
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de microsoft/PyRIT
-
BUG: HuggingFaceChatTarget runs model.generate() on the event loopPosiblemente ocupada @Shizoqua la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 2 días
-
BUG: StaticPromptInjectionScorer misses modern frontier chat template delimiters (DeepSeek, Cohere Command R, Mistral)Posiblemente ocupada @Kaap10 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 2 días
-
Parameter required status is lost after wire round-tripPosiblemente ocupada @its-amann la tomó hace 3 días. AbiertoBug: triage help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
microsoft/PyRIT#3854 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 2 días
-
BUG: LLMGenericTextConverter identifier changes between processes for set-valued template parametersPosiblemente ocupada @samrudhi03 la tomó hace 3 días. AbiertoBug: triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
microsoft/PyRIT#3841 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 2 días
-
BUG: SelfAskGeneral scorers leave their output keys out of the identifierPosiblemente ocupada @Hrushikesh-ramilla la tomó hace 4 días. AbiertoBug: triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 2 días
Todos los issues de microsoft/PyRIT
Issues similares
-
ChatBedrockConverse changes the keys of JSON tool results to camelCase (`order_id` becomes `orderId`)Posiblemente ocupada @geyazheng la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
langchain-ai/langchain-aws#1469 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
EESSI/docs#949 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
b4b usability
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
fix(schedule): align list_tasks since cursor filter boundary from strict > to >=Posiblemente ocupada @bfs2021 la tomó hoy. Abiertoagent-ready bug p2 schedule
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
allenporter/supernote#540 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
frazane/scoringrules#164 ·
Los mantenedores suelen responder en 1 día