mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	We use this single regular expression for processing essentially every request, so it's definitely worth hinting to Python that we're going to do so by compiling it. Saves about 40us per request.
		
			
				
	
	
		
			17 lines
		
	
	
		
			482 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			17 lines
		
	
	
		
			482 B
		
	
	
	
		
			Python
		
	
	
	
	
	
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
 | 
						|
pattern = re.compile(
 | 
						|
    """^ (?P<name> [^/ ]* [^0-9/(]* )
 | 
						|
    (/ (?P<version> [^/ ]* ))?
 | 
						|
    ([ /] .*)?
 | 
						|
    $""", re.X)
 | 
						|
 | 
						|
def parse_user_agent(user_agent: str) -> Dict[str, str]:
 | 
						|
    match = pattern.match(user_agent)
 | 
						|
    assert match is not None
 | 
						|
    return match.groupdict()
 |