""" Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: MIT-0 """ from typing import List from cfnlint.config import configure_logging from cfnlint.core import get_rules from cfnlint.decode import decode_str from cfnlint.helpers import REGIONS from cfnlint.rules import Match, RulesCollection from cfnlint.runner import Runner Matches = List[Match] def lint(s: str, rules: RulesCollection, regions: List[str]) -> Matches: """Validate a string template using the specified rules and regions. Parameters ---------- s : str the template string rules : RulesCollection The rules to run against s regions : List[str] The regions to test against s Returns ------- list a list of errors if any were found, else an empty list """ configure_logging(None, None) template, errors = decode_str(s) if errors: return errors if template is None: return [] runner = Runner( rules=rules, filename=None, template=template, regions=regions, verbosity=0, mandatory_rules=None, ) runner.transform() return runner.run() def lint_all(s: str) -> Matches: """Validate a string template against all regions and rules. Parameters ---------- s : str the template string Returns ------- list a list of errors if any were found, else an empty list """ return lint( s=s, rules=get_rules([], [], ["I", "W", "E"], include_experimental=True), regions=REGIONS, )