waspy 0.9.0

A Python interpreter written in Rust, designed for WebAssembly.
Documentation
use crate::stdlib::StdlibValue;

pub fn get_attribute(attr: &str) -> Option<StdlibValue> {
    match attr {
        "pi" => Some(StdlibValue::Float(std::f64::consts::PI)),
        "e" => Some(StdlibValue::Float(std::f64::consts::E)),
        "tau" => Some(StdlibValue::Float(std::f64::consts::TAU)),
        "inf" => Some(StdlibValue::Float(f64::INFINITY)),
        "nan" => Some(StdlibValue::Float(f64::NAN)),
        _ => None,
    }
}

pub fn get_function(func: &str) -> Option<MathFunction> {
    match func {
        "sqrt" => Some(MathFunction::Sqrt),
        "sin" => Some(MathFunction::Sin),
        "cos" => Some(MathFunction::Cos),
        "tan" => Some(MathFunction::Tan),
        "asin" => Some(MathFunction::Asin),
        "acos" => Some(MathFunction::Acos),
        "atan" => Some(MathFunction::Atan),
        "atan2" => Some(MathFunction::Atan2),
        "sinh" => Some(MathFunction::Sinh),
        "cosh" => Some(MathFunction::Cosh),
        "tanh" => Some(MathFunction::Tanh),
        "exp" => Some(MathFunction::Exp),
        "log" => Some(MathFunction::Log),
        "log10" => Some(MathFunction::Log10),
        "log2" => Some(MathFunction::Log2),
        "pow" => Some(MathFunction::Pow),
        "floor" => Some(MathFunction::Floor),
        "ceil" => Some(MathFunction::Ceil),
        "trunc" => Some(MathFunction::Trunc),
        "round" => Some(MathFunction::Round),
        "abs" => Some(MathFunction::Abs),
        "fabs" => Some(MathFunction::Fabs),
        "copysign" => Some(MathFunction::Copysign),
        "fmod" => Some(MathFunction::Fmod),
        "remainder" => Some(MathFunction::Remainder),
        "degrees" => Some(MathFunction::Degrees),
        "radians" => Some(MathFunction::Radians),
        "hypot" => Some(MathFunction::Hypot),
        "factorial" => Some(MathFunction::Factorial),
        "gcd" => Some(MathFunction::Gcd),
        "isnan" => Some(MathFunction::Isnan),
        "isinf" => Some(MathFunction::Isinf),
        "isfinite" => Some(MathFunction::Isfinite),
        _ => None,
    }
}

#[derive(Debug, Clone)]
pub enum MathFunction {
    Sqrt,
    Sin,
    Cos,
    Tan,
    Asin,
    Acos,
    Atan,
    Atan2,
    Sinh,
    Cosh,
    Tanh,
    Exp,
    Log,
    Log10,
    Log2,
    Pow,
    Floor,
    Ceil,
    Trunc,
    Round,
    Abs,
    Fabs,
    Copysign,
    Fmod,
    Remainder,
    Degrees,
    Radians,
    Hypot,
    Factorial,
    Gcd,
    Isnan,
    Isinf,
    Isfinite,
}