Implements `_.method()`
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- python
- Área
- developer-experience
Línea de trabajo
Comienza con la implementación de _Callable.getattr mostrada en el issue y compárala con la clase intermedia Attr propuesta. Determina el comportamiento previsto para _.method() y para los métodos que reciben un argumento, y confirma después que la API resultante gestiona tanto el acceso a atributos como las llamadas a métodos sin ambigüedad.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I'm opening this issue to discuss the possible ways to implement _.method()
Currently, we have this implementation:
class _Callable(object):
def __getattr__(
self,
key: str,
) -> Callable[[_LambdaDynamicProtocol[T1]], T1]:
return operator.attrgetter(key)
The problem here is that we return the operator directly:
>>> from lambdas import _
>>> _.method
operator.attrgetter('method')
>>> _.method()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: attrgetter expected 1 arguments, got 0
My idea is to create an intermediated class like _MathExpression:
class Attr: # Just ignore the name for now
def __init__(self, attr: str) -> None:
self._attrgetter = operator.attrgetter(attr)
def __call__(self, *args, **kwargs) -> Any:
if len(args) == 1:
return self._attrgetter(args[0])
return lambda obj: self._attrgetter(obj)(*args, **kwargs)
This implementation has a limitation, they won't work correctly if we try to call a method with one argument. This is hard because we don't know when the attribute is callable!
- Lenguaje dominante
- Python
- Estrellas
- 286
- Forks
- 6
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de dry-python/lambdas
-
Python > 3.11Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
dry-python/lambdas#196 ·
-
Bug in the docsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
dry-python/lambdas#176 · 9 comentarios ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 38/100
dry-python/lambdas#116 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
dry-python/lambdas#112 · 1 comentario ·
-
enhancement good first issue hacktoberfest
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
dry-python/lambdas#4 ·
Todos los issues de dry-python/lambdas
Issues similares
-
needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
openvinotoolkit/openvino_notebooks#3665 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
Los mantenedores suelen responder en 1 día
-
docs
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
benchmark-gap
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día