✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ premium290.web-hosting.com ​🇻​♯➤ 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP 🇾​♯➤ 2025

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 63.250.38.37 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.101
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗙𝗙 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ 𝗔𝗟𝗟 𝗪𝗢𝗥𝗞𝗜𝗡𝗚....

𝗛𝗢𝗠𝗘
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /opt/cloudlinux/venv/lib/python3.11/site-packages/testfixtures//django.py
from functools import partial
from typing import Dict, Any, Sequence, Callable, Optional

from django.db.models import Model

from . import compare as base_compare
from .comparison import _compare_mapping, register, CompareContext, unspecified, Registry


def instance_fields(instance):
    opts = instance._meta
    for name in (
        'concrete_fields',
        'virtual_fields',
        'private_fields',
    ):
        fields = getattr(opts, name, None)
        if fields:
            for field in fields:
                yield field


def model_to_dict(
        instance: Any,
        exclude: Sequence[str],
        include_not_editable: bool,
) -> Dict[str, Any]:
    data = {}
    for f in instance_fields(instance):
        if f.name in exclude:
            continue
        if not getattr(f, 'editable', False) and not include_not_editable:
            continue
        data[f.name] = f.value_from_object(instance)
    return data


def compare_model(x, y, context: CompareContext):
    """
    Returns an informative string describing the differences between the two
    supplied Django model instances. The way in which this comparison is
    performed can be controlled using the following parameters:

    :param ignore_fields:
      A sequence of fields to ignore during comparison, most commonly
      set to ``['id']``. By default, no fields are ignored.

    :param non_editable_fields:
      If `True`, then fields with ``editable=False`` will be included in the
      comparison. By default, these fields are ignored.
    """
    ignore_fields = context.get_option('ignore_fields', set())
    non_editable_fields= context.get_option('non_editable_fields', False)
    args = []
    for obj in x, y:
        args.append(model_to_dict(obj, ignore_fields, non_editable_fields))
    args.append(context)
    args.append(x)
    return _compare_mapping(*args)


register(Model, compare_model)


def compare(
        *args,
        x: Any = unspecified,
        y: Any = unspecified,
        expected: Any = unspecified,
        actual: Any = unspecified,
        prefix: str = None,
        suffix: str = None,
        x_label: str = None,
        y_label: str = None,
        raises: bool = True,
        recursive: bool = True,
        strict: bool = False,
        ignore_eq: bool = True,
        comparers: Registry = None,
        **options: Any
) -> Optional[str]:
    """
    This is identical to :func:`~testfixtures.compare`, but with ``ignore=True``
    automatically set to make comparing django :class:`~django.db.models.Model`
    instances easier.
    """
    return base_compare(
        *args,
        x=x,
        y=y,
        expected=expected,
        actual=actual,
        prefix=prefix,
        suffix=suffix,
        x_label=x_label,
        y_label=y_label,
        raises=raises,
        recursive=recursive,
        strict=strict,
        ignore_eq=ignore_eq,
        comparers=comparers,
        **options
    )


Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
25 Jun 2026 7.01 AM
root / root
0755
__pycache__
--
11 Feb 2026 8.04 AM
root / root
0755
tests
--
11 Feb 2026 8.04 AM
root / root
0755
__init__.py
1.194 KB
20 Jan 2026 1.01 PM
root / root
0644
comparison.py
39.142 KB
20 Jan 2026 1.01 PM
root / root
0644
compat.py
0.219 KB
20 Jan 2026 1.01 PM
root / root
0644
components.py
1.306 KB
20 Jan 2026 1.01 PM
root / root
0644
datetime.py
24.423 KB
20 Jan 2026 1.01 PM
root / root
0644
django.py
2.885 KB
20 Jan 2026 1.01 PM
root / root
0644
logcapture.py
10.755 KB
20 Jan 2026 1.01 PM
root / root
0644
mock.py
1.205 KB
20 Jan 2026 1.01 PM
root / root
0644
outputcapture.py
4.688 KB
20 Jan 2026 1.01 PM
root / root
0644
popen.py
9.887 KB
20 Jan 2026 1.01 PM
root / root
0644
replace.py
12.149 KB
20 Jan 2026 1.01 PM
root / root
0644
resolve.py
2.054 KB
20 Jan 2026 1.01 PM
root / root
0644
rmtree.py
2.523 KB
20 Jan 2026 1.01 PM
root / root
0644
shouldraise.py
3.578 KB
20 Jan 2026 1.01 PM
root / root
0644
shouldwarn.py
2.213 KB
20 Jan 2026 1.01 PM
root / root
0644
sybil.py
2.279 KB
20 Jan 2026 1.01 PM
root / root
0644
tempdirectory.py
12.887 KB
20 Jan 2026 1.01 PM
root / root
0644
twisted.py
4.8 KB
20 Jan 2026 1.01 PM
root / root
0644
utils.py
2.737 KB
20 Jan 2026 1.01 PM
root / root
0644
version.txt
0.006 KB
20 Jan 2026 1.01 PM
root / root
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF