Utility classes and functions¶
- class mtrchk.org.momotor.check.files.matcher.BaseMatcher¶
Matcher class for use with
BaseCheckFilesMixin._check_file_rules.This contains the main implementation for matching files to rules.
- abstract _get_file(obj, file_class)¶
Convert objects in input_files argument of
check()method to an object usable as a file withCheckletResult.Abstract method that must be implemented in subclasses.
- check(input_files, match_rules, default_class)¶
Do the processing of files in input_files according to the match rules
- Parameters:
- Return type:
tuple[Outcome,Sequence[str],Sequence[str],dict[str,Union[str,bool,None,NewType(NoContentType,object),bytes,int,float,Decimal,Sequence[str],set[str]]],dict[Union[str,PurePath,NameClass],Union[File,ResultFile,Path,bytes]]]- Returns:
a tuple of the outcome, report messages, error messages, result properties and result files
-
ACTION_MAP:
ClassVar[dict[str,tuple[Outcome,dict[str,Any]]]] = {'': (Outcome.PASS, {}), 'fail': (Outcome.FAIL, {}), 'pass': (Outcome.PASS, {}), 'pass-hidden': (Outcome.PASS, {'hidden': True, 'secret': True}), 'pass-secret': (Outcome.PASS, {'secret': True})}¶ Mapping of rule actions to an outcome and properties
- class mtrchk.org.momotor.check.files.matcher.FileMatcher¶
Concrete implementation of
BaseMatcherfor an input list containingFileobjects.
- mtrchk.org.momotor.check.files.matcher.match_files(objects, rules)¶
Match files according to the rules. Invalid rules generate a warning and are ignored.
- mtrchk.org.momotor.check.files.matcher.parse_rule(rule)¶
Parse a file match rule.
- Parameters:
rule (
str) – Rule to parse- Return type:
tuple[str,bool,bool,bool,tuple[int,int] |None,str,str,str]- Returns:
Tuple of (glob, negate, case_insensitive, consume, count, action, file_class, message)
- Raises:
ValueError – If the rule is invalid
>>> parse_rule('') ('', False, False, True, None, '', '', '')
>>> parse_rule('*.py') ('*.py', False, False, True, None, '', '', '')
>>> parse_rule('-*.py') ('*.py', False, False, True, None, '', '', '')
>>> parse_rule('+*.py') ('*.py', False, False, False, None, '', '', '')
>>> parse_rule('!*.py') ('*.py', True, False, True, None, '', '', '')
>>> parse_rule('^*.py') ('*.py', False, True, True, None, '', '', '')
>>> parse_rule('!^*.py') ('*.py', True, True, True, None, '', '', '')
>>> parse_rule('+!^*.py') ('*.py', True, True, False, None, '', '', '')
>>> parse_rule('*.py{1}') ('*.py', False, False, True, (1, 1), '', '', '')
>>> parse_rule('*.py{1,}') ('*.py', False, False, True, (1, None), '', '', '')
>>> parse_rule('*.py{1,2}') ('*.py', False, False, True, (1, 2), '', '', '')
>>> parse_rule('*.py{,2}') ('*.py', False, False, True, (1, 2), '', '', '')
>>> parse_rule('*.py => ') ('*.py', False, False, True, None, '', '', '')
>>> parse_rule('*.py [class]') ('*.py', False, False, True, None, '', 'class', '')
>>> parse_rule('*.py [class#name]') ('*.py', False, False, True, None, '', 'class#name', '')
>>> parse_rule('*.py => action') ('*.py', False, False, True, None, 'action', '', '')
>>> parse_rule('*.py [class] =>') ('*.py', False, False, True, None, '', 'class', '')
>>> parse_rule('*.py [class] => action') ('*.py', False, False, True, None, 'action', 'class', '')
>>> parse_rule('*.py [class] => action message') ('*.py', False, False, True, None, 'action', 'class', 'message')
>>> parse_rule('path/*.py [class] => action message') ('path/*.py', False, False, True, None, 'action', 'class', 'message')
>>> parse_rule('**/*.py [class] => action message') ('**/*.py', False, False, True, None, 'action', 'class', 'message')
>>> parse_rule('!**/*.py [class] => action message') ('**/*.py', True, False, True, None, 'action', 'class', 'message')
>>> parse_rule('! ^ *.py { 1 , 2} [ class ] => action message with {#} placeholders ') ('*.py', True, True, True, (1, 2), 'action', 'class', 'message with {#} placeholders')
>>> parse_rule('*.py{0}') Traceback (most recent call last): ... ValueError: Invalid count in rule '*.py{0}': Minimum count must be at least 1
>>> parse_rule('*.py{1,0}') Traceback (most recent call last): ... ValueError: Invalid count in rule '*.py{1,0}': Maximum count must be greater than or equal to minimum count
- mtrchk.org.momotor.check.files.matcher.replace_message_placeholders(msg, objects)¶
Replace message placeholders
{#},{=x|y},{*}and{0}etc. in msg.