Código fuente para pynprcalc.comandos

"""
Interfaz entre los comandos de la calculadora y las funciones matemáticas.

Por ejemplo, la función ``X SIN`` se corresponde a ``math.trig.sen(x)``.
"""


import inspect

from .funciones import math
from .funciones import misc


comandos = {
        "+": math.basico.suma,
        "-": math.basico.resta,
        "*": math.basico.producto,
        "/": math.basico.division,
        "²": math.basico.cuadrado,
        "^": math.basico.potencia,
        "SQRT": math.basico.raiz_cuadrada,
        "ROOT": math.basico.raiz,
        "\\": math.basico.inverso,
        "_": math.basico.opuesto,

        "PI": math.const.pi,
        "E": math.const.e,

        "EXP": math.exp.exp,
        "LN": math.exp.ln,
        "LOG10": math.exp.log10,
        "LOG": math.exp.log,

        "DTOR": math.misc.grados_a_radianes,
        "RTOD": math.misc.radianes_a_grados,

        "SIN": math.trig.sen,
        "COS": math.trig.cos,
        "TAN": math.trig.tg,
        "ASIN": math.trig.asen,
        "ACOS": math.trig.acos,
        "ATAN": math.trig.atg,

        "DUP": misc.duplicar,
        "SWAP": misc.intercambiar,
        "DEL": misc.borrar
    }
"""
Mapeo de comandos con su función correspondiente.
"""


[documentos]def obtener_funcion(comando): """ Obtener la función matemática que se corresponde con el comando dado. Args: comando (str): El nombre del comando, debe ser en mayúsculas. Returns: Tuple[Callable, int]: Función matemática y número de argumentos que necesita en un tuple. Raises: ValueError si no existe el comando especificado. """ try: funcion = comandos[comando] except KeyError: raise ValueError("el comando {} no existe".format(comando)) firma = inspect.signature(funcion) cant_args = len(firma.parameters) return funcion, cant_args