Azure / Azure/azure-sdk-for-python
Generate an `__eq__` method for case insensitive enums
- 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
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