def _compile_patterns(cls, patterns, field_name="Unknown", spec="Unknown"): compiled_patterns = [] for p in patterns: try: compiled_patterns.append(re.compile(fnmatch_translate_extended(p))) except (TypeError, re.error) as e: raise cls.InvalidPatternError( 'In {spec}, "{field_value}" in {field_name} can\'t be compiled: {msg}' .format(field_name=field_name, field_value=p, spec=spec, msg=e)) return compiled_patterns
def _compile_patterns(cls, patterns, field_name="Unknown", spec="Unknown"): compiled_patterns = [] for p in patterns: try: compiled_patterns.append(re.compile(fnmatch_translate_extended(p))) except (TypeError, re.error) as e: raise cls.InvalidPatternError( 'In {spec}, "{field_value}" in {field_name} can\'t be compiled: {msg}' .format(field_name=field_name, field_value=p, spec=spec, msg=e)) return compiled_patterns
def compile_patterns(cls, patterns, field_name="Unknown", spec="Unknown"): logger.debug(f"patterns before removing trailing stars: {patterns}") # NB: `fnmatch_translate_extended()` will convert a '*' at the end into '([^/]+)' for some # reason -- it should be '('[^/]*)'. This should be fixed upstream in general, but in the case # where the star is at the end we can use this heuristic for now. patterns.extend( re.sub(r"\*$", "", p) for p in patterns if isinstance(p, str) and re.match(r".*\*$", p) ) logger.debug( f"patterns with any trailing stars have a version with a star removed: {patterns}" ) compiled_patterns = [] for p in patterns: try: compiled_patterns.append(re.compile(fnmatch_translate_extended(p))) except (TypeError, re.error) as e: raise cls.InvalidPatternError( 'In {spec}, "{field_value}" in {field_name} can\'t be compiled: {msg}'.format( field_name=field_name, field_value=p, spec=spec, msg=e ) ) return compiled_patterns