| Server IP : 185.143.234.130 / Your IP : 185.215.232.195 Web Server : LiteSpeed System : Linux jambul.7ho.st 5.14.0-503.40.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Mon May 5 06:06:04 EDT 2025 x86_64 User : renecafe ( 1327) PHP Version : 8.1.33 Disable Function : show_source, system, shell_exec, passthru, exec, popen, proc_open MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /proc/self/root/lib64/python3.9/site-packages/setools/diff/ |
Upload File : |
# Copyright 2015, Tresys Technology, LLC
#
# SPDX-License-Identifier: LGPL-2.1-only
#
from typing import MutableMapping
from weakref import WeakKeyDictionary
class DiffResultDescriptor:
"""Descriptor for managing diff results."""
# @properties could be used instead, but there are so
# many result attributes, this will keep the code cleaner.
def __init__(self, diff_function: str) -> None:
self.diff_function = diff_function
# use weak references so instances can be
# garbage collected, rather than unnecessarily
# kept around due to this descriptor.
self.instances: MutableMapping = WeakKeyDictionary()
def __get__(self, obj, objtype=None):
if obj is None:
return self
if self.instances.setdefault(obj, None) is None:
diff = getattr(obj, self.diff_function)
diff()
return self.instances[obj]
def __set__(self, obj, value):
self.instances[obj] = value
def __delete__(self, obj):
self.instances[obj] = None