def _add_default_params(self): added = False for key, param in self.fork_params.items(): if key not in self.params: self.params[key] = param.default added = True elif not param.is_valid(self.params[key]): warning('Value type of user\'s {} param not in allowed types, replacing with default!'.format(key)) self.params[key] = param.default added = True return added
def get(self, key=None, force_live=False): # any params you try to get MUST be in fork_params param_info = self.param_info(key) self._update_params(param_info, force_live) if key is None: return self._get_all_params() self._check_key_exists(key, 'get') value = self.params[key] if param_info.is_valid(value): # always valid if no allowed types, otherwise checks to make sure return value # all good, returning user's value warning('User\'s value type is not valid! Returning default') # somehow... it should always be valid return param_info.default # return default value because user's value of key is not in allowed_types to avoid crashing openpilot
def get(self, key=None, force_live=False): # key=None is dict of all params if key is None: return self._get_all_params(to_update=force_live) self._check_key_exists(key, 'get') param_info = self.fork_params[key] self._update_params(param_info.live or force_live) value = self.params[key] if param_info.is_valid(value): return value # all good, returning user's value warning('User\'s value type is not valid! Returning default' ) # somehow... it should always be valid return param_info.default # return default value because user's value of key is not in allowed_types to avoid crashing openpilot
#!/usr/bin/env python3 import os import json from common.colors import opParams_error as error from common.colors import opParams_warning as warning try: from common.realtime import sec_since_boot except ImportError: import time sec_since_boot = time.time warning("Using python time.time() instead of faster sec_since_boot") travis = False # replace with travis_checker if you use travis or GitHub Actions class ValueTypes: number = [float, int] none_or_number = [type(None), float, int] class Param: def __init__(self, default=None, allowed_types=[], description=None, live=False, hidden=False): self.default = default if not isinstance(allowed_types, list): allowed_types = [allowed_types] self.allowed_types = allowed_types