- # TODO(fungi): remove this indirection after the YAML transition
- if self.origin._format == "yaml":
- try:
- return self.origin.data[self.key][facet]
- except KeyError:
- pass
- if self.has_facet("inherit"):
- for ancestor in self.ancestry():
- if self.universe.contents[ancestor].has_facet(facet):
- return self.universe.contents[ancestor].get(facet)
- else:
- return default
- else:
- if self.origin.data.has_option(self.key, facet):
- raw_data = self.origin.data.get(self.key, facet)
- if raw_data.startswith("u\"") or raw_data.startswith("u'"):
- raw_data = raw_data[1:]
- raw_data.strip("\"'")
- return raw_data
- elif self.has_facet("inherit"):
- for ancestor in self.ancestry():
- if self.universe.contents[ancestor].has_facet(facet):
- return self.universe.contents[ancestor].get(facet)
- else:
- return default
-
- def getboolean(self, facet, default=None):
- """Retrieve values as boolean type."""
- if default is None:
- default = False
- # TODO(fungi): remove this indirection after the YAML transition
- if self.origin._format == "yaml":
- try:
- return bool(self.origin.data[self.key][facet])
- except KeyError:
- pass
- for ancestor in self.ancestry():
- try:
- return self.universe.contents[ancestor].getboolean(facet)
- except KeyError:
- pass
- return default
- else:
- if self.origin.data.has_option(self.key, facet):
- return self.origin.data.getboolean(self.key, facet)
- elif self.has_facet("inherit"):
- for ancestor in self.ancestry():
- if self.universe.contents[ancestor].has_facet(facet):
- return self.universe.contents[ancestor].getboolean(
- facet)
- else:
- return default
-
- def getint(self, facet, default=None):
- """Return values as int type."""
- if default is None:
- default = 0
- if self.origin.data.has_option(self.key, facet):
- return self.origin.data.getint(self.key, facet)
- elif self.has_facet("inherit"):
- for ancestor in self.ancestry():
- if self.universe.contents[ancestor].has_facet(facet):
- return self.universe.contents[ancestor].getint(facet)
- else:
- return default
-
- def getfloat(self, facet, default=None):
- """Return values as float type."""
- if default is None:
- default = 0.0
- if self.origin.data.has_option(self.key, facet):
- return self.origin.data.getfloat(self.key, facet)
- elif self.has_facet("inherit"):