def writer(cls, argv): conf_file_path = get_env_file_path(cls) if os.path.exists(conf_file_path): raise Exception(f"Found {conf_file_path} existing already") vals = OrderedDict() vals.update(_normalize_prefix(cls._default_prefix)) for k in cls.__dict__.keys(): if k in os.environ: vals[k] = os.environ[k] for arg in argv: if "=" in arg: k, val = arg.split("=") vals[k] = val dump = os.environ.get("VARS_DUMP", cls._dump) # type: Union[bool, List[str]] if dump: for k in cls.__dict__.keys(): if isinstance(dump, (list, tuple)) and k not in dump: continue if k not in vals and not k.startswith("_"): vals[k] = getattr(cls, k) if vals: ordered_vals = OrderedDict() for k in cls.__dict__.keys(): if k in vals: ordered_vals[k] = vals.pop(k) ordered_vals.update(vals) _write(conf_file_path, ordered_vals) else: log.info("Dynamic-Conf: No variables available.") # pragma: no cover return vals