404

[ Avaa Bypassed ]




Upload:

Command:

elspacio@3.17.155.205: ~ $
# sqlalchemy/inspect.py
# Copyright (C) 2005-2021 the SQLAlchemy authors and contributors
# <see AUTHORS file>
#
# This module is part of SQLAlchemy and is released under
# the MIT License: http://www.opensource.org/licenses/mit-license.php

"""The inspection module provides the :func:`_sa.inspect` function,
which delivers runtime information about a wide variety
of SQLAlchemy objects, both within the Core as well as the
ORM.

The :func:`_sa.inspect` function is the entry point to SQLAlchemy's
public API for viewing the configuration and construction
of in-memory objects.   Depending on the type of object
passed to :func:`_sa.inspect`, the return value will either be
a related object which provides a known interface, or in many
cases it will return the object itself.

The rationale for :func:`_sa.inspect` is twofold.  One is that
it replaces the need to be aware of a large variety of "information
getting" functions in SQLAlchemy, such as
:meth:`_reflection.Inspector.from_engine`,
:func:`.orm.attributes.instance_state`, :func:`_orm.class_mapper`,
and others.    The other is that the return value of :func:`_sa.inspect`
is guaranteed to obey a documented API, thus allowing third party
tools which build on top of SQLAlchemy configurations to be constructed
in a forwards-compatible way.

"""

from . import exc
from . import util


_registrars = util.defaultdict(list)


def inspect(subject, raiseerr=True):
    """Produce an inspection object for the given target.

    The returned value in some cases may be the
    same object as the one given, such as if a
    :class:`_orm.Mapper` object is passed.   In other
    cases, it will be an instance of the registered
    inspection type for the given object, such as
    if an :class:`_engine.Engine` is passed, an
    :class:`_reflection.Inspector` object is returned.

    :param subject: the subject to be inspected.
    :param raiseerr: When ``True``, if the given subject
     does not
     correspond to a known SQLAlchemy inspected type,
     :class:`sqlalchemy.exc.NoInspectionAvailable`
     is raised.  If ``False``, ``None`` is returned.

    """
    type_ = type(subject)
    for cls in type_.__mro__:
        if cls in _registrars:
            reg = _registrars[cls]
            if reg is True:
                return subject
            ret = reg(subject)
            if ret is not None:
                break
    else:
        reg = ret = None

    if raiseerr and (reg is None or ret is None):
        raise exc.NoInspectionAvailable(
            "No inspection system is "
            "available for object of type %s" % type_
        )
    return ret


def _inspects(*types):
    def decorate(fn_or_cls):
        for type_ in types:
            if type_ in _registrars:
                raise AssertionError(
                    "Type %s is already " "registered" % type_
                )
            _registrars[type_] = fn_or_cls
        return fn_or_cls

    return decorate


def _self_inspects(cls):
    _inspects(cls)(True)
    return cls

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
connectors Folder 0755
databases Folder 0755
dialects Folder 0755
engine Folder 0755
event Folder 0755
ext Folder 0755
orm Folder 0755
pool Folder 0755
sql Folder 0755
testing Folder 0755
util Folder 0755
__init__.py File 4.68 KB 0644
cprocessors.cpython-311-x86_64-linux-gnu.so File 18.89 KB 0755
cresultproxy.cpython-311-x86_64-linux-gnu.so File 23.58 KB 0755
cutils.cpython-311-x86_64-linux-gnu.so File 12.35 KB 0755
events.py File 52.37 KB 0644
exc.py File 17.46 KB 0644
inspection.py File 2.96 KB 0644
interfaces.py File 12.44 KB 0644
log.py File 6.55 KB 0644
processors.py File 5.61 KB 0644
schema.py File 2.41 KB 0644
types.py File 3.3 KB 0644