Source code for erc7730.lint.v2

from abc import ABC, abstractmethod
from typing import final, override

from erc7730.common.output import OutputAdder
from erc7730.model.resolved.v2.descriptor import ResolvedERC7730Descriptor


[docs] class ERC7730Linter(ABC): """ Linter for ERC-7730 v2 descriptors, inspects a (structurally valid) resolved v2 descriptor and emits notes, warnings, or errors. A linter may emit false positives or false negatives. It is up to the user to interpret the output. """
[docs] @abstractmethod def lint(self, descriptor: ResolvedERC7730Descriptor, out: OutputAdder) -> None: raise NotImplementedError()
[docs] @final class MultiLinter(ERC7730Linter): """A linter that runs multiple v2 linters in sequence.""" def __init__(self, linters: list[ERC7730Linter]): self.linters = linters
[docs] @override def lint(self, descriptor: ResolvedERC7730Descriptor, out: OutputAdder) -> None: for linter in self.linters: linter.lint(descriptor, out)