google / google/python-fire

Support case-insensitive usage of Python Fire CLIs

Abierto
#43 12 comentarios 0 reacciones 0 asignados Ver en GitHub
enhancement help wanted
Lenguaje dominante
Python
Estrellas
28.2k
Forks
1.5k
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Much like how we allow users to use hyphens `-` in place of underscores, this Issue is to allow users to use all-lowercase versions of identifiers.

**Typical case**
```
import fire
class CaseExample(object):
def Alpha():
return 'path 1'
fire.Fire(CaseExample)
```

```
$ python example.py Alpha # This is the current behavior.
path 1
$ python example.py alpha # This is the new behavior I want to add.
path 1
$ python example.py ALPHA # Do we want to support other capitalizations? Or just the all lower-case version?
path 1
```

**Corner cases**
Unlike with the -/_ support, there can potentially be members with multiple capitalization variants of the name.

E.g.
```
import fire
class CaseExample(object):
def alpha():
return 'path 1'
def Alpha():
return 'path 2'

fire.Fire(CaseExample)
```

If the user provides an exact match, it's clear what we should do. I'm open to discussion about how to handle the ambiguous case.

```
$ python example.py alpha
path 1
$ python example.py Alpha
path 2
$ python example.py ALPHA
WARNING: Ambiguous member access `ALPHA`; accessing `alpha`.
path 1
```

**Why?**
The primary motivation is that command line tools typically use lower case commands, whereas Python classes (and occasionally methods/functions) typically have capital names. By allowing these capital names to be used via their lower-case variant, the CLIs that result from normal python code will feel natural more often.

**Possible extension**
If we also support dropping/adding -/_s in some situations, then people could use snake-case to refer to CamelCase items... just brainstorming. Thoughts?

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.