1# util/__init__.py 
    2# Copyright (C) 2005-2021 the SQLAlchemy authors and contributors 
    3# <see AUTHORS file> 
    4# 
    5# This module is part of SQLAlchemy and is released under 
    6# the MIT License: http://www.opensource.org/licenses/mit-license.php 
    7 
    8 
    9from collections import defaultdict  # noqa 
    10from contextlib import contextmanager  # noqa 
    11from functools import partial  # noqa 
    12from functools import update_wrapper  # noqa 
    13 
    14from ._collections import coerce_generator_arg  # noqa 
    15from ._collections import collections_abc  # noqa 
    16from ._collections import column_dict  # noqa 
    17from ._collections import column_set  # noqa 
    18from ._collections import EMPTY_SET  # noqa 
    19from ._collections import flatten_iterator  # noqa 
    20from ._collections import has_dupes  # noqa 
    21from ._collections import has_intersection  # noqa 
    22from ._collections import IdentitySet  # noqa 
    23from ._collections import ImmutableContainer  # noqa 
    24from ._collections import immutabledict  # noqa 
    25from ._collections import ImmutableProperties  # noqa 
    26from ._collections import KeyedTuple  # noqa 
    27from ._collections import lightweight_named_tuple  # noqa 
    28from ._collections import LRUCache  # noqa 
    29from ._collections import ordered_column_set  # noqa 
    30from ._collections import OrderedDict  # noqa 
    31from ._collections import OrderedIdentitySet  # noqa 
    32from ._collections import OrderedProperties  # noqa 
    33from ._collections import OrderedSet  # noqa 
    34from ._collections import PopulateDict  # noqa 
    35from ._collections import Properties  # noqa 
    36from ._collections import ScopedRegistry  # noqa 
    37from ._collections import ThreadLocalRegistry  # noqa 
    38from ._collections import to_column_set  # noqa 
    39from ._collections import to_list  # noqa 
    40from ._collections import to_set  # noqa 
    41from ._collections import unique_list  # noqa 
    42from ._collections import UniqueAppender  # noqa 
    43from ._collections import update_copy  # noqa 
    44from ._collections import WeakPopulateDict  # noqa 
    45from ._collections import WeakSequence  # noqa 
    46from ._preloaded import dependencies  # noqa 
    47from .compat import arm  # noqa 
    48from .compat import b  # noqa 
    49from .compat import b64decode  # noqa 
    50from .compat import b64encode  # noqa 
    51from .compat import binary_type  # noqa 
    52from .compat import byte_buffer  # noqa 
    53from .compat import callable  # noqa 
    54from .compat import cmp  # noqa 
    55from .compat import cpython  # noqa 
    56from .compat import decode_backslashreplace  # noqa 
    57from .compat import dottedgetter  # noqa 
    58from .compat import inspect_getfullargspec  # noqa 
    59from .compat import int_types  # noqa 
    60from .compat import iterbytes  # noqa 
    61from .compat import itertools_filter  # noqa 
    62from .compat import itertools_filterfalse  # noqa 
    63from .compat import jython  # noqa 
    64from .compat import namedtuple  # noqa 
    65from .compat import nested  # noqa 
    66from .compat import next  # noqa 
    67from .compat import osx  # noqa 
    68from .compat import parse_qsl  # noqa 
    69from .compat import pickle  # noqa 
    70from .compat import print_  # noqa 
    71from .compat import py2k  # noqa 
    72from .compat import py33  # noqa 
    73from .compat import py36  # noqa 
    74from .compat import py3k  # noqa 
    75from .compat import pypy  # noqa 
    76from .compat import quote_plus  # noqa 
    77from .compat import raise_  # noqa 
    78from .compat import raise_from_cause  # noqa 
    79from .compat import reduce  # noqa 
    80from .compat import reraise  # noqa 
    81from .compat import safe_kwarg  # noqa 
    82from .compat import string_types  # noqa 
    83from .compat import StringIO  # noqa 
    84from .compat import text_type  # noqa 
    85from .compat import threading  # noqa 
    86from .compat import timezone  # noqa 
    87from .compat import u  # noqa 
    88from .compat import ue  # noqa 
    89from .compat import unquote  # noqa 
    90from .compat import unquote_plus  # noqa 
    91from .compat import win32  # noqa 
    92from .compat import with_metaclass  # noqa 
    93from .compat import zip_longest  # noqa 
    94from .deprecations import deprecated  # noqa 
    95from .deprecations import deprecated_cls  # noqa 
    96from .deprecations import deprecated_params  # noqa 
    97from .deprecations import inject_docstring_text  # noqa 
    98from .deprecations import pending_deprecation  # noqa 
    99from .deprecations import warn_deprecated  # noqa 
    100from .deprecations import warn_pending_deprecation  # noqa 
    101from .langhelpers import add_parameter_text  # noqa 
    102from .langhelpers import as_interface  # noqa 
    103from .langhelpers import asbool  # noqa 
    104from .langhelpers import asint  # noqa 
    105from .langhelpers import assert_arg_type  # noqa 
    106from .langhelpers import attrsetter  # noqa 
    107from .langhelpers import bool_or_str  # noqa 
    108from .langhelpers import chop_traceback  # noqa 
    109from .langhelpers import class_hierarchy  # noqa 
    110from .langhelpers import classproperty  # noqa 
    111from .langhelpers import clsname_as_plain_name  # noqa 
    112from .langhelpers import coerce_kw_type  # noqa 
    113from .langhelpers import constructor_copy  # noqa 
    114from .langhelpers import counter  # noqa 
    115from .langhelpers import decode_slice  # noqa 
    116from .langhelpers import decorator  # noqa 
    117from .langhelpers import dictlike_iteritems  # noqa 
    118from .langhelpers import duck_type_collection  # noqa 
    119from .langhelpers import ellipses_string  # noqa 
    120from .langhelpers import EnsureKWArgType  # noqa 
    121from .langhelpers import format_argspec_init  # noqa 
    122from .langhelpers import format_argspec_plus  # noqa 
    123from .langhelpers import generic_repr  # noqa 
    124from .langhelpers import get_callable_argspec  # noqa 
    125from .langhelpers import get_cls_kwargs  # noqa 
    126from .langhelpers import get_func_kwargs  # noqa 
    127from .langhelpers import getargspec_init  # noqa 
    128from .langhelpers import group_expirable_memoized_property  # noqa 
    129from .langhelpers import hybridmethod  # noqa 
    130from .langhelpers import hybridproperty  # noqa 
    131from .langhelpers import iterate_attributes  # noqa 
    132from .langhelpers import map_bits  # noqa 
    133from .langhelpers import md5_hex  # noqa 
    134from .langhelpers import memoized_instancemethod  # noqa 
    135from .langhelpers import memoized_property  # noqa 
    136from .langhelpers import MemoizedSlots  # noqa 
    137from .langhelpers import methods_equivalent  # noqa 
    138from .langhelpers import monkeypatch_proxied_specials  # noqa 
    139from .langhelpers import NoneType  # noqa 
    140from .langhelpers import only_once  # noqa 
    141from .langhelpers import PluginLoader  # noqa 
    142from .langhelpers import portable_instancemethod  # noqa 
    143from .langhelpers import quoted_token_parser  # noqa 
    144from .langhelpers import safe_reraise  # noqa 
    145from .langhelpers import set_creation_order  # noqa 
    146from .langhelpers import symbol  # noqa 
    147from .langhelpers import unbound_method_to_callable  # noqa 
    148from .langhelpers import warn  # noqa 
    149from .langhelpers import warn_exception  # noqa 
    150from .langhelpers import warn_limited  # noqa 
    151from .langhelpers import wrap_callable  # noqa 
    152 
    153 
    154# things that used to be not always available, 
    155# but are now as of current support Python versions