tessl install tessl/pypi-dnspython@1.16.0DNS toolkit for Python supporting almost all record types with high-level and low-level DNS operations
Agent Success
Agent success rate when using this tile
85%
Improvement
Agent success rate improvement when using this tile compared to baseline
1.37x
Baseline
Agent success rate without this tile
62%
{
"context": "Evaluates how well the solution uses dnspython's thread-safe resolver, cache, and immutable data handling to deliver concurrent DNS lookups with per-call timeout control.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Shared resolver",
"description": "Builds a single reusable dns.resolver.Resolver (or dns.asyncresolver.Resolver) instance rather than creating one per call, wiring all lookups through it.",
"max_score": 20
},
{
"name": "Thread-safe cache",
"description": "Configures the resolver with a package cache (dns.resolver.Cache or dns.resolver.LRUCache) and uses it for positive responses instead of ad-hoc dicts or per-call caches.",
"max_score": 20
},
{
"name": "Immutable results",
"description": "Converts resolver answers (e.g., RRset/Rdata objects) into immutable tuples or strings via dnspython accessors like .to_text(), avoiding returning mutable Message/Answer objects across threads.",
"max_score": 15
},
{
"name": "Negative caching",
"description": "Relies on dnspython's cache to store NXDOMAIN/NoAnswer results (using resolver.cache or Cache.store) so repeated misses before TTL expiry avoid repeat wire queries.",
"max_score": 15
},
{
"name": "Timeout override",
"description": "Passes per-call lifetime/timeout parameters to resolver.resolve (or asyncresolve) to enforce call-specific limits without mutating the resolver's default timeout for later calls.",
"max_score": 15
},
{
"name": "Concurrent safety",
"description": "Follows dnspython threading guidance by not sharing mutable Message/Zone objects between threads and by reusing immutable Name/rdata data or per-call copies when populating caches.",
"max_score": 15
}
]
}