Parameter required status is lost after wire round-trip

Aperta Adatta ai principianti
#3,854 1 commento 0 reazioni 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 2 giorni

@its-amann ci sta già lavorando.

Dal 4/11/2026.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
72/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
json, python
Ambito
backend

Direzione di ricerca

Inizia dal modello Parameter in pyrit/models/parameter.py e dalla funzione _reconstruct_param_type_from_wire, che lo ricostruisce dal JSON. Esegui lo snippet di riproduzione dell'issue per confermare che required è True prima del round-trip e False dopo. Ripristinare REQUIRED_VALUE quando il flag required sul wire è vero dovrebbe far coincidere il default ripristinato con quello originale. tests/unit/models/test_parameter.py dovrebbe coprirlo.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Bug: triage help wanted
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.

Lingua principale
Python
Stelle
4.7k
Fork
1k
Merge medio
2g 3h
PR unite (30g)
465

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

  • Nessun Dockerfile né file Docker Compose
  • Ha un modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di microsoft/PyRIT

Tutte le issue di microsoft/PyRIT

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.