Initial commit: Masina-Dock Vehicle Management System
This commit is contained in:
commit
ae923e2c41
4999 changed files with 1607266 additions and 0 deletions
|
|
@ -0,0 +1,90 @@
|
|||
# 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 _is_mapping_or_tuple(object value):
|
||||
return isinstance(value, dict) or isinstance(value, tuple) or isinstance(value, Mapping)
|
||||
|
||||
|
||||
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):
|
||||
if params and not _is_mapping(params[0]):
|
||||
raise exc.ArgumentError(
|
||||
"List argument must consist only of dictionaries"
|
||||
)
|
||||
return params
|
||||
elif _is_mapping(params):
|
||||
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):
|
||||
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 _is_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
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue