Source code for AutoArchive._infrastructure.utils.utils

# _utils.py
#
# Project: AutoArchive
# License: GNU GPLv3
#
# Copyright (C) 2003 - 2011 Róbert Čerňanský



""":class:`Utils` and :class:`Constants` classes."""



__all__ = ["Utils", "Constants"]



# {{{ INCLUDES

import sys
import os
from abc import *
from functools import wraps

# }}} INCLUDES



# {{{ CLASSES

[docs]class Utils(metaclass = ABCMeta): "Various utility methods." @abstractmethod def __init__(self): pass
[docs] @classmethod def printWarning(cls, msg, appName = None): "Prints ``msg`` as a warning to standard error." cls.__printToStdErr("Warning", msg, appName)
[docs] @classmethod def printError(cls, msg, appName = None): "Prints ``msg`` as an error to standard error." cls.__printToStdErr("Error", msg, appName)
[docs] @classmethod def fatalExit(cls, msg, appName = None): "Prints ``msg`` to standard error and exits with exit code 2." cls.__printToStdErr("Fatal Error", msg, appName) sys.exit(2)
[docs] @staticmethod def uniq(decorated): "Decorator that filters out duplicate elements from an iterable returned by decorated function." @wraps(decorated) def wrapper(*args, **kwargs): seen = set() for item in decorated(*args, **kwargs): if item not in seen: seen.add(item) yield item return wrapper
@staticmethod def __printToStdErr(attentionString, msg, appName = None): if appName is None: appName = sys.argv[0] sys.stderr.write(str.format("{}: {}! {}\n", appName, attentionString, msg))
[docs]class Constants(metaclass = ABCMeta): "Defines various “global” constants." #: Debugging support. DEBUG = os.environ.get("AADEBUG") @abstractmethod def __init__(self): pass
# }}} CLASSES