bpo-40956: Convert _sqlite3.Cursor to Argument Clinic (GH-24007) · python/cpython@c7f8d3c

1+

/*[clinic input]

2+

preserve

3+

[clinic start generated code]*/

4+5+

static int

6+

pysqlite_cursor_init_impl(pysqlite_Cursor *self,

7+

pysqlite_Connection *connection);

8+9+

static int

10+

pysqlite_cursor_init(PyObject *self, PyObject *args, PyObject *kwargs)

11+

{

12+

int return_value = -1;

13+

pysqlite_Connection *connection;

14+15+

if (Py_IS_TYPE(self, pysqlite_CursorType) &&

16+

!_PyArg_NoKeywords("Cursor", kwargs)) {

17+

goto exit;

18+

}

19+

if (!_PyArg_CheckPositional("Cursor", PyTuple_GET_SIZE(args), 1, 1)) {

20+

goto exit;

21+

}

22+

if (!PyObject_TypeCheck(PyTuple_GET_ITEM(args, 0), pysqlite_ConnectionType)) {

23+

_PyArg_BadArgument("Cursor", "argument 1", (pysqlite_ConnectionType)->tp_name, PyTuple_GET_ITEM(args, 0));

24+

goto exit;

25+

}

26+

connection = (pysqlite_Connection *)PyTuple_GET_ITEM(args, 0);

27+

return_value = pysqlite_cursor_init_impl((pysqlite_Cursor *)self, connection);

28+29+

exit:

30+

return return_value;

31+

}

32+33+

PyDoc_STRVAR(pysqlite_cursor_execute__doc__,

34+

"execute($self, sql, parameters=(), /)\n"

35+

"--\n"

36+

"\n"

37+

"Executes a SQL statement.");

38+39+

#define PYSQLITE_CURSOR_EXECUTE_METHODDEF \

40+

{"execute", (PyCFunction)(void(*)(void))pysqlite_cursor_execute, METH_FASTCALL, pysqlite_cursor_execute__doc__},

41+42+

static PyObject *

43+

pysqlite_cursor_execute_impl(pysqlite_Cursor *self, PyObject *sql,

44+

PyObject *parameters);

45+46+

static PyObject *

47+

pysqlite_cursor_execute(pysqlite_Cursor *self, PyObject *const *args, Py_ssize_t nargs)

48+

{

49+

PyObject *return_value = NULL;

50+

PyObject *sql;

51+

PyObject *parameters = NULL;

52+53+

if (!_PyArg_CheckPositional("execute", nargs, 1, 2)) {

54+

goto exit;

55+

}

56+

if (!PyUnicode_Check(args[0])) {

57+

_PyArg_BadArgument("execute", "argument 1", "str", args[0]);

58+

goto exit;

59+

}

60+

if (PyUnicode_READY(args[0]) == -1) {

61+

goto exit;

62+

}

63+

sql = args[0];

64+

if (nargs < 2) {

65+

goto skip_optional;

66+

}

67+

parameters = args[1];

68+

skip_optional:

69+

return_value = pysqlite_cursor_execute_impl(self, sql, parameters);

70+71+

exit:

72+

return return_value;

73+

}

74+75+

PyDoc_STRVAR(pysqlite_cursor_executemany__doc__,

76+

"executemany($self, sql, seq_of_parameters, /)\n"

77+

"--\n"

78+

"\n"

79+

"Repeatedly executes a SQL statement.");

80+81+

#define PYSQLITE_CURSOR_EXECUTEMANY_METHODDEF \

82+

{"executemany", (PyCFunction)(void(*)(void))pysqlite_cursor_executemany, METH_FASTCALL, pysqlite_cursor_executemany__doc__},

83+84+

static PyObject *

85+

pysqlite_cursor_executemany_impl(pysqlite_Cursor *self, PyObject *sql,

86+

PyObject *seq_of_parameters);

87+88+

static PyObject *

89+

pysqlite_cursor_executemany(pysqlite_Cursor *self, PyObject *const *args, Py_ssize_t nargs)

90+

{

91+

PyObject *return_value = NULL;

92+

PyObject *sql;

93+

PyObject *seq_of_parameters;

94+95+

if (!_PyArg_CheckPositional("executemany", nargs, 2, 2)) {

96+

goto exit;

97+

}

98+

if (!PyUnicode_Check(args[0])) {

99+

_PyArg_BadArgument("executemany", "argument 1", "str", args[0]);

100+

goto exit;

101+

}

102+

if (PyUnicode_READY(args[0]) == -1) {

103+

goto exit;

104+

}

105+

sql = args[0];

106+

seq_of_parameters = args[1];

107+

return_value = pysqlite_cursor_executemany_impl(self, sql, seq_of_parameters);

108+109+

exit:

110+

return return_value;

111+

}

112+113+

PyDoc_STRVAR(pysqlite_cursor_executescript__doc__,

114+

"executescript($self, sql_script, /)\n"

115+

"--\n"

116+

"\n"

117+

"Executes a multiple SQL statements at once. Non-standard.");

118+119+

#define PYSQLITE_CURSOR_EXECUTESCRIPT_METHODDEF \

120+

{"executescript", (PyCFunction)pysqlite_cursor_executescript, METH_O, pysqlite_cursor_executescript__doc__},

121+122+

PyDoc_STRVAR(pysqlite_cursor_fetchone__doc__,

123+

"fetchone($self, /)\n"

124+

"--\n"

125+

"\n"

126+

"Fetches one row from the resultset.");

127+128+

#define PYSQLITE_CURSOR_FETCHONE_METHODDEF \

129+

{"fetchone", (PyCFunction)pysqlite_cursor_fetchone, METH_NOARGS, pysqlite_cursor_fetchone__doc__},

130+131+

static PyObject *

132+

pysqlite_cursor_fetchone_impl(pysqlite_Cursor *self);

133+134+

static PyObject *

135+

pysqlite_cursor_fetchone(pysqlite_Cursor *self, PyObject *Py_UNUSED(ignored))

136+

{

137+

return pysqlite_cursor_fetchone_impl(self);

138+

}

139+140+

PyDoc_STRVAR(pysqlite_cursor_fetchmany__doc__,

141+

"fetchmany($self, /, size=cursor.arraysize)\n"

142+

"--\n"

143+

"\n"

144+

"Fetches several rows from the resultset.");

145+146+

#define PYSQLITE_CURSOR_FETCHMANY_METHODDEF \

147+

{"fetchmany", (PyCFunction)(void(*)(void))pysqlite_cursor_fetchmany, METH_FASTCALL|METH_KEYWORDS, pysqlite_cursor_fetchmany__doc__},

148+149+

static PyObject *

150+

pysqlite_cursor_fetchmany_impl(pysqlite_Cursor *self, int maxrows);

151+152+

static PyObject *

153+

pysqlite_cursor_fetchmany(pysqlite_Cursor *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)

154+

{

155+

PyObject *return_value = NULL;

156+

static const char * const _keywords[] = {"size", NULL};

157+

static _PyArg_Parser _parser = {NULL, _keywords, "fetchmany", 0};

158+

PyObject *argsbuf[1];

159+

Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;

160+

int maxrows = self->arraysize;

161+162+

args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);

163+

if (!args) {

164+

goto exit;

165+

}

166+

if (!noptargs) {

167+

goto skip_optional_pos;

168+

}

169+

maxrows = _PyLong_AsInt(args[0]);

170+

if (maxrows == -1 && PyErr_Occurred()) {

171+

goto exit;

172+

}

173+

skip_optional_pos:

174+

return_value = pysqlite_cursor_fetchmany_impl(self, maxrows);

175+176+

exit:

177+

return return_value;

178+

}

179+180+

PyDoc_STRVAR(pysqlite_cursor_fetchall__doc__,

181+

"fetchall($self, /)\n"

182+

"--\n"

183+

"\n"

184+

"Fetches all rows from the resultset.");

185+186+

#define PYSQLITE_CURSOR_FETCHALL_METHODDEF \

187+

{"fetchall", (PyCFunction)pysqlite_cursor_fetchall, METH_NOARGS, pysqlite_cursor_fetchall__doc__},

188+189+

static PyObject *

190+

pysqlite_cursor_fetchall_impl(pysqlite_Cursor *self);

191+192+

static PyObject *

193+

pysqlite_cursor_fetchall(pysqlite_Cursor *self, PyObject *Py_UNUSED(ignored))

194+

{

195+

return pysqlite_cursor_fetchall_impl(self);

196+

}

197+198+

PyDoc_STRVAR(pysqlite_cursor_setinputsizes__doc__,

199+

"setinputsizes($self, sizes, /)\n"

200+

"--\n"

201+

"\n"

202+

"Required by DB-API. Does nothing in pysqlite.");

203+204+

#define PYSQLITE_CURSOR_SETINPUTSIZES_METHODDEF \

205+

{"setinputsizes", (PyCFunction)pysqlite_cursor_setinputsizes, METH_O, pysqlite_cursor_setinputsizes__doc__},

206+207+

PyDoc_STRVAR(pysqlite_cursor_setoutputsize__doc__,

208+

"setoutputsize($self, size, column=None, /)\n"

209+

"--\n"

210+

"\n"

211+

"Required by DB-API. Does nothing in pysqlite.");

212+213+

#define PYSQLITE_CURSOR_SETOUTPUTSIZE_METHODDEF \

214+

{"setoutputsize", (PyCFunction)(void(*)(void))pysqlite_cursor_setoutputsize, METH_FASTCALL, pysqlite_cursor_setoutputsize__doc__},

215+216+

static PyObject *

217+

pysqlite_cursor_setoutputsize_impl(pysqlite_Cursor *self, PyObject *size,

218+

PyObject *column);

219+220+

static PyObject *

221+

pysqlite_cursor_setoutputsize(pysqlite_Cursor *self, PyObject *const *args, Py_ssize_t nargs)

222+

{

223+

PyObject *return_value = NULL;

224+

PyObject *size;

225+

PyObject *column = Py_None;

226+227+

if (!_PyArg_CheckPositional("setoutputsize", nargs, 1, 2)) {

228+

goto exit;

229+

}

230+

size = args[0];

231+

if (nargs < 2) {

232+

goto skip_optional;

233+

}

234+

column = args[1];

235+

skip_optional:

236+

return_value = pysqlite_cursor_setoutputsize_impl(self, size, column);

237+238+

exit:

239+

return return_value;

240+

}

241+242+

PyDoc_STRVAR(pysqlite_cursor_close__doc__,

243+

"close($self, /)\n"

244+

"--\n"

245+

"\n"

246+

"Closes the cursor.");

247+248+

#define PYSQLITE_CURSOR_CLOSE_METHODDEF \

249+

{"close", (PyCFunction)pysqlite_cursor_close, METH_NOARGS, pysqlite_cursor_close__doc__},

250+251+

static PyObject *

252+

pysqlite_cursor_close_impl(pysqlite_Cursor *self);

253+254+

static PyObject *

255+

pysqlite_cursor_close(pysqlite_Cursor *self, PyObject *Py_UNUSED(ignored))

256+

{

257+

return pysqlite_cursor_close_impl(self);

258+

}

259+

/*[clinic end generated code: output=11db0de4fb1951a9 input=a9049054013a1b77]*/