1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4
5 PyDoc_STRVAR(pysqlite_complete_statement__doc__,
6 "complete_statement($module, /, statement)\n"
7 "--\n"
8 "\n"
9 "Checks if a string contains a complete SQL statement.");
10
11 #define PYSQLITE_COMPLETE_STATEMENT_METHODDEF \
12 {"complete_statement", _PyCFunction_CAST(pysqlite_complete_statement), METH_FASTCALL|METH_KEYWORDS, pysqlite_complete_statement__doc__},
13
14 static PyObject *
15 pysqlite_complete_statement_impl(PyObject *module, const char *statement);
16
17 static PyObject *
pysqlite_complete_statement(PyObject * module,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)18 pysqlite_complete_statement(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
19 {
20 PyObject *return_value = NULL;
21 static const char * const _keywords[] = {"statement", NULL};
22 static _PyArg_Parser _parser = {NULL, _keywords, "complete_statement", 0};
23 PyObject *argsbuf[1];
24 const char *statement;
25
26 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
27 if (!args) {
28 goto exit;
29 }
30 if (!PyUnicode_Check(args[0])) {
31 _PyArg_BadArgument("complete_statement", "argument 'statement'", "str", args[0]);
32 goto exit;
33 }
34 Py_ssize_t statement_length;
35 statement = PyUnicode_AsUTF8AndSize(args[0], &statement_length);
36 if (statement == NULL) {
37 goto exit;
38 }
39 if (strlen(statement) != (size_t)statement_length) {
40 PyErr_SetString(PyExc_ValueError, "embedded null character");
41 goto exit;
42 }
43 return_value = pysqlite_complete_statement_impl(module, statement);
44
45 exit:
46 return return_value;
47 }
48
49 PyDoc_STRVAR(pysqlite_enable_shared_cache__doc__,
50 "enable_shared_cache($module, /, do_enable)\n"
51 "--\n"
52 "\n"
53 "Enable or disable shared cache mode for the calling thread.\n"
54 "\n"
55 "This method is deprecated and will be removed in Python 3.12.\n"
56 "Shared cache is strongly discouraged by the SQLite 3 documentation.\n"
57 "If shared cache must be used, open the database in URI mode using\n"
58 "the cache=shared query parameter.");
59
60 #define PYSQLITE_ENABLE_SHARED_CACHE_METHODDEF \
61 {"enable_shared_cache", _PyCFunction_CAST(pysqlite_enable_shared_cache), METH_FASTCALL|METH_KEYWORDS, pysqlite_enable_shared_cache__doc__},
62
63 static PyObject *
64 pysqlite_enable_shared_cache_impl(PyObject *module, int do_enable);
65
66 static PyObject *
pysqlite_enable_shared_cache(PyObject * module,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)67 pysqlite_enable_shared_cache(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
68 {
69 PyObject *return_value = NULL;
70 static const char * const _keywords[] = {"do_enable", NULL};
71 static _PyArg_Parser _parser = {NULL, _keywords, "enable_shared_cache", 0};
72 PyObject *argsbuf[1];
73 int do_enable;
74
75 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
76 if (!args) {
77 goto exit;
78 }
79 do_enable = _PyLong_AsInt(args[0]);
80 if (do_enable == -1 && PyErr_Occurred()) {
81 goto exit;
82 }
83 return_value = pysqlite_enable_shared_cache_impl(module, do_enable);
84
85 exit:
86 return return_value;
87 }
88
89 PyDoc_STRVAR(pysqlite_register_adapter__doc__,
90 "register_adapter($module, type, adapter, /)\n"
91 "--\n"
92 "\n"
93 "Register a function to adapt Python objects to SQLite values.");
94
95 #define PYSQLITE_REGISTER_ADAPTER_METHODDEF \
96 {"register_adapter", _PyCFunction_CAST(pysqlite_register_adapter), METH_FASTCALL, pysqlite_register_adapter__doc__},
97
98 static PyObject *
99 pysqlite_register_adapter_impl(PyObject *module, PyTypeObject *type,
100 PyObject *caster);
101
102 static PyObject *
pysqlite_register_adapter(PyObject * module,PyObject * const * args,Py_ssize_t nargs)103 pysqlite_register_adapter(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
104 {
105 PyObject *return_value = NULL;
106 PyTypeObject *type;
107 PyObject *caster;
108
109 if (!_PyArg_CheckPositional("register_adapter", nargs, 2, 2)) {
110 goto exit;
111 }
112 type = (PyTypeObject *)args[0];
113 caster = args[1];
114 return_value = pysqlite_register_adapter_impl(module, type, caster);
115
116 exit:
117 return return_value;
118 }
119
120 PyDoc_STRVAR(pysqlite_register_converter__doc__,
121 "register_converter($module, typename, converter, /)\n"
122 "--\n"
123 "\n"
124 "Register a function to convert SQLite values to Python objects.");
125
126 #define PYSQLITE_REGISTER_CONVERTER_METHODDEF \
127 {"register_converter", _PyCFunction_CAST(pysqlite_register_converter), METH_FASTCALL, pysqlite_register_converter__doc__},
128
129 static PyObject *
130 pysqlite_register_converter_impl(PyObject *module, PyObject *orig_name,
131 PyObject *callable);
132
133 static PyObject *
pysqlite_register_converter(PyObject * module,PyObject * const * args,Py_ssize_t nargs)134 pysqlite_register_converter(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
135 {
136 PyObject *return_value = NULL;
137 PyObject *orig_name;
138 PyObject *callable;
139
140 if (!_PyArg_CheckPositional("register_converter", nargs, 2, 2)) {
141 goto exit;
142 }
143 if (!PyUnicode_Check(args[0])) {
144 _PyArg_BadArgument("register_converter", "argument 1", "str", args[0]);
145 goto exit;
146 }
147 if (PyUnicode_READY(args[0]) == -1) {
148 goto exit;
149 }
150 orig_name = args[0];
151 callable = args[1];
152 return_value = pysqlite_register_converter_impl(module, orig_name, callable);
153
154 exit:
155 return return_value;
156 }
157
158 PyDoc_STRVAR(pysqlite_enable_callback_trace__doc__,
159 "enable_callback_tracebacks($module, enable, /)\n"
160 "--\n"
161 "\n"
162 "Enable or disable callback functions throwing errors to stderr.");
163
164 #define PYSQLITE_ENABLE_CALLBACK_TRACE_METHODDEF \
165 {"enable_callback_tracebacks", (PyCFunction)pysqlite_enable_callback_trace, METH_O, pysqlite_enable_callback_trace__doc__},
166
167 static PyObject *
168 pysqlite_enable_callback_trace_impl(PyObject *module, int enable);
169
170 static PyObject *
pysqlite_enable_callback_trace(PyObject * module,PyObject * arg)171 pysqlite_enable_callback_trace(PyObject *module, PyObject *arg)
172 {
173 PyObject *return_value = NULL;
174 int enable;
175
176 enable = _PyLong_AsInt(arg);
177 if (enable == -1 && PyErr_Occurred()) {
178 goto exit;
179 }
180 return_value = pysqlite_enable_callback_trace_impl(module, enable);
181
182 exit:
183 return return_value;
184 }
185
186 PyDoc_STRVAR(pysqlite_adapt__doc__,
187 "adapt($module, obj, proto=PrepareProtocolType, alt=<unrepresentable>, /)\n"
188 "--\n"
189 "\n"
190 "Adapt given object to given protocol.");
191
192 #define PYSQLITE_ADAPT_METHODDEF \
193 {"adapt", _PyCFunction_CAST(pysqlite_adapt), METH_FASTCALL, pysqlite_adapt__doc__},
194
195 static PyObject *
196 pysqlite_adapt_impl(PyObject *module, PyObject *obj, PyObject *proto,
197 PyObject *alt);
198
199 static PyObject *
pysqlite_adapt(PyObject * module,PyObject * const * args,Py_ssize_t nargs)200 pysqlite_adapt(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
201 {
202 PyObject *return_value = NULL;
203 PyObject *obj;
204 PyObject *proto = (PyObject *)clinic_state()->PrepareProtocolType;
205 PyObject *alt = NULL;
206
207 if (!_PyArg_CheckPositional("adapt", nargs, 1, 3)) {
208 goto exit;
209 }
210 obj = args[0];
211 if (nargs < 2) {
212 goto skip_optional;
213 }
214 proto = args[1];
215 if (nargs < 3) {
216 goto skip_optional;
217 }
218 alt = args[2];
219 skip_optional:
220 return_value = pysqlite_adapt_impl(module, obj, proto, alt);
221
222 exit:
223 return return_value;
224 }
225 /*[clinic end generated code: output=ecaf4e0a239c2685 input=a9049054013a1b77]*/
226