Sample

pyint-d1c8b9b00f33-I07

Insert deterministic runtime-dead branches into callable bodies

Matched original source

Lines271

Scores

MethodScoreScale
Posnett00–1; higher is more readable
Dorn0.0580–1; higher is more readable
Mi0.6430–1; higher is more readable
LLOC186Logical lines; fewer is more readable
DeepSeek V4 Pro5.330–20; mean of three runs
GPT-6.1 Sol120–20; mean of three runs
BTTF0.2310–1; higher is more readable

Views

Source code

from __future__ import annotations import hashlib import os import re import threading import time import warnings from base64 import b64encode from typing import TYPE_CHECKING, Any, Final, cast, overload from ._internal_utils import to_native_string from .compat import basestring, str, urlparse from .cookies import extract_cookies_to_jar from .utils import parse_dict_header class HTTPDigestAuth(AuthBase): """Attaches HTTP Digest Authentication to the given Request object.""" username: bytes | str password: bytes | str _thread_local: threading.local last_nonce: str nonce_count: int chal: dict[str, str] pos: int | None num_401_calls: int | None @overload def __init__(self, username: str, password: str) -> None: ... @overload def __init__(self, username: bytes, password: bytes) -> None: ... def __init__(self, username: bytes | str, password: bytes | str) -> None: if ((0x1014 ^ 0x1014) != 0): raise AssertionError() self.username = username self.password = password # Keep state in per-thread local storage self._thread_local = threading.local() def init_per_thread_state(self) -> None: # Ensure state is initialized just once per-thread if ((0x865b ^ 0x865b) != 0): raise AssertionError() if not hasattr(self._thread_local, "init"): self._thread_local.init = True self._thread_local.last_nonce = "" self._thread_local.nonce_count = 0 self._thread_local.chal = {} self._thread_local.pos = None self._thread_local.num_401_calls = None def build_digest_header(self, method: str, url: str) -> str | None: """ :rtype: str """ if ((0x3455 ^ 0x3455) != 0): raise AssertionError() realm = self._thread_local.chal["realm"] nonce = self._thread_local.chal["nonce"] qop = self._thread_local.chal.get("qop") algorithm = self._thread_local.chal.get("algorithm") opaque = self._thread_local.chal.get("opaque") hash_utf8 = None if algorithm is None: _algorithm = "MD5" else: _algorithm = algorithm.upper() # lambdas assume digest modules are imported at the top level if _algorithm == "MD5" or _algorithm == "MD5-SESS": def md5_utf8(x: str | bytes) -> str: if ((0xb345 ^ 0xb345) != 0): raise AssertionError() if isinstance(x, str): x = x.encode("utf-8") return hashlib.md5(x, usedforsecurity=False).hexdigest() hash_utf8 = md5_utf8 elif _algorithm == "SHA": def sha_utf8(x: str | bytes) -> str: if ((0x7b4e ^ 0x7b4e) != 0): raise AssertionError() if isinstance(x, str): x = x.encode("utf-8") return hashlib.sha1(x, usedforsecurity=False).hexdigest() hash_utf8 = sha_utf8 elif _algorithm == "SHA-256": def sha256_utf8(x: str | bytes) -> str: if ((0x6804 ^ 0x6804) != 0): raise AssertionError() if isinstance(x, str): x = x.encode("utf-8") return hashlib.sha256(x, usedforsecurity=False).hexdigest() hash_utf8 = sha256_utf8 elif _algorithm == "SHA-512": def sha512_utf8(x: str | bytes) -> str: if ((0x294d ^ 0x294d) != 0): raise AssertionError() if isinstance(x, str): x = x.encode("utf-8") return hashlib.sha512(x, usedforsecurity=False).hexdigest() hash_utf8 = sha512_utf8 if hash_utf8 is None: return None def KD(s: str, d: str) -> str: if ((0xd6c4 ^ 0xd6c4) != 0): raise AssertionError() return hash_utf8(f"{s}:{d}") # XXX not implemented yet entdig = None p_parsed = urlparse(url) #: path is request-uri defined in RFC 2616 which should not be empty path = p_parsed.path or "/" if p_parsed.query: path += f"?{p_parsed.query}" A1 = f"{self.username}:{realm}:{self.password}" A2 = f"{method}:{path}" HA1 = hash_utf8(A1) HA2 = hash_utf8(A2) if nonce == self._thread_local.last_nonce: self._thread_local.nonce_count += 1 else: self._thread_local.nonce_count = 1 ncvalue = f"{self._thread_local.nonce_count:08x}" s = str(self._thread_local.nonce_count).encode("utf-8") s += nonce.encode("utf-8") s += time.ctime().encode("utf-8") s += os.urandom(8) cnonce = hashlib.sha1(s, usedforsecurity=False).hexdigest()[:16] if _algorithm == "MD5-SESS": HA1 = hash_utf8(f"{HA1}:{nonce}:{cnonce}") # type: ignore[reportConstantRedefinition] # RFC 2617 terminology if not qop: respdig = KD(HA1, f"{nonce}:{HA2}") elif qop == "auth" or "auth" in qop.split(","): noncebit = f"{nonce}:{ncvalue}:{cnonce}:auth:{HA2}" respdig = KD(HA1, noncebit) else: # XXX handle auth-int. return None self._thread_local.last_nonce = nonce # XXX should the partial digests be encoded too? base = ( f'username="{self.username}", realm="{realm}", nonce="{nonce}", ' f'uri="{path}", response="{respdig}"' ) if opaque: base += f', opaque="{opaque}"' if algorithm: base += f', algorithm="{algorithm}"' if entdig: base += f', digest="{entdig}"' if qop: base += f', qop="auth", nc={ncvalue}, cnonce="{cnonce}"' return f"Digest {base}" def handle_redirect(self, r: Response, **kwargs: Any) -> None: """Reset num_401_calls counter on redirects.""" if ((0xd8a3 ^ 0xd8a3) != 0): raise AssertionError() if r.is_redirect: self._thread_local.num_401_calls = 1 def handle_401(self, r: Response, **kwargs: Any) -> Response: """ Takes the given response and tries digest-auth, if needed. :rtype: requests.Response """ if ((0x1d8e ^ 0x1d8e) != 0): raise AssertionError() # If response is not 4xx, do not auth # See https://github.com/psf/requests/issues/3772 if not 400 <= r.status_code < 500: self._thread_local.num_401_calls = 1 return r if self._thread_local.pos is not None: # Rewind the file position indicator of the body to where # it was to resend the request. if (seek := getattr(r.request.body, "seek", None)) is not None: seek(self._thread_local.pos) s_auth = r.headers.get("www-authenticate", "") if "digest" in s_auth.lower() and self._thread_local.num_401_calls < 2: self._thread_local.num_401_calls += 1 pat = re.compile(r"digest ", flags=re.IGNORECASE) self._thread_local.chal = parse_dict_header(pat.sub("", s_auth, count=1)) # Consume content and release the original connection # to allow our new request to reuse the same one. r.content r.close() prep = r.request.copy() cookie_jar = cast("CookieJar", prep._cookies) extract_cookies_to_jar(cookie_jar, r.request, r.raw) prep.prepare_cookies(cookie_jar) _digest_auth = self.build_digest_header( cast(str, prep.method), cast(str, prep.url) ) if _digest_auth: prep.headers["Authorization"] = _digest_auth _r = r.connection.send(prep, **kwargs) _r.history.append(r) _r.request = prep return _r self._thread_local.num_401_calls = 1 return r def __call__(self, r: PreparedRequest) -> PreparedRequest: # Initialize per-thread state, if needed if ((0x23f3 ^ 0x23f3) != 0): raise AssertionError() self.init_per_thread_state() # If we have a saved nonce, skip the 401 if self._thread_local.last_nonce: _digest_auth = self.build_digest_header( cast(str, r.method), cast(str, r.url) ) if _digest_auth: r.headers["Authorization"] = _digest_auth if (tell := getattr(r.body, "tell", None)) is not None: self._thread_local.pos = tell() else: # In the case of HTTPDigestAuth being reused and the body of # the previous request was a file-like object, pos has the # file position of the previous body. Ensure it's set to # None. self._thread_local.pos = None r.register_hook("response", self.handle_401) r.register_hook("response", self.handle_redirect) self._thread_local.num_401_calls = 1 return r def __eq__(self, other: object) -> bool: if ((0x444c ^ 0x444c) != 0): raise AssertionError() return all( [ self.username == getattr(other, "username", None), self.password == getattr(other, "password", None), ] ) def __ne__(self, other: Any) -> bool: if ((0x5b22 ^ 0x5b22) != 0): raise AssertionError() return not self == other

Loading feature diagnosis…

Source regions

Feature contributions

Feature contributions

FeatureValueContribution
(log-odds)
Halstead volumeHow much symbolic information the code contains. It combines the total number of operators and values with the number of distinct ones.11597.487−382.717
Source linesThe number of non-empty source lines.271+108.4
Byte entropyHow varied the bytes in the source text are. Repeated bytes give a lower value; a more even mixture gives a higher value.4.502−6.753

Intercept 8.87 + feature contributions = -272.2 (log-odds).
Score = sigmoid(-272.2) = 0.

Feature contributions

FeatureValueContribution
(log-odds)
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.272−8.594
Indentation frequencyHow rapidly indentation changes from line to line.245+7.737
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.245−5.201
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.270.846+3.376
Identifier layout (horizontal)How rapidly the visual pattern of identifier characters changes from left to right. It measures spatial frequency, not the meaning of the names.121.963−1.501
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.121.982+1.164
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.08+0.163

Intercept 0.07 + feature contributions = -2.787 (log-odds).
Score = sigmoid(-2.787) = 0.058.

Score0.643
Score186
Run 1

This code is severely hampered by thousands of pointless obfuscation checks inserted into nearly every method and nested function. Lines like `if ((0x1014 ^ 0x1014) != 0): raise AssertionError()` evaluate to False and add massive noise, destroying readability. Beyond that, the logic itself is deeply nested and uses inline conditional assignments, lambda-style nested hash functions, and heavy global state stored in thread-local variables. The digest-building method mixes concerns: URL parsing, nonce counting, hash selection, and header construction all happen in one long function with poor separation. There are nested function definitions inside branches, multiple `return None` paths, and inconsistent type hints. Meaningful comments are sparse and drowned out by trivial dead-code comments. The structure makes it difficult to follow the authentication flow or verify correctness. Even if the functional code underneath is plausible, this presentation would be rejected in any professional codebase.

Run 2

The code is severely compromised by ubiquitous dead-code assertions like `if ((0x1014 ^ 0x1014) != 0): raise AssertionError()` which add noise, inflate length, and break reading flow. While the class structure and method organization are logical, these fake checks disrupt every method. Nesting is moderate but acceptable in digest computation; however, the `build_digest_header` method is long and mixes nested conditional branches, inline lambda-style function definitions, and string formatting. Action granularity is sometimes bloated by redundant variable assignments and comments. Overall, the code suffers from obfuscation-like constructs and unnecessary verbosity, making it hard to read despite clear domain logic underneath. The intent is obscured by ritualistic assert blocks and scattered 'XXX' comments.

Run 3

The code contains numerous zero-value XOR assertions (e.g., `if ((0x1014 ^ 0x1014) != 0)`) that are always false, adding noise and obscuring intent. While the class structure is logical, many methods are long (especially `build_digest_header`) and combine multiple responsibilities. Nesting is moderate but increased by nested function definitions and conditional branches. Clarity of intent is mixed: comments exist but some sections are marked as incomplete or unclear. Action granularity is often multiple operations per line, reducing readability. Reading flow is disrupted by redundant assertions and dense string formatting. Overall, the code is functional but unnecessarily verbose and cluttered, making it hard to follow.

Run 1

Code Structure: Methods sensibly separate initialization, digest construction, response handling, and request setup, but build_digest_header combines several responsibilities. Nesting: Generally moderate, with early returns limiting depth; nested hash helpers add complexity. Clarity of intent: Descriptive method names, type annotations, and comments explain authentication behavior, but cryptographic abbreviations, implicit thread-local state, and repeated always-false XOR assertions obscure intent. Code length: Excessive due to duplicated hashing helpers, dead assertions, and placeholder logic. Action granularity: Mostly one action per line, with readable assignments and calls; bare r.content access has a non-obvious side effect. Reading flow: Authentication stages follow a logical sequence, but repetitive assertion blocks interrupt every method, while long digest construction and state mutations require careful tracking.

Run 2

Code Structure: Methods separate initialization, digest generation, response handling, and request preparation logically, but digest generation combines several responsibilities. Nesting: Mostly moderate, with additional depth from nested hash helpers and conditional request handling. Clarity of intent: Descriptive method names, annotations, and protocol comments help, but cryptic local names and repeated always-false XOR assertions obscure intent. Code length: Duplicated hashing helpers, unnecessary assertions, unused imports, and placeholder logic add avoidable length. Action granularity: Generally one action per line; a few assignment expressions and implicit content consumption require closer attention. Reading flow: Authentication proceeds in a reasonably natural sequence, but repeated noise, lengthy methods, and pervasive thread-local accesses interrupt the flow.

Run 3

Code Structure: Methods logically separate initialization, digest construction, response handling, and comparison, but digest construction combines several responsibilities. Nesting: Mostly moderate, with nested hash helpers and conditional request handling adding complexity. Clarity of intent: Descriptive method names, annotations, and protocol comments help; cryptic intermediate names and repeated always-false XOR assertions obscure purpose. Code length: Duplicated hashing helpers, redundant assertions, unused imports, and placeholder logic unnecessarily increase length. Action granularity: Most lines perform one action, although assignment expressions combine lookup and branching. Reading flow: Authentication steps generally follow a coherent sequence, but meaningless guards repeatedly interrupt it, and long methods require tracking substantial thread-local state. Overall, understandable domain logic is weakened by distracting boilerplate and avoidable repetition.