diff options
| author | AlexSm <[email protected]> | 2024-03-05 10:40:59 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-03-05 12:40:59 +0300 |
| commit | 1ac13c847b5358faba44dbb638a828e24369467b (patch) | |
| tree | 07672b4dd3604ad3dee540a02c6494cb7d10dc3d /contrib/tools/python3/src/Modules/_sqlite/microprotocols.c | |
| parent | ffcca3e7f7958ddc6487b91d3df8c01054bd0638 (diff) | |
Library import 16 (#2433)
Co-authored-by: robot-piglet <[email protected]>
Co-authored-by: deshevoy <[email protected]>
Co-authored-by: robot-contrib <[email protected]>
Co-authored-by: thegeorg <[email protected]>
Co-authored-by: robot-ya-builder <[email protected]>
Co-authored-by: svidyuk <[email protected]>
Co-authored-by: shadchin <[email protected]>
Co-authored-by: robot-ratatosk <[email protected]>
Co-authored-by: innokentii <[email protected]>
Co-authored-by: arkady-e1ppa <[email protected]>
Co-authored-by: snermolaev <[email protected]>
Co-authored-by: dimdim11 <[email protected]>
Co-authored-by: kickbutt <[email protected]>
Co-authored-by: abdullinsaid <[email protected]>
Co-authored-by: korsunandrei <[email protected]>
Co-authored-by: petrk <[email protected]>
Co-authored-by: miroslav2 <[email protected]>
Co-authored-by: serjflint <[email protected]>
Co-authored-by: akhropov <[email protected]>
Co-authored-by: prettyboy <[email protected]>
Co-authored-by: ilikepugs <[email protected]>
Co-authored-by: hiddenpath <[email protected]>
Co-authored-by: mikhnenko <[email protected]>
Co-authored-by: spreis <[email protected]>
Co-authored-by: andreyshspb <[email protected]>
Co-authored-by: dimaandreev <[email protected]>
Co-authored-by: rashid <[email protected]>
Co-authored-by: robot-ydb-importer <[email protected]>
Co-authored-by: r-vetrov <[email protected]>
Co-authored-by: ypodlesov <[email protected]>
Co-authored-by: zaverden <[email protected]>
Co-authored-by: vpozdyayev <[email protected]>
Co-authored-by: robot-cozmo <[email protected]>
Co-authored-by: v-korovin <[email protected]>
Co-authored-by: arikon <[email protected]>
Co-authored-by: khoden <[email protected]>
Co-authored-by: psydmm <[email protected]>
Co-authored-by: robot-javacom <[email protected]>
Co-authored-by: dtorilov <[email protected]>
Co-authored-by: sennikovmv <[email protected]>
Co-authored-by: hcpp <[email protected]>
Diffstat (limited to 'contrib/tools/python3/src/Modules/_sqlite/microprotocols.c')
| -rw-r--r-- | contrib/tools/python3/src/Modules/_sqlite/microprotocols.c | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/contrib/tools/python3/src/Modules/_sqlite/microprotocols.c b/contrib/tools/python3/src/Modules/_sqlite/microprotocols.c deleted file mode 100644 index 148220d0f91..00000000000 --- a/contrib/tools/python3/src/Modules/_sqlite/microprotocols.c +++ /dev/null @@ -1,144 +0,0 @@ -/* microprotocols.c - minimalist and non-validating protocols implementation - * - * Copyright (C) 2003-2004 Federico Di Gregorio <[email protected]> - * - * This file is part of psycopg and was adapted for pysqlite. Federico Di - * Gregorio gave the permission to use it within pysqlite under the following - * license: - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * 3. This notice may not be removed or altered from any source distribution. - */ - -#include <Python.h> - -#include "cursor.h" -#include "microprotocols.h" -#include "prepare_protocol.h" - - -/* pysqlite_microprotocols_init - initialize the adapters dictionary */ - -int -pysqlite_microprotocols_init(PyObject *module) -{ - /* create adapters dictionary and put it in module namespace */ - pysqlite_state *state = pysqlite_get_state(module); - state->psyco_adapters = PyDict_New(); - if (state->psyco_adapters == NULL) { - return -1; - } - - return PyModule_AddObjectRef(module, "adapters", state->psyco_adapters); -} - - -/* pysqlite_microprotocols_add - add a reverse type-caster to the dictionary */ - -int -pysqlite_microprotocols_add(pysqlite_state *state, PyTypeObject *type, - PyObject *proto, PyObject *cast) -{ - PyObject* key; - int rc; - - assert(type != NULL); - assert(proto != NULL); - key = PyTuple_Pack(2, (PyObject *)type, proto); - if (!key) { - return -1; - } - - rc = PyDict_SetItem(state->psyco_adapters, key, cast); - Py_DECREF(key); - - return rc; -} - -/* pysqlite_microprotocols_adapt - adapt an object to the built-in protocol */ - -PyObject * -pysqlite_microprotocols_adapt(pysqlite_state *state, PyObject *obj, - PyObject *proto, PyObject *alt) -{ - PyObject *adapter, *key, *adapted; - - /* we don't check for exact type conformance as specified in PEP 246 - because the PrepareProtocolType type is abstract and there is no - way to get a quotable object to be its instance */ - - /* look for an adapter in the registry */ - key = PyTuple_Pack(2, (PyObject *)Py_TYPE(obj), proto); - if (!key) { - return NULL; - } - adapter = PyDict_GetItemWithError(state->psyco_adapters, key); - Py_DECREF(key); - if (adapter) { - Py_INCREF(adapter); - adapted = PyObject_CallOneArg(adapter, obj); - Py_DECREF(adapter); - return adapted; - } - if (PyErr_Occurred()) { - return NULL; - } - - /* try to have the protocol adapt this object */ - if (_PyObject_LookupAttr(proto, state->str___adapt__, &adapter) < 0) { - return NULL; - } - if (adapter) { - adapted = PyObject_CallOneArg(adapter, obj); - Py_DECREF(adapter); - - if (adapted == Py_None) { - Py_DECREF(adapted); - } - else if (adapted || !PyErr_ExceptionMatches(PyExc_TypeError)) { - return adapted; - } - else { - PyErr_Clear(); - } - } - - /* and finally try to have the object adapt itself */ - if (_PyObject_LookupAttr(obj, state->str___conform__, &adapter) < 0) { - return NULL; - } - if (adapter) { - adapted = PyObject_CallOneArg(adapter, proto); - Py_DECREF(adapter); - - if (adapted == Py_None) { - Py_DECREF(adapted); - } - else if (adapted || !PyErr_ExceptionMatches(PyExc_TypeError)) { - return adapted; - } - else { - PyErr_Clear(); - } - } - - if (alt) { - return Py_NewRef(alt); - } - /* else set the right exception and return NULL */ - PyErr_SetString(state->ProgrammingError, "can't adapt"); - return NULL; -} |
