correctly read config
This commit is contained in:
parent
02980374cd
commit
f100a8d8c5
1 changed files with 23 additions and 9 deletions
|
|
@ -30,26 +30,39 @@ class Config:
|
||||||
self.values = {}
|
self.values = {}
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
with open(self.path, 'r') as f:
|
try:
|
||||||
self.values = yaml.load(f)
|
with open(self.path, 'r') as f:
|
||||||
|
self.values = yaml.load(f)
|
||||||
|
except IOError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if self.values is None:
|
||||||
|
self.values = {}
|
||||||
|
|
||||||
def get(self, *args, **kwargs):
|
def get(self, *args, **kwargs):
|
||||||
create = False
|
default = None
|
||||||
if 'create' in kwargs:
|
if 'default' in kwargs:
|
||||||
create = kwargs['create']
|
default = kwargs['default']
|
||||||
|
|
||||||
v = self.values
|
v = self.values
|
||||||
for a in args:
|
for a in args[:-1]:
|
||||||
try:
|
try:
|
||||||
v = v[a]
|
v = v[a]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
if create:
|
if not default is None:
|
||||||
v = v[a] = {}
|
v[a] = {}
|
||||||
|
v = v[a]
|
||||||
else:
|
else:
|
||||||
raise ConfigError()
|
raise ConfigError()
|
||||||
except TypeError:
|
except TypeError:
|
||||||
raise ConfigError()
|
raise ConfigError()
|
||||||
|
|
||||||
|
try:
|
||||||
|
v = v[args[-1]]
|
||||||
|
except KeyError:
|
||||||
|
v[args[-1]] = default
|
||||||
|
v = v[args[-1]]
|
||||||
|
|
||||||
return v
|
return v
|
||||||
|
|
||||||
def set(self, *args):
|
def set(self, *args):
|
||||||
|
|
@ -58,7 +71,8 @@ class Config:
|
||||||
try:
|
try:
|
||||||
v = v[a]
|
v = v[a]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
v = v[a] = {}
|
v[a] = {}
|
||||||
|
v = v[a]
|
||||||
except TypeError:
|
except TypeError:
|
||||||
raise ConfigError()
|
raise ConfigError()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue