from urllib.request import AbstractBasicAuthHandler import pyperf class AuthHandler(AbstractBasicAuthHandler): handler = None def retry_http_basic_auth(self, host, req, realm): self.realm = realm return None realm = 'realm@example.com' simple = f'Basic realm="{realm}"' repeat_10 = '' + ',' * 10 + 'A' repeat_10_2 = '' + ',' * (10 ** 2) repeat_10_4 = '' + ',' * (10 ** 4) class Headers: def __init__(self, header): self.header = header def get(self, *ignored_args): return self.header def get_all(self, *ignored_args): return [self.header] def func(handler, headers): try: handler.http_error_auth_reqed("WWW-Authenticate", None, None, headers) except ValueError: pass runner = pyperf.Runner() handler = AuthHandler() for name, header in ( ('simple', simple), ('repeat 10', repeat_10), ('repeat 10^2', repeat_10_2), ('repeat 10^4', repeat_10_4), ): headers = Headers(header) runner.bench_func(name, func, handler, headers)