Parameter required status is lost after wire round-trip
Los mantenedores suelen responder en 2 días
@its-amann ya está trabajando en esto.
Desde el 3/11/2026.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 72/100
Línea de trabajo
Empieza por el modelo Parameter en pyrit/models/parameter.py y por la función _reconstruct_param_type_from_wire, que lo reconstruye a partir de JSON. Ejecuta el fragmento de reproducción del issue para confirmar que required es True antes del round-trip y False después. Restaurar REQUIRED_VALUE cuando el indicador required del wire sea verdadero debería hacer que el valor por defecto restaurado coincida con el original. tests/unit/models/test_parameter.py debería cubrirlo.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
Parameter serializes its computed required flag, but _reconstruct_param_type_from_wire does not use it to restore REQUIRED_VALUE. A required declaration therefore deserializes as optional (default=None, required=False). Clients that round-trip a registry catalog can stop marking or validating the field as required, although backend construction still rejects a missing input.
Steps/Code to Reproduce
from pyrit.common import REQUIRED_VALUE
from pyrit.models.parameter import Parameter
original = Parameter(name="count", description="Required count", param_type=int, default=REQUIRED_VALUE)
restored = Parameter.model_validate_json(original.model_dump_json())
print(original.required, restored.required, restored.default)
Expected Results
The restored declaration remains required and has the same missing-input validation semantics as the original.
Actual Results
The wire JSON contains "required":true, but the restored model reports True False None for original required, restored required, and restored default.
Screenshots
N/A. This is a deterministic model serialization reproduction.
Versions
Python 3.12.3; PyRIT checkout revision 01ce6ca66a315770b36c7dca1f320668c0d92d7c. tests/unit/models/test_parameter.py (228 tests) and registry resolution tests (93 tests) passed; no backend HTTP workflow was run.
- Lenguaje dominante
- Python
- Estrellas
- 4.7k
- Forks
- 1k
- Merge medio
- 2 d 3 h
- PR fusionados (30 d)
- 450
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
-
Scenario objective previews can split supplementary Unicode during truncationPosiblemente ocupada @Aadithya-kl la tomó hoy. AbiertoBug: triage help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
microsoft/PyRIT#3870 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
URLDataTypeSerializer treats mixed-case HTTP(S) schemes as local pathsPosiblemente ocupada @akhil9tiet la tomó hoy. AbiertoBug: triage help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
microsoft/PyRIT#3861 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
BUG: LLMGenericTextConverter identifier changes between processes for set-valued template parametersAbiertoBug: triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
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 1 día. AbiertoBug: triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 2 días
-
GUI rejects valid empty-string SearchReplaceConverter settings, preventing deletion convertersPosiblemente ocupada @Darshika140 la tomó hace 1 día. Abiertohelp wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
microsoft/PyRIT#3749 · 3 comentarios · 1 asignado ·
Los mantenedores suelen responder en 2 días
Todos los issues de microsoft/PyRIT
Issues similares
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 78/100
QuantConnect/Documentation#2838 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
awslabs/route53-dynamic-dns-with-lambda#67 · 1 comentario ·
-
`SubAgents` returns a child run's `DeferredToolRequests` to the parent as a successful tool resultAbiertobug pkg:harness
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
pydantic/pydantic-ai#12405 ·
Los mantenedores suelen responder en 1 día
-
good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
good first issue help wanted
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100