示例#1
0
static PyObject* _setup_module(PyObject* module) {
    if (module) {
        NotFound = PyErr_NewException("_cheetah.NotFound", PyExc_LookupError, NULL);
        PyModule_AddObject(module, "NotFound", NotFound);

        _builtins_module = PyImport_ImportModule(IF_PY3("builtins", "__builtin__"));
        if (!_builtins_module) {
            Py_DECREF(module);
            module = NULL;
        }
    }
    return module;
}
示例#2
0
static inline PyObject* _ns_lookup(char* key, PyObject* ns) {
    PyObject* ret = NULL;

    if ((ret = PyMapping_GetItemString(ns, key))) {
        return ret;
    }

    PyErr_Clear();

    {
        PyObject* fmt = PyUnicode_FromString("Cannot find '{}'");
        PyObject* fmted = PyObject_CallMethod(
            fmt, "format", IF_PY3("y", "s"), key
        );
        PyErr_SetObject(NotFound, fmted);
        Py_XDECREF(fmted);
        Py_XDECREF(fmt);
    }
    return NULL;
}
示例#3
0
static PyObject* _vfsl(char* key, PyObject* selfobj, PyObject* ns) {
    PyObject* ret;
    PyObject* fmt;
    PyObject* fmted;

    if ((ret = PyObject_GetAttrString(selfobj, key))) {
        return ret;
    }

    PyErr_Clear();

    if ((ret = PyMapping_GetItemString(ns, key))) {
        return ret;
    }

    PyErr_Clear();

    fmt = PyUnicode_FromString("Cannot find '{0}'");
    fmted = PyObject_CallMethod(fmt, "format", IF_PY3("y", "s"), key);
    PyErr_SetObject(NotFound, fmted);
    Py_XDECREF(fmted);
    Py_XDECREF(fmt);
    return NULL;
}