import argparse import warnings import logging import yaml import os import re from pydarkstar.darkobject import DarkObject from pydarkstar.logutils import basic_config basic_config(verbose=True) from six import add_metaclass class MetaOptions(type): def __call__(cls, *args, **kwargs): obj = type.__call__(cls, *args, **kwargs) getattr(obj, '__after__', lambda: 1)() return obj @add_metaclass(MetaOptions) class BaseOptions(DarkObject): regex_tuple = re.compile('([^=]+)=([^=]+)') def __init__(self, config='config.yaml', description=None): super(BaseOptions, self).__init__() logging.debug('BaseOptions.__init__') self._ordered_keys = [] self._exclude_keys = set()
def __after__(self): super(BasicOptions, self).__after__() logutils.basic_config(verbose=self.verbose, silent=self.silent, fname='pydarkstar.log') self.log_values(level=logging.INFO)