This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
# cyextension/__init__.py
|
||||
# Copyright (C) 2005-2025 the SQLAlchemy authors and contributors
|
||||
# <see AUTHORS file>
|
||||
#
|
||||
# This module is part of SQLAlchemy and is released under
|
||||
# the MIT License: https://www.opensource.org/licenses/mit-license.php
|
||||
|
||||
Binary file not shown.
@@ -1,3 +1,9 @@
|
||||
# cyextension/collections.pyx
|
||||
# Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
|
||||
# <see AUTHORS file>
|
||||
#
|
||||
# This module is part of SQLAlchemy and is released under
|
||||
# the MIT License: https://www.opensource.org/licenses/mit-license.php
|
||||
cimport cython
|
||||
from cpython.long cimport PyLong_FromLongLong
|
||||
from cpython.set cimport PySet_Add
|
||||
|
||||
Binary file not shown.
@@ -1,2 +1,8 @@
|
||||
# cyextension/immutabledict.pxd
|
||||
# Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
|
||||
# <see AUTHORS file>
|
||||
#
|
||||
# This module is part of SQLAlchemy and is released under
|
||||
# the MIT License: https://www.opensource.org/licenses/mit-license.php
|
||||
cdef class immutabledict(dict):
|
||||
pass
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# cyextension/immutabledict.pyx
|
||||
# Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
|
||||
# <see AUTHORS file>
|
||||
#
|
||||
# This module is part of SQLAlchemy and is released under
|
||||
# the MIT License: https://www.opensource.org/licenses/mit-license.php
|
||||
from cpython.dict cimport PyDict_New, PyDict_Update, PyDict_Size
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,3 +1,9 @@
|
||||
# cyextension/processors.pyx
|
||||
# Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
|
||||
# <see AUTHORS file>
|
||||
#
|
||||
# This module is part of SQLAlchemy and is released under
|
||||
# the MIT License: https://www.opensource.org/licenses/mit-license.php
|
||||
import datetime
|
||||
from datetime import datetime as datetime_cls
|
||||
from datetime import time as time_cls
|
||||
|
||||
Binary file not shown.
@@ -1,3 +1,9 @@
|
||||
# cyextension/resultproxy.pyx
|
||||
# Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
|
||||
# <see AUTHORS file>
|
||||
#
|
||||
# This module is part of SQLAlchemy and is released under
|
||||
# the MIT License: https://www.opensource.org/licenses/mit-license.php
|
||||
import operator
|
||||
|
||||
cdef class BaseRow:
|
||||
|
||||
Binary file not shown.
@@ -1,31 +1,33 @@
|
||||
# cyextension/util.pyx
|
||||
# Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
|
||||
# <see AUTHORS file>
|
||||
#
|
||||
# This module is part of SQLAlchemy and is released under
|
||||
# the MIT License: https://www.opensource.org/licenses/mit-license.php
|
||||
from collections.abc import Mapping
|
||||
|
||||
from sqlalchemy import exc
|
||||
|
||||
cdef tuple _Empty_Tuple = ()
|
||||
|
||||
cdef inline bint _mapping_or_tuple(object value):
|
||||
cdef inline bint _is_mapping_or_tuple(object value):
|
||||
return isinstance(value, dict) or isinstance(value, tuple) or isinstance(value, Mapping)
|
||||
|
||||
cdef inline bint _check_item(object params) except 0:
|
||||
cdef object item
|
||||
cdef bint ret = 1
|
||||
if params:
|
||||
item = params[0]
|
||||
if not _mapping_or_tuple(item):
|
||||
ret = 0
|
||||
raise exc.ArgumentError(
|
||||
"List argument must consist only of tuples or dictionaries"
|
||||
)
|
||||
return ret
|
||||
|
||||
cdef inline bint _is_mapping(object value):
|
||||
return isinstance(value, dict) or isinstance(value, Mapping)
|
||||
|
||||
|
||||
def _distill_params_20(object params):
|
||||
if params is None:
|
||||
return _Empty_Tuple
|
||||
elif isinstance(params, list) or isinstance(params, tuple):
|
||||
_check_item(params)
|
||||
if params and not _is_mapping(params[0]):
|
||||
raise exc.ArgumentError(
|
||||
"List argument must consist only of dictionaries"
|
||||
)
|
||||
return params
|
||||
elif isinstance(params, dict) or isinstance(params, Mapping):
|
||||
elif _is_mapping(params):
|
||||
return [params]
|
||||
else:
|
||||
raise exc.ArgumentError("mapping or list expected for parameters")
|
||||
@@ -35,9 +37,12 @@ def _distill_raw_params(object params):
|
||||
if params is None:
|
||||
return _Empty_Tuple
|
||||
elif isinstance(params, list):
|
||||
_check_item(params)
|
||||
if params and not _is_mapping_or_tuple(params[0]):
|
||||
raise exc.ArgumentError(
|
||||
"List argument must consist only of tuples or dictionaries"
|
||||
)
|
||||
return params
|
||||
elif _mapping_or_tuple(params):
|
||||
elif _is_mapping_or_tuple(params):
|
||||
return [params]
|
||||
else:
|
||||
raise exc.ArgumentError("mapping or sequence expected for parameters")
|
||||
|
||||
Reference in New Issue
Block a user