Skip to content

feat(cli.py,-core.py,-readme): improve resolver/domain parsing, add idn support and dedupe logic#40

Merged
frankovo merged 1 commit intomainfrom
release/0.3.4
Dec 23, 2025
Merged

feat(cli.py,-core.py,-readme): improve resolver/domain parsing, add idn support and dedupe logic#40
frankovo merged 1 commit intomainfrom
release/0.3.4

Conversation

@frankovo
Copy link
Owner

this update introduces a more robust and flexible parsing layer for both resolvers and domains, ensuring consistent behavior across inline inputs, file-based inputs, and resolver-name lookups.

key improvements

  • added ipaddress-based detection for ipv4 and ipv6 resolvers
  • implemented resolver name matching via _match_resolver_name()
  • added support for resolver names stored as str, list, or tuple
  • improved fallback handling for custom hostnames
  • added idn → punycode normalization for domain inputs
  • normalized trailing-dot fqnds
  • added domain deduplication with order preservation
  • enhanced error messages for invalid resolver inputs
  • updated cli to use new smart parsing functions
  • added tests and readme update

files modified (2)

  1. src/dns_benchmark/core.py — added 5 new parsing and matching methods
  2. src/dns_benchmark/cli.py — updated resolver/domain loading to use new apis

new methods added (5)

  1. resolvemanager._match_resolver_name() — flexible resolver-name matcher
  2. resolvemanager.parse_resolver_string() — parse comma-separated resolvers
  3. resolvemanager.parse_resolvers_input() — smart resolver input detection
  4. domainmanager.parse_domain_string() — parse comma-separated domains
  5. domainmanager.parse_domains_input() — smart domain input detection

…dn support and dedupe logic

this update introduces a more robust and flexible parsing layer for both
resolvers and domains, ensuring consistent behavior across inline inputs,
file-based inputs, and resolver-name lookups.

### key improvements
- added ipaddress-based detection for ipv4 and ipv6 resolvers
- implemented resolver name matching via _match_resolver_name()
- added support for resolver names stored as str, list, or tuple
- improved fallback handling for custom hostnames
- added idn → punycode normalization for domain inputs
- normalized trailing-dot fqnds
- added domain deduplication with order preservation
- enhanced error messages for invalid resolver inputs
- updated cli to use new smart parsing functions
- added tests and readme update

### files modified (2)
1. src/dns_benchmark/core.py — added 5 new parsing and matching methods
2. src/dns_benchmark/cli.py — updated resolver/domain loading to use new apis

### new methods added (5)
1. resolvemanager._match_resolver_name() — flexible resolver-name matcher
2. resolvemanager.parse_resolver_string() — parse comma-separated resolvers
3. resolvemanager.parse_resolvers_input() — smart resolver input detection
4. domainmanager.parse_domain_string() — parse comma-separated domains
5. domainmanager.parse_domains_input() — smart domain input detection
@frankovo frankovo merged commit 66c93a0 into main Dec 23, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant