404

[ Avaa Bypassed ]




Upload:

Command:

elspacio@13.59.88.8: ~ $
# testing/entities.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

import sqlalchemy as sa
from .. import exc as sa_exc
from ..util import compat

_repr_stack = set()


class BasicEntity(object):
    def __init__(self, **kw):
        for key, value in kw.items():
            setattr(self, key, value)

    def __repr__(self):
        if id(self) in _repr_stack:
            return object.__repr__(self)
        _repr_stack.add(id(self))
        try:
            return "%s(%s)" % (
                (self.__class__.__name__),
                ", ".join(
                    [
                        "%s=%r" % (key, getattr(self, key))
                        for key in sorted(self.__dict__.keys())
                        if not key.startswith("_")
                    ]
                ),
            )
        finally:
            _repr_stack.remove(id(self))


_recursion_stack = set()


class ComparableEntity(BasicEntity):
    def __hash__(self):
        return hash(self.__class__)

    def __ne__(self, other):
        return not self.__eq__(other)

    def __eq__(self, other):
        """'Deep, sparse compare.

        Deeply compare two entities, following the non-None attributes of the
        non-persisted object, if possible.

        """
        if other is self:
            return True
        elif not self.__class__ == other.__class__:
            return False

        if id(self) in _recursion_stack:
            return True
        _recursion_stack.add(id(self))

        try:
            # pick the entity that's not SA persisted as the source
            try:
                self_key = sa.orm.attributes.instance_state(self).key
            except sa.orm.exc.NO_STATE:
                self_key = None

            if other is None:
                a = self
                b = other
            elif self_key is not None:
                a = other
                b = self
            else:
                a = self
                b = other

            for attr in list(a.__dict__):
                if attr.startswith("_"):
                    continue
                value = getattr(a, attr)

                try:
                    # handle lazy loader errors
                    battr = getattr(b, attr)
                except (AttributeError, sa_exc.UnboundExecutionError):
                    return False

                if hasattr(value, "__iter__") and not isinstance(
                    value, compat.string_types
                ):
                    if hasattr(value, "__getitem__") and not hasattr(
                        value, "keys"
                    ):
                        if list(value) != list(battr):
                            return False
                    else:
                        if set(value) != set(battr):
                            return False
                else:
                    if value is not None and value != battr:
                        return False
            return True
        finally:
            _recursion_stack.remove(id(self))

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
plugin Folder 0755
suite Folder 0755
__init__.py File 2.8 KB 0644
assertions.py File 21.74 KB 0644
assertsql.py File 13.27 KB 0644
config.py File 5.53 KB 0644
engines.py File 10.28 KB 0644
entities.py File 3.13 KB 0644
exclusions.py File 12.91 KB 0644
fixtures.py File 14.57 KB 0644
mock.py File 893 B 0644
pickleable.py File 2.63 KB 0644
profiling.py File 8.54 KB 0644
provision.py File 5.44 KB 0644
replay_fixture.py File 5.74 KB 0644
requirements.py File 32.29 KB 0644
schema.py File 4.65 KB 0644
util.py File 9.91 KB 0644
warnings.py File 1.61 KB 0644