#include "pyconfig.h" // Py_GIL_DISABLED #ifndef Py_GIL_DISABLED // Need limited C API 3.13 for PyLong_AsInt() # define Py_LIMITED_API 0x030d0000 #endif #include "parts.h" #include "util.h" #include "clinic/file.c.h" /*[clinic input] module _testcapi [clinic start generated code]*/ /*[clinic end generated code: output=da39a3ee5e6b4b0d input=6361033e795369fc]*/ static PyObject * pyfile_fromfd(PyObject *module, PyObject *args) { int fd; const char *name; Py_ssize_t size; const char *mode; int buffering; const char *encoding; const char *errors; const char *newline; int closefd; if (!PyArg_ParseTuple(args, "iz#z#" "iz#z#" "z#i", &fd, &name, &size, &mode, &size, &buffering, &encoding, &size, &errors, &size, &newline, &size, &closefd)) { return NULL; } return PyFile_FromFd(fd, name, mode, buffering, encoding, errors, newline, closefd); } /*[clinic input] _testcapi.pyfile_getline file: object n: int / [clinic start generated code]*/ static PyObject * _testcapi_pyfile_getline_impl(PyObject *module, PyObject *file, int n) /*[clinic end generated code: output=137fde2774563266 input=df26686148b3657e]*/ { return PyFile_GetLine(file, n); } /*[clinic input] _testcapi.pyfile_writeobject obj: object file: object flags: int / [clinic start generated code]*/ static PyObject * _testcapi_pyfile_writeobject_impl(PyObject *module, PyObject *obj, PyObject *file, int flags) /*[clinic end generated code: output=ebb4d802e3db489c input=64a34a3e75b9935a]*/ { NULLABLE(obj); NULLABLE(file); RETURN_INT(PyFile_WriteObject(obj, file, flags)); } static PyObject * pyfile_writestring(PyObject *module, PyObject *args) { const char *str; Py_ssize_t size; PyObject *file; if (!PyArg_ParseTuple(args, "z#O", &str, &size, &file)) { return NULL; } NULLABLE(file); RETURN_INT(PyFile_WriteString(str, file)); } /*[clinic input] _testcapi.pyobject_asfiledescriptor obj: object / [clinic start generated code]*/ static PyObject * _testcapi_pyobject_asfiledescriptor(PyObject *module, PyObject *obj) /*[clinic end generated code: output=2d640c6a1970c721 input=45fa1171d62b18d7]*/ { NULLABLE(obj); RETURN_INT(PyObject_AsFileDescriptor(obj)); } static PyMethodDef test_methods[] = { {"pyfile_fromfd", pyfile_fromfd, METH_VARARGS}, _TESTCAPI_PYFILE_GETLINE_METHODDEF _TESTCAPI_PYFILE_WRITEOBJECT_METHODDEF {"pyfile_writestring", pyfile_writestring, METH_VARARGS}, _TESTCAPI_PYOBJECT_ASFILEDESCRIPTOR_METHODDEF {NULL}, }; int _PyTestLimitedCAPI_Init_File(PyObject *m) { return PyModule_AddFunctions(m, test_methods); }