Source code for wtforglib.supers

"""Top-level module for wtforglib Library."""

# vim:ft=py noqa: E800
import platform

from wtforglib.functions import WINDOZE

if platform.system() == WINDOZE:
    import ctypes  # noqa: WPS433

    SUPER = "Administrator"
else:
    from os import geteuid  # noqa: WPS433

    SUPER = "super user"


[docs] class AdminStateUnknownError(Exception): """Cannot determine whether the user is an admin."""
[docs] def issuper() -> bool: """Return True/False depending on process euid. Returns ------- bool : true if process euid is 0 """ try: is_super = geteuid() == 0 except AttributeError: is_super = ( ctypes.windll.shell32.IsUserAnAdmin() != 0 # type: ignore[attr-defined] ) return is_super
[docs] def requires_super_user(prefix: str = "Specified action") -> None: """Raises exception if process isn't euid 0. Parameters ---------- prefix : str Text to prefix to exception message Raises ------ PermissionError if process euid is not 0 """ if not issuper(): # pragma no cover raise PermissionError("{0} requires {1} priviledges!".format(prefix, SUPER))