Value model in AdditionalFieldDefinition is an empty class, thus silently drops all data

Aperta
#133 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
55/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
python
Ambito
api

Direzione di ricerca

Inizia in glean/api_client/models/additionalfielddefinition.py ispezionando il modello Value vuoto e il modo in cui AdditionalFieldDefinition costruisce il proprio elenco di valori. Riproduci gli esempi documentati con input anchor, hyperlink e dictionary, quindi verifica che model_dump() conservi i dati forniti invece di produrre oggetti vuoti.

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

Descrizione

The Value class in additionalfielddefinition.py is defined as an empty Pydantic BaseModel with no fields:

class Value(BaseModel):
  r"""Either a string or HypertextField. When OpenAPI Generator supports oneOf, we can semantically enforce this in the docs."""

Because the SDK's BaseModel uses the default Pydantic extra = 'ignore' behavior, any data passed to Value(...) is silently discarded. This means the value field on AdditionalFieldDefinition, which is typed as Optional[List[Value]], cannot actually carry any data.
Impact

This affects any consumer using AdditionalFieldDefinition through either:

  • EmployeeInfoDefinition.additional_fields
  • TeamInfoDefinition.additional_fields

When constructing an AdditionalFieldDefinition with values, the data in the value list is lost:

from glean.api_client.models.additionalfielddefinition import AdditionalFieldDefinition, Value
field = AdditionalFieldDefinition(
  key="languages",
  value=[Value(anchor="English"), Value(anchor="Spanish")]
)
print(field.model_dump())
# {'key': 'languages', 'value': [{}, {}]}
#                                 ^^   ^^  all data silently dropped

The same applies to HypertextField-style values:

Value(anchor="Glean", hyperlink="https://glean.com")
# Value()  — both anchor and hyperlink are silently ignored

This is the associated public docs page: https://developers.glean.com/api/indexing-api/bulk-index-employees. Note that even when passing in data to Value() as a dict, the whole dict object is ignored:

from glean.api_client.models.additionalfielddefinition import AdditionalFieldDefinition

raw = {"key": "username", "value": [{"username": "testuser"}]}
field = AdditionalFieldDefinition(**raw)
dumped = field.model_dump()
print(dumped)
# {'key': 'username', 'value': [{}]}

Lingua principale
Python
Stelle
20
Fork
10
Merge medio
1g 6h
PR unite (30g)
17

Guida per i contributori

Apri la 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 gleanwork/api-client-python

Tutte le issue di gleanwork/api-client-python

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.