PyObject* fromFormat(const char* format, ...) { va_list argp; va_start(argp, format); PyObject* result = 0; #ifdef IS_PY3K result = PyUnicode_FromFormatV(format, argp); #else result = PyString_FromFormatV(format, argp); #endif va_end(argp); return result; }
PyObject * PyErr_FormatV(PyObject *exception, const char *format, va_list vargs) { PyObject* string; /* Issue #23571: PyUnicode_FromFormatV() must not be called with an exception set, it calls arbitrary Python code like PyObject_Repr() */ PyErr_Clear(); string = PyUnicode_FromFormatV(format, vargs); PyErr_SetObject(exception, string); Py_XDECREF(string); return NULL; }
static int _PyErr_WarnFormatV(PyObject *source, PyObject *category, Py_ssize_t stack_level, const char *format, va_list vargs) { PyObject *message; int res; message = PyUnicode_FromFormatV(format, vargs); if (message == NULL) return -1; res = warn_unicode(category, message, stack_level, source); Py_DECREF(message); return res; }
int PyErr_WarnExplicitFormat(PyObject *category, const char *filename_str, int lineno, const char *module_str, PyObject *registry, const char *format, ...) { PyObject *message; PyObject *module = NULL; PyObject *filename = PyUnicode_DecodeFSDefault(filename_str); int ret = -1; va_list vargs; if (filename == NULL) goto exit; if (module_str != NULL) { module = PyUnicode_FromString(module_str); if (module == NULL) goto exit; } #ifdef HAVE_STDARG_PROTOTYPES va_start(vargs, format); #else va_start(vargs); #endif message = PyUnicode_FromFormatV(format, vargs); if (message != NULL) { PyObject *res; res = warn_explicit(category, message, filename, lineno, module, registry, NULL, NULL); Py_DECREF(message); if (res != NULL) { Py_DECREF(res); ret = 0; } } va_end(vargs); exit: Py_XDECREF(module); Py_XDECREF(filename); return ret; }
int PyErr_WarnFormat(PyObject *category, Py_ssize_t stack_level, const char *format, ...) { int ret; PyObject *message; va_list vargs; #ifdef HAVE_STDARG_PROTOTYPES va_start(vargs, format); #else va_start(vargs); #endif message = PyUnicode_FromFormatV(format, vargs); if (message != NULL) { ret = warn_unicode(category, message, stack_level); Py_DECREF(message); } else ret = -1; va_end(vargs); return ret; }