Reworked so everything is in classes for easy expansion. Single entry point for all config files now.
This commit is contained in:
42
jobs/process/BaseProcess.py
Normal file
42
jobs/process/BaseProcess.py
Normal file
@@ -0,0 +1,42 @@
|
||||
import copy
|
||||
import json
|
||||
from collections import OrderedDict
|
||||
|
||||
from jobs import BaseJob
|
||||
|
||||
|
||||
class BaseProcess:
|
||||
meta: OrderedDict
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
process_id: int,
|
||||
job: BaseJob,
|
||||
config: OrderedDict
|
||||
):
|
||||
self.process_id = process_id
|
||||
self.job = job
|
||||
self.config = config
|
||||
self.meta = copy.deepcopy(self.job.meta)
|
||||
|
||||
def get_conf(self, key, default=None, required=False, as_type=None):
|
||||
if key in self.config:
|
||||
value = self.config[key]
|
||||
if as_type is not None:
|
||||
value = as_type(value)
|
||||
return value
|
||||
elif required:
|
||||
raise ValueError(f'config file error. Missing "config.process[{self.process_id}].{key}" key')
|
||||
else:
|
||||
if as_type is not None:
|
||||
return as_type(default)
|
||||
return default
|
||||
|
||||
def run(self):
|
||||
# implement in child class
|
||||
# be sure to call super().run() first incase something is added here
|
||||
pass
|
||||
|
||||
def add_meta(self, additional_meta: OrderedDict):
|
||||
self.meta.update(additional_meta)
|
||||
|
||||
Reference in New Issue
Block a user