def from_file(cls, filename, kind=None): """ Configuration from a string filename """ func = None if filename.endswith('.yml') or kind=='YAML': func = get_yaml elif filename.endswith('.json') or kind=='JSON': func = get_json elif filename.endswith('.pf') or kind=='PF': from nsl.antelope.pf import get_pf c = get_pf(filename) else: raise NotImplementedError("No support for format: {0} type={1}".format(filename, kind)) if func: with open(filename) as f: c = func(f) try: config = cls(**c) except: config = cls() config.__content__ = c finally: return config
def load_pf(cls, pfname='db2quakeml'): try: pf = get_pf(pfname) except Exception: pf = {} finally: cls.agency = pf.get('AGENCY_CODE', 'XX') cls.place_db = pf.get('PLACE_DB', None) cls.auth_id = pf.get('authority', 'local') cls.emap = pf.get('etypes',{}) del pf
def main(cls): """ Main function to run as a script """ # Change logger to class name, logging to stderr cls.logger = logging.customLogger(cls.__name__, ['stderr']) # Prefer command line orb, else see if you have one in a pf if len(sys.argv) > 1: ORB = sys.argv[1] else: pf = get_pf(cls._pffilename) ORB = pf.get('ORB') # Instantiate and run forever rtapp = cls(orbname=ORB) try: rtapp.start() except Exception as e: rtapp.logger.exception(e) rtapp.logger.critical("Uncaught exception, exiting...") sys.exit(1)