MMCT TEAM
Server IP : 103.191.208.50  /  Your IP : 216.73.216.226
Web Server : LiteSpeed
System : Linux orion.herosite.pro 4.18.0-553.53.1.lve.el8.x86_64 #1 SMP Wed May 28 17:01:02 UTC 2025 x86_64
User : celkcksm ( 1031)
PHP Version : 5.6.40
Disable Function : show_source, system, shell_exec, passthru, exec
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /home/../usr/lib/python3.6/site-packages/pydbus/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/../usr/lib/python3.6/site-packages/pydbus/exitable.py
import inspect

class Exitable(object):
	__slots__ = ("_at_exit_cbs")

	def _at_exit(self, cb):
		try:
			self._at_exit_cbs
		except AttributeError:
			self._at_exit_cbs = []

		self._at_exit_cbs.append(cb)

	def __enter__(self):
		return self

	def __exit__(self, exc_type = None, exc_value = None, traceback = None):
		if self._exited:
			return

		for cb in reversed(self._at_exit_cbs):
			call_with_exc = True
			try:
				inspect.getcallargs(cb, exc_type, exc_value, traceback)
			except TypeError:
				call_with_exc = False

			if call_with_exc:
				cb(exc_type, exc_value, traceback)
			else:
				cb()

		self._at_exit_cbs = None

	@property
	def _exited(self):
		try:
			return self._at_exit_cbs is None
		except AttributeError:
			return True

def ExitableWithAliases(*exit_methods):
	class CustomExitable(Exitable):
		pass

	def exit(self):
		self.__exit__()

	for exit_method_name in exit_methods:
		setattr(CustomExitable, exit_method_name, exit)

	return CustomExitable

MMCT - 2023