A proxy for a single section from a parser.
| 1287 | |
| 1288 | |
| 1289 | class SectionProxy(MutableMapping): |
| 1290 | """A proxy for a single section from a parser.""" |
| 1291 | |
| 1292 | def __init__(self, parser, name): |
| 1293 | """Creates a view on a section of the specified `name` in `parser`.""" |
| 1294 | self._parser = parser |
| 1295 | self._name = name |
| 1296 | for conv in parser.converters: |
| 1297 | key = 'get' + conv |
| 1298 | getter = functools.partial(self.get, _impl=getattr(parser, key)) |
| 1299 | setattr(self, key, getter) |
| 1300 | |
| 1301 | def __repr__(self): |
| 1302 | return '<Section: {}>'.format(self._name) |
| 1303 | |
| 1304 | def __getitem__(self, key): |
| 1305 | if not self._parser.has_option(self._name, key): |
| 1306 | raise KeyError(key) |
| 1307 | return self._parser.get(self._name, key) |
| 1308 | |
| 1309 | def __setitem__(self, key, value): |
| 1310 | self._parser._validate_value_types(option=key, value=value) |
| 1311 | return self._parser.set(self._name, key, value) |
| 1312 | |
| 1313 | def __delitem__(self, key): |
| 1314 | if not (self._parser.has_option(self._name, key) and |
| 1315 | self._parser.remove_option(self._name, key)): |
| 1316 | raise KeyError(key) |
| 1317 | |
| 1318 | def __contains__(self, key): |
| 1319 | return self._parser.has_option(self._name, key) |
| 1320 | |
| 1321 | def __len__(self): |
| 1322 | return len(self._options()) |
| 1323 | |
| 1324 | def __iter__(self): |
| 1325 | return self._options().__iter__() |
| 1326 | |
| 1327 | def _options(self): |
| 1328 | if self._name != self._parser.default_section: |
| 1329 | return self._parser.options(self._name) |
| 1330 | else: |
| 1331 | return self._parser.defaults() |
| 1332 | |
| 1333 | @property |
| 1334 | def parser(self): |
| 1335 | # The parser object of the proxy is read-only. |
| 1336 | return self._parser |
| 1337 | |
| 1338 | @property |
| 1339 | def name(self): |
| 1340 | # The name of the section on a proxy is read-only. |
| 1341 | return self._name |
| 1342 | |
| 1343 | def get(self, option, fallback=None, *, raw=False, vars=None, |
| 1344 | _impl=None, **kwargs): |
| 1345 | """Get an option value. |
| 1346 |
no outgoing calls
no test coverage detected
searching dependent graphs…