config_toml.py 950 B

12345678910111213141516171819202122232425262728293031
  1. """Pylama TOML configuration."""
  2. import toml
  3. from pylama.libs.inirama import Namespace as _Namespace
  4. class Namespace(_Namespace):
  5. """Inirama-style wrapper for TOML config."""
  6. def parse(self, source: str, update: bool = True, **params):
  7. """Parse TOML source as string."""
  8. content = toml.loads(source)
  9. tool = content.get("tool", {})
  10. pylama = tool.get("pylama", {})
  11. linters = pylama.pop("linter", {})
  12. files = pylama.pop("files", [])
  13. for name, value in pylama.items():
  14. self["pylama"][name] = value
  15. for linter, options in linters.items():
  16. for name, value in options.items():
  17. self[f"pylama:{linter}"][name] = value
  18. for file in files:
  19. path = file.pop("path", None)
  20. if path is None:
  21. continue
  22. for name, value in file.items():
  23. self[f"pylama:{path}"][name] = value