Azure / Azure/azure-sdk-for-python

Generate an `__eq__` method for case insensitive enums

Offen
#45,332 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
5.6k
Forks
3.4k
Ø Merge
2 T.
Gemergte PRs (30 T.)
217

Beschreibung

**Is your feature request related to a problem? Please describe.**
Using `==` when testing equality of strings to case-insensitive enum types like
`if my_model.change_type == StackModels.DeploymentStacksWhatIfPropertyChangeType.ARRAY:`
tests it case sensitively. Same result if the operands are flipped. See case insensitive enums in https://pypi.org/project/azure-mgmt-resource-deploymentstacks/ @ 1.0.0

**Describe the solution you'd like**
The python code generator will generate an `__eq__` method on case-insensitive enums that does a case-insensitive equality check if the other value is a `str`.

**Describe alternatives you've considered**
Have to write a helper function and remember to use it. Can manually call `lower()` on both operands but python has no `?.` operator if the value could be null. Having overridden operator will keep things simpler.

**Additional context**
It's not consistent with other SDK language code gen, such as .NET, which implements these as structs with an overridden equality method that ignores case.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne damit, die Logik des Python-Codegenerators für enums ohne Beachtung der Groß-/Kleinschreibung zu finden, und vergleiche ihre Ausgabe mit den enums ohne Beachtung der Groß-/Kleinschreibung in azure-mgmt-resource-deploymentstacks 1.0.0. Füge Abdeckung für die Gleichheit mit Strings in beiden Operandenreihenfolgen hinzu, einschließlich unterschiedlicher Groß-/Kleinschreibung, und stelle sicher, dass das generierte enum das angeforderte Verhalten implementiert.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
tooling
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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