It's kinda dumb that I didn't do that in the first place and I'm not entirely sure why I missed it...
Anyway there is no reason to make pattern be the string pattern and regex be the compiled pattern, that unnecessarily diverges from the regexes.yaml naming for the corresponding attribute which is a shame, and the compiled regex in python is... re.Pattern, so it makes more sense on both axis to have pattern: re.Pattern[str] and regex: str.
Also add a regex_flag attribute/property on the device matchers for the string version of the flags.
With that, maybe we could build the matchers straight from the source records by direct unpacking, as well as simplify the codegen through the magic of doing less? This probably requires benching to see if
foo(**{'foo': 'bar'})
has the same efficiency as
foo(foo=bar)
if it does, then there's no reason to bother with reformatting parser records to the current
It's kinda dumb that I didn't do that in the first place and I'm not entirely sure why I missed it...
Anyway there is no reason to make
pattern
be the string pattern andregex
be the compiled pattern, that unnecessarily diverges from the regexes.yaml naming for the corresponding attribute which is a shame, and the compiled regex in python is...re.Pattern
, so it makes more sense on both axis to havepattern: re.Pattern[str]
andregex: str
.Also add a
regex_flag
attribute/property on the device matchers for the string version of the flags.With that, maybe we could build the matchers straight from the source records by direct unpacking, as well as simplify the codegen through the magic of doing less? This probably requires benching to see if
has the same efficiency as
if it does, then there's no reason to bother with reformatting parser records to the current