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

MAINT Extract attack factory converter configuration composition

Abierto
#2,767 1 comentario 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 2 días

@ahcrm-core ya está trabajando en esto.

Desde el 23/9/2026.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
74/100
Tipo de issue
Refactorización
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python
Área
backend, testing

Línea de trabajo

Start in pyrit/scenario/core/attack_technique_factory.py and read AttackConverterConfig and ConverterConfiguration, then run tests/unit/scenario/core/test_attack_technique_factory.py. Extract the existing composition rules into a private typed helper while preserving public signatures, validation, ordering, response converters, and input immutability. Extend focused factory coverage for the composition matrix and the configuration passed to the attack constructor.

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

Descripción

help wanted
Is your feature request related to a problem? Please describe.

AttackTechniqueFactory.create() handles both complete converter-configuration overrides and additive request-converter composition alongside unrelated scoring and adversarial setup. The distinction matters: selecting extra request converters must not discard a technique's built-in behavior or its response converters.

This is F3 of three small factory extractions. It is ready for implementation and can land without the other factory extractions.

Describe the solution you'd like

Extract the existing converter-composition rules into a small private, typed helper at the technique layer. Have the factory use it while preserving its public parameters and current behavior.

  • Keep full configuration replacement distinct from additive request-converter composition.
  • Preserve the existing ordering between the selected base request pipeline and extra request converters.
  • Preserve the response-converter pipeline from the effective base configuration.
  • Retain the explicit supports_additional_request_converters capability and existing constructor checks. A constructor accepting a converter parameter alone does not imply semantic support for additive composition.
  • Do not mutate the registered factory's stored configuration or caller-supplied converter lists during composition.

Acceptance criteria:

  • No override and no extras preserve the technique's original behavior.
  • A full override retains current replacement semantics, including an explicitly empty configuration.
  • Extras with and without an override preserve current request order and response converters.
  • Unsupported additive composition and invalid capability declarations retain their existing validation/error behavior.
  • Repeated factory creation with different extras does not accumulate converters or alter the original inputs.
  • Public signatures, component identity, and existing registered technique behavior remain unchanged.
  • Focused factory coverage verifies the composition matrix and the actual configuration passed to the attack constructor.
Describe alternatives you've considered, if relevant

Do not move converter execution into the factory, implement a second converter pipeline in the backend/UI, or create a generic configuration framework. Keep one clear internal composition helper and reuse the existing configuration types.

Additional context

Starting points: pyrit/scenario/core/attack_technique_factory.py, AttackConverterConfig, ConverterConfiguration, and tests/unit/scenario/core/test_attack_technique_factory.py. Follow doc/code/framework.md and the scenario, Python, and test instructions.

Related consumer: #2758 will expose registered techniques and ordered extra converters in the GUI. This extraction preserves the contracts it consumes and does not implement that GUI issue; #2758 is not a prerequisite for this refactor. Coordinate with #2494 where the same factory file is edited, but leave adversarial prompt assembly out of this change.

Lenguaje dominante
Python
Estrellas
4.5k
Forks
896
Merge medio
2 d 22 h
PR fusionados (30 d)
220

Preparar el entorno

Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

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.