import re from typing import Dict # Warning: If you change this parsing, please test using # zerver/tests/test_decorators.py # And extend zerver/tests/fixtures/user_agents_unique with any new test cases def parse_user_agent(user_agent: str) -> Dict[str, str]: match = re.match( """^ (?P [^/ ]* [^0-9/(]* ) (/ (?P [^/ ]* ))? ([ /] .*)? $""", user_agent, re.X) assert match is not None return match.groupdict()