Updated config schema to support finding parameter by full name; improved search speed
This commit is contained in:
parent
89d05f35a0
commit
233d7e5f29
@ -83,6 +83,14 @@ class ConfigSchemaRegistry:
|
|||||||
return ConfigSchema(fullname, last_version, 'ini', parameters)
|
return ConfigSchema(fullname, last_version, 'ini', parameters)
|
||||||
|
|
||||||
|
|
||||||
|
def param_fullname(name, section=None):
|
||||||
|
fullname = name
|
||||||
|
if section and section != 'DEFAULT':
|
||||||
|
fullname = '%s.%s' % (section, name)
|
||||||
|
|
||||||
|
return fullname
|
||||||
|
|
||||||
|
|
||||||
class ConfigSchema:
|
class ConfigSchema:
|
||||||
|
|
||||||
def __init__(self, name, version, format, parameters):
|
def __init__(self, name, version, format, parameters):
|
||||||
@ -90,6 +98,9 @@ class ConfigSchema:
|
|||||||
self.version = Version(version)
|
self.version = Version(version)
|
||||||
self.format = format
|
self.format = format
|
||||||
self.parameters = parameters
|
self.parameters = parameters
|
||||||
|
self._parameterByName = {}
|
||||||
|
for param in self.parameters:
|
||||||
|
self._parameterByName[param.fullname] = param
|
||||||
|
|
||||||
def has_section(self, section):
|
def has_section(self, section):
|
||||||
return (
|
return (
|
||||||
@ -97,18 +108,13 @@ class ConfigSchema:
|
|||||||
)
|
)
|
||||||
|
|
||||||
def get_parameter(self, name, section=None):
|
def get_parameter(self, name, section=None):
|
||||||
# TODO: optimize this
|
fullname = param_fullname(name, section)
|
||||||
return (
|
|
||||||
find(
|
return self._parameterByName.get(fullname, None)
|
||||||
self.parameters,
|
|
||||||
lambda p: p.name == name and p.section == section)
|
|
||||||
)
|
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return (
|
return ('<ConfigSchema name=%s version=%s format=%s parameters=%s>' %
|
||||||
'<ConfigSchema name=%s version=%s format=%s parameters=%s>' % (
|
(self.name, self.version, self.format, self.parameters))
|
||||||
self.name, self.version, self.format, self.parameters)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class ConfigParameterSchema:
|
class ConfigParameterSchema:
|
||||||
@ -118,6 +124,7 @@ class ConfigParameterSchema:
|
|||||||
self.section = section
|
self.section = section
|
||||||
self.name = name
|
self.name = name
|
||||||
self.type = type
|
self.type = type
|
||||||
|
self.fullname = param_fullname(name, section)
|
||||||
self.description = description
|
self.description = description
|
||||||
self.default = default
|
self.default = default
|
||||||
self.required = required
|
self.required = required
|
||||||
|
Loading…
x
Reference in New Issue
Block a user