from typing import List, Callable, Any

class QualityGate:
    def __init__(self, name: str, validators: List[Callable[[Any], bool]]):
        self.name = name
        self.validators = validators

    def run(self, data: Any) -> bool:
        """Runs all validators against the given data.

        Args:
            data: The data to validate.

        Returns:
            True if all validators pass, False otherwise.
        """
        for validator in self.validators:
            if not validator(data):
                return False
        return True

    def add_validator(self, validator: Callable[[Any], bool]) -> None:
        """Adds a validator to the gate.

        Args:
            validator: The validator to add.
        """
        self.validators.append(validator)


class QualityGateResult:
    def __init__(self, gate_name: str, passed: bool, details: str = ""):
        self.gate_name = gate_name
        self.passed = passed
        self.details = details

    def __repr__(self):
        return f"QualityGateResult(gate_name='{self.gate_name}', passed={self.passed}, details='{self.details}')"
