ua-parser / uap-python

Python implementation of ua-parser
Apache License 2.0
561 stars 152 forks source link

Rename the string regex attribute of matchers to `regex` #213

Closed masklinn closed 3 months ago

masklinn commented 3 months ago

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

foo(bar)