gleanwork / gleanwork/api-client-python

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

Offen
#133 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Python
Sterne
20
Forks
10
Ø Merge
1 T. 6 Std.
Gemergte PRs (30 T.)
17

Beschreibung

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': [{}]}

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie in glean/api_client/models/additionalfielddefinition.py mit der Untersuchung des leeren Value-Modells und der Art und Weise, wie AdditionalFieldDefinition seine Werteliste erstellt. Reproduzieren Sie die dokumentierten Beispiele mit anchor-, hyperlink- und dictionary-Eingaben und bestätigen Sie anschließend, dass model_dump() die bereitgestellten Daten beibehält, anstatt leere Objekte zu erzeugen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
api
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
55/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.