diff options
author | cyfraeviolae <cyfraeviolae> | 2024-04-03 03:17:55 -0400 |
---|---|---|
committer | cyfraeviolae <cyfraeviolae> | 2024-04-03 03:17:55 -0400 |
commit | 12cf076118570eebbff08c6b3090e0d4798447a1 (patch) | |
tree | 3ba25e17e3c3a5e82316558ba3864b955919ff72 /venv/lib/python3.11/site-packages/sqlalchemy/cyextension | |
parent | c45662ff3923b34614ddcc8feb9195541166dcc5 (diff) |
no venv
Diffstat (limited to 'venv/lib/python3.11/site-packages/sqlalchemy/cyextension')
13 files changed, 0 insertions, 817 deletions
diff --git a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/__init__.py b/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/__init__.py deleted file mode 100644 index 88a4d90..0000000 --- a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# cyextension/__init__.py -# 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 diff --git a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/__pycache__/__init__.cpython-311.pyc Binary files differdeleted file mode 100644 index 2c16dd2..0000000 --- a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/__pycache__/__init__.cpython-311.pyc +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/collections.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/collections.cpython-311-x86_64-linux-gnu.so Binary files differdeleted file mode 100755 index 71f55a1..0000000 --- a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/collections.cpython-311-x86_64-linux-gnu.so +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/collections.pyx b/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/collections.pyx deleted file mode 100644 index 86d2485..0000000 --- a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/collections.pyx +++ /dev/null @@ -1,409 +0,0 @@ -# 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 - -from collections.abc import Collection -from itertools import filterfalse - -cdef bint add_not_present(set seen, object item, hashfunc): - hash_value = hashfunc(item) - if hash_value not in seen: - PySet_Add(seen, hash_value) - return True - else: - return False - -cdef list cunique_list(seq, hashfunc=None): - cdef set seen = set() - if not hashfunc: - return [x for x in seq if x not in seen and not PySet_Add(seen, x)] - else: - return [x for x in seq if add_not_present(seen, x, hashfunc)] - -def unique_list(seq, hashfunc=None): - return cunique_list(seq, hashfunc) - -cdef class OrderedSet(set): - - cdef list _list - - @classmethod - def __class_getitem__(cls, key): - return cls - - def __init__(self, d=None): - set.__init__(self) - if d is not None: - self._list = cunique_list(d) - set.update(self, self._list) - else: - self._list = [] - - cpdef OrderedSet copy(self): - cdef OrderedSet cp = OrderedSet.__new__(OrderedSet) - cp._list = list(self._list) - set.update(cp, cp._list) - return cp - - @cython.final - cdef OrderedSet _from_list(self, list new_list): - cdef OrderedSet new = OrderedSet.__new__(OrderedSet) - new._list = new_list - set.update(new, new_list) - return new - - def add(self, element): - if element not in self: - self._list.append(element) - PySet_Add(self, element) - - def remove(self, element): - # set.remove will raise if element is not in self - set.remove(self, element) - self._list.remove(element) - - def pop(self): - try: - value = self._list.pop() - except IndexError: - raise KeyError("pop from an empty set") from None - set.remove(self, value) - return value - - def insert(self, Py_ssize_t pos, element): - if element not in self: - self._list.insert(pos, element) - PySet_Add(self, element) - - def discard(self, element): - if element in self: - set.remove(self, element) - self._list.remove(element) - - def clear(self): - set.clear(self) - self._list = [] - - def __getitem__(self, key): - return self._list[key] - - def __iter__(self): - return iter(self._list) - - def __add__(self, other): - return self.union(other) - - def __repr__(self): - return "%s(%r)" % (self.__class__.__name__, self._list) - - __str__ = __repr__ - - def update(self, *iterables): - for iterable in iterables: - for e in iterable: - if e not in self: - self._list.append(e) - set.add(self, e) - - def __ior__(self, iterable): - self.update(iterable) - return self - - def union(self, *other): - result = self.copy() - result.update(*other) - return result - - def __or__(self, other): - return self.union(other) - - def intersection(self, *other): - cdef set other_set = set.intersection(self, *other) - return self._from_list([a for a in self._list if a in other_set]) - - def __and__(self, other): - return self.intersection(other) - - def symmetric_difference(self, other): - cdef set other_set - if isinstance(other, set): - other_set = <set> other - collection = other_set - elif isinstance(other, Collection): - collection = other - other_set = set(other) - else: - collection = list(other) - other_set = set(collection) - result = self._from_list([a for a in self._list if a not in other_set]) - result.update(a for a in collection if a not in self) - return result - - def __xor__(self, other): - return self.symmetric_difference(other) - - def difference(self, *other): - cdef set other_set = set.difference(self, *other) - return self._from_list([a for a in self._list if a in other_set]) - - def __sub__(self, other): - return self.difference(other) - - def intersection_update(self, *other): - set.intersection_update(self, *other) - self._list = [a for a in self._list if a in self] - - def __iand__(self, other): - self.intersection_update(other) - return self - - cpdef symmetric_difference_update(self, other): - collection = other if isinstance(other, Collection) else list(other) - set.symmetric_difference_update(self, collection) - self._list = [a for a in self._list if a in self] - self._list += [a for a in collection if a in self] - - def __ixor__(self, other): - self.symmetric_difference_update(other) - return self - - def difference_update(self, *other): - set.difference_update(self, *other) - self._list = [a for a in self._list if a in self] - - def __isub__(self, other): - self.difference_update(other) - return self - -cdef object cy_id(object item): - return PyLong_FromLongLong(<long long> (<void *>item)) - -# NOTE: cython 0.x will call __add__, __sub__, etc with the parameter swapped -# instead of the __rmeth__, so they need to check that also self is of the -# correct type. This is fixed in cython 3.x. See: -# https://docs.cython.org/en/latest/src/userguide/special_methods.html#arithmetic-methods -cdef class IdentitySet: - """A set that considers only object id() for uniqueness. - - This strategy has edge cases for builtin types- it's possible to have - two 'foo' strings in one of these sets, for example. Use sparingly. - - """ - - cdef dict _members - - def __init__(self, iterable=None): - self._members = {} - if iterable: - self.update(iterable) - - def add(self, value): - self._members[cy_id(value)] = value - - def __contains__(self, value): - return cy_id(value) in self._members - - cpdef remove(self, value): - del self._members[cy_id(value)] - - def discard(self, value): - try: - self.remove(value) - except KeyError: - pass - - def pop(self): - cdef tuple pair - try: - pair = self._members.popitem() - return pair[1] - except KeyError: - raise KeyError("pop from an empty set") - - def clear(self): - self._members.clear() - - def __eq__(self, other): - cdef IdentitySet other_ - if isinstance(other, IdentitySet): - other_ = other - return self._members == other_._members - else: - return False - - def __ne__(self, other): - cdef IdentitySet other_ - if isinstance(other, IdentitySet): - other_ = other - return self._members != other_._members - else: - return True - - cpdef issubset(self, iterable): - cdef IdentitySet other - if isinstance(iterable, self.__class__): - other = iterable - else: - other = self.__class__(iterable) - - if len(self) > len(other): - return False - for m in filterfalse(other._members.__contains__, self._members): - return False - return True - - def __le__(self, other): - if not isinstance(other, IdentitySet): - return NotImplemented - return self.issubset(other) - - def __lt__(self, other): - if not isinstance(other, IdentitySet): - return NotImplemented - return len(self) < len(other) and self.issubset(other) - - cpdef issuperset(self, iterable): - cdef IdentitySet other - if isinstance(iterable, self.__class__): - other = iterable - else: - other = self.__class__(iterable) - - if len(self) < len(other): - return False - for m in filterfalse(self._members.__contains__, other._members): - return False - return True - - def __ge__(self, other): - if not isinstance(other, IdentitySet): - return NotImplemented - return self.issuperset(other) - - def __gt__(self, other): - if not isinstance(other, IdentitySet): - return NotImplemented - return len(self) > len(other) and self.issuperset(other) - - cpdef IdentitySet union(self, iterable): - cdef IdentitySet result = self.__class__() - result._members.update(self._members) - result.update(iterable) - return result - - def __or__(self, other): - if not isinstance(other, IdentitySet) or not isinstance(self, IdentitySet): - return NotImplemented - return self.union(other) - - cpdef update(self, iterable): - for obj in iterable: - self._members[cy_id(obj)] = obj - - def __ior__(self, other): - if not isinstance(other, IdentitySet): - return NotImplemented - self.update(other) - return self - - cpdef IdentitySet difference(self, iterable): - cdef IdentitySet result = self.__new__(self.__class__) - if isinstance(iterable, self.__class__): - other = (<IdentitySet>iterable)._members - else: - other = {cy_id(obj) for obj in iterable} - result._members = {k:v for k, v in self._members.items() if k not in other} - return result - - def __sub__(self, other): - if not isinstance(other, IdentitySet) or not isinstance(self, IdentitySet): - return NotImplemented - return self.difference(other) - - cpdef difference_update(self, iterable): - cdef IdentitySet other = self.difference(iterable) - self._members = other._members - - def __isub__(self, other): - if not isinstance(other, IdentitySet): - return NotImplemented - self.difference_update(other) - return self - - cpdef IdentitySet intersection(self, iterable): - cdef IdentitySet result = self.__new__(self.__class__) - if isinstance(iterable, self.__class__): - other = (<IdentitySet>iterable)._members - else: - other = {cy_id(obj) for obj in iterable} - result._members = {k: v for k, v in self._members.items() if k in other} - return result - - def __and__(self, other): - if not isinstance(other, IdentitySet) or not isinstance(self, IdentitySet): - return NotImplemented - return self.intersection(other) - - cpdef intersection_update(self, iterable): - cdef IdentitySet other = self.intersection(iterable) - self._members = other._members - - def __iand__(self, other): - if not isinstance(other, IdentitySet): - return NotImplemented - self.intersection_update(other) - return self - - cpdef IdentitySet symmetric_difference(self, iterable): - cdef IdentitySet result = self.__new__(self.__class__) - cdef dict other - if isinstance(iterable, self.__class__): - other = (<IdentitySet>iterable)._members - else: - other = {cy_id(obj): obj for obj in iterable} - result._members = {k: v for k, v in self._members.items() if k not in other} - result._members.update( - [(k, v) for k, v in other.items() if k not in self._members] - ) - return result - - def __xor__(self, other): - if not isinstance(other, IdentitySet) or not isinstance(self, IdentitySet): - return NotImplemented - return self.symmetric_difference(other) - - cpdef symmetric_difference_update(self, iterable): - cdef IdentitySet other = self.symmetric_difference(iterable) - self._members = other._members - - def __ixor__(self, other): - if not isinstance(other, IdentitySet): - return NotImplemented - self.symmetric_difference(other) - return self - - cpdef IdentitySet copy(self): - cdef IdentitySet cp = self.__new__(self.__class__) - cp._members = self._members.copy() - return cp - - def __copy__(self): - return self.copy() - - def __len__(self): - return len(self._members) - - def __iter__(self): - return iter(self._members.values()) - - def __hash__(self): - raise TypeError("set objects are unhashable") - - def __repr__(self): - return "%s(%r)" % (type(self).__name__, list(self._members.values())) diff --git a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/immutabledict.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/immutabledict.cpython-311-x86_64-linux-gnu.so Binary files differdeleted file mode 100755 index bc41cd9..0000000 --- a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/immutabledict.cpython-311-x86_64-linux-gnu.so +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/immutabledict.pxd b/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/immutabledict.pxd deleted file mode 100644 index 76f2289..0000000 --- a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/immutabledict.pxd +++ /dev/null @@ -1,8 +0,0 @@ -# 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 diff --git a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/immutabledict.pyx b/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/immutabledict.pyx deleted file mode 100644 index b37eccc..0000000 --- a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/immutabledict.pyx +++ /dev/null @@ -1,133 +0,0 @@ -# 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 - - -def _readonly_fn(obj): - raise TypeError( - "%s object is immutable and/or readonly" % obj.__class__.__name__) - - -def _immutable_fn(obj): - raise TypeError( - "%s object is immutable" % obj.__class__.__name__) - - -class ReadOnlyContainer: - - __slots__ = () - - def _readonly(self, *a,**kw): - _readonly_fn(self) - - __delitem__ = __setitem__ = __setattr__ = _readonly - - -class ImmutableDictBase(dict): - def _immutable(self, *a,**kw): - _immutable_fn(self) - - @classmethod - def __class_getitem__(cls, key): - return cls - - __delitem__ = __setitem__ = __setattr__ = _immutable - clear = pop = popitem = setdefault = update = _immutable - - -cdef class immutabledict(dict): - def __repr__(self): - return f"immutabledict({dict.__repr__(self)})" - - @classmethod - def __class_getitem__(cls, key): - return cls - - def union(self, *args, **kw): - cdef dict to_merge = None - cdef immutabledict result - cdef Py_ssize_t args_len = len(args) - if args_len > 1: - raise TypeError( - f'union expected at most 1 argument, got {args_len}' - ) - if args_len == 1: - attribute = args[0] - if isinstance(attribute, dict): - to_merge = <dict> attribute - if to_merge is None: - to_merge = dict(*args, **kw) - - if PyDict_Size(to_merge) == 0: - return self - - # new + update is faster than immutabledict(self) - result = immutabledict() - PyDict_Update(result, self) - PyDict_Update(result, to_merge) - return result - - def merge_with(self, *other): - cdef immutabledict result = None - cdef object d - cdef bint update = False - if not other: - return self - for d in other: - if d: - if update == False: - update = True - # new + update is faster than immutabledict(self) - result = immutabledict() - PyDict_Update(result, self) - PyDict_Update( - result, <dict>(d if isinstance(d, dict) else dict(d)) - ) - - return self if update == False else result - - def copy(self): - return self - - def __reduce__(self): - return immutabledict, (dict(self), ) - - def __delitem__(self, k): - _immutable_fn(self) - - def __setitem__(self, k, v): - _immutable_fn(self) - - def __setattr__(self, k, v): - _immutable_fn(self) - - def clear(self, *args, **kw): - _immutable_fn(self) - - def pop(self, *args, **kw): - _immutable_fn(self) - - def popitem(self, *args, **kw): - _immutable_fn(self) - - def setdefault(self, *args, **kw): - _immutable_fn(self) - - def update(self, *args, **kw): - _immutable_fn(self) - - # PEP 584 - def __ior__(self, other): - _immutable_fn(self) - - def __or__(self, other): - return immutabledict(dict.__or__(self, other)) - - def __ror__(self, other): - # NOTE: this is used only in cython 3.x; - # version 0.x will call __or__ with args inversed - return immutabledict(dict.__ror__(self, other)) diff --git a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/processors.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/processors.cpython-311-x86_64-linux-gnu.so Binary files differdeleted file mode 100755 index 1d86a7a..0000000 --- a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/processors.cpython-311-x86_64-linux-gnu.so +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/processors.pyx b/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/processors.pyx deleted file mode 100644 index 3d71456..0000000 --- a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/processors.pyx +++ /dev/null @@ -1,68 +0,0 @@ -# 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 -from datetime import date as date_cls -import re - -from cpython.object cimport PyObject_Str -from cpython.unicode cimport PyUnicode_AsASCIIString, PyUnicode_Check, PyUnicode_Decode -from libc.stdio cimport sscanf - - -def int_to_boolean(value): - if value is None: - return None - return True if value else False - -def to_str(value): - return PyObject_Str(value) if value is not None else None - -def to_float(value): - return float(value) if value is not None else None - -cdef inline bytes to_bytes(object value, str type_name): - try: - return PyUnicode_AsASCIIString(value) - except Exception as e: - raise ValueError( - f"Couldn't parse {type_name} string '{value!r}' " - "- value is not a string." - ) from e - -def str_to_datetime(value): - if value is not None: - value = datetime_cls.fromisoformat(value) - return value - -def str_to_time(value): - if value is not None: - value = time_cls.fromisoformat(value) - return value - - -def str_to_date(value): - if value is not None: - value = date_cls.fromisoformat(value) - return value - - - -cdef class DecimalResultProcessor: - cdef object type_ - cdef str format_ - - def __cinit__(self, type_, format_): - self.type_ = type_ - self.format_ = format_ - - def process(self, object value): - if value is None: - return None - else: - return self.type_(self.format_ % value) diff --git a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/resultproxy.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/resultproxy.cpython-311-x86_64-linux-gnu.so Binary files differdeleted file mode 100755 index 8e7c46c..0000000 --- a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/resultproxy.cpython-311-x86_64-linux-gnu.so +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/resultproxy.pyx b/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/resultproxy.pyx deleted file mode 100644 index b6e357a..0000000 --- a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/resultproxy.pyx +++ /dev/null @@ -1,102 +0,0 @@ -# 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: - cdef readonly object _parent - cdef readonly dict _key_to_index - cdef readonly tuple _data - - def __init__(self, object parent, object processors, dict key_to_index, object data): - """Row objects are constructed by CursorResult objects.""" - - self._parent = parent - - self._key_to_index = key_to_index - - if processors: - self._data = _apply_processors(processors, data) - else: - self._data = tuple(data) - - def __reduce__(self): - return ( - rowproxy_reconstructor, - (self.__class__, self.__getstate__()), - ) - - def __getstate__(self): - return {"_parent": self._parent, "_data": self._data} - - def __setstate__(self, dict state): - parent = state["_parent"] - self._parent = parent - self._data = state["_data"] - self._key_to_index = parent._key_to_index - - def _values_impl(self): - return list(self) - - def __iter__(self): - return iter(self._data) - - def __len__(self): - return len(self._data) - - def __hash__(self): - return hash(self._data) - - def __getitem__(self, index): - return self._data[index] - - def _get_by_key_impl_mapping(self, key): - return self._get_by_key_impl(key, 0) - - cdef _get_by_key_impl(self, object key, int attr_err): - index = self._key_to_index.get(key) - if index is not None: - return self._data[<int>index] - self._parent._key_not_found(key, attr_err != 0) - - def __getattr__(self, name): - return self._get_by_key_impl(name, 1) - - def _to_tuple_instance(self): - return self._data - - -cdef tuple _apply_processors(proc, data): - res = [] - for i in range(len(proc)): - p = proc[i] - if p is None: - res.append(data[i]) - else: - res.append(p(data[i])) - return tuple(res) - - -def rowproxy_reconstructor(cls, state): - obj = cls.__new__(cls) - obj.__setstate__(state) - return obj - - -cdef int is_contiguous(tuple indexes): - cdef int i - for i in range(1, len(indexes)): - if indexes[i-1] != indexes[i] -1: - return 0 - return 1 - - -def tuplegetter(*indexes): - if len(indexes) == 1 or is_contiguous(indexes) != 0: - # slice form is faster but returns a list if input is list - return operator.itemgetter(slice(indexes[0], indexes[-1] + 1)) - else: - return operator.itemgetter(*indexes) diff --git a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/util.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/util.cpython-311-x86_64-linux-gnu.so Binary files differdeleted file mode 100755 index db67d3e..0000000 --- a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/util.cpython-311-x86_64-linux-gnu.so +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/util.pyx b/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/util.pyx deleted file mode 100644 index cb17acd..0000000 --- a/venv/lib/python3.11/site-packages/sqlalchemy/cyextension/util.pyx +++ /dev/null @@ -1,91 +0,0 @@ -# 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): - 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 - -def _distill_params_20(object params): - if params is None: - return _Empty_Tuple - elif isinstance(params, list) or isinstance(params, tuple): - _check_item(params) - return params - elif isinstance(params, dict) or isinstance(params, Mapping): - return [params] - else: - raise exc.ArgumentError("mapping or list expected for parameters") - - -def _distill_raw_params(object params): - if params is None: - return _Empty_Tuple - elif isinstance(params, list): - _check_item(params) - return params - elif _mapping_or_tuple(params): - return [params] - else: - raise exc.ArgumentError("mapping or sequence expected for parameters") - -cdef class prefix_anon_map(dict): - def __missing__(self, str key): - cdef str derived - cdef int anonymous_counter - cdef dict self_dict = self - - derived = key.split(" ", 1)[1] - - anonymous_counter = self_dict.get(derived, 1) - self_dict[derived] = anonymous_counter + 1 - value = f"{derived}_{anonymous_counter}" - self_dict[key] = value - return value - - -cdef class cache_anon_map(dict): - cdef int _index - - def __init__(self): - self._index = 0 - - def get_anon(self, obj): - cdef long long idself - cdef str id_ - cdef dict self_dict = self - - idself = id(obj) - if idself in self_dict: - return self_dict[idself], True - else: - id_ = self.__missing__(idself) - return id_, False - - def __missing__(self, key): - cdef str val - cdef dict self_dict = self - - self_dict[key] = val = str(self._index) - self._index += 1 - return val - |