openapi-generators / openapi-generators/openapi-python-client

Odd behaviour of snake_case functions

Ouverte
#614 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

🐞bug
Langage dominant
Python
Étoiles
2k
Forks
293
Merge moyen
34 min
PR mergées (30 j)
1

Description

Describe the bug
The names of apis are odd, having '_' in irregular and unpredictable places

To Reproduce
The following behavior can be observed using the snake_case function from utils:

utils.snake_case("get_v2_abc")
'get_v2_abc'
utils.snake_case("get_v2_abc_deFgHij")
'get_v_2_abc_de_fg_hij'

These would for example be created for paths: /v2/abc and /v2/abc/deFgHij

The results however inserts an additional underscore between v and 2, so v_2 instead of v2.

Expected behavior
results should be:
get_v2_abc_de_fg_hij

Desktop (please complete the following information):

  • OS: CentOS7
  • Python Version: 3.8
  • openapi-python-client version: github-master from today

Suggestion:
snake_case uses split_words function , which only splits on Aa, so a capital letter followed by a lowercase one, not on underscore. split_words should first split on underscore, then split on capital followed by lowercase. This would solve the issue of mixed snake and camelcase names.

Some additional odd outcomes:

>>> utils.snake_case("MODEL4dd")
'model4_dd'
>>> utils.snake_case("MODEl4dd")
'mod_el_4_dd'

These of course violate camelCase, but in my estimate should all be treated as one word, i.e. multiple consecutive capital letters are treated as a single block. So above model4dd would be the outcome in both cases.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par localiser les implémentations de utils.snake_case et split_words dans le générateur Python. Reproduisez les exemples de l’issue, puis vérifiez que les entrées mixtes snake_case et camelCase produisent les mots attendus et que les cas MODEL4dd restent un seul mot ; ajoutez ou exécutez les tests d’utilitaires pertinents s’ils existent.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
tooling
Type d'issue
Bug
Difficulté
2/5
Temps estimé
1-3 heures
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.