multiaddr.resolvers package

Submodules

multiaddr.resolvers.base module

Base resolver interface for multiaddr.

class multiaddr.resolvers.base.Resolver(*args, **kwargs)[source]

Bases: Protocol

Protocol for multiaddr resolvers.

async resolve(maddr: Multiaddr) list[Multiaddr][source]

Resolve a multiaddr to its final form.

Parameters

maddr~multiaddr.multiaddr.Multiaddr

The multiaddr to resolve.

Returns

list[~multiaddr.multiaddr.Multiaddr]

The resolved multiaddrs.

Raises

~multiaddr.exceptions.ResolveError

If the multiaddr cannot be resolved.

multiaddr.resolvers.dns module

DNS resolver implementation for multiaddr.

This module provides DNS resolution for multiaddrs, supporting the following protocols: - /dns, /dns4, /dns6: Standard DNS resolution for IPv4 and IPv6 - /dnsaddr: Recursive TXT record resolution for libp2p bootstrap nodes

Features: - Recursive resolution for /dnsaddr, /dns4, and /dns6 - Peer ID preservation during resolution - Timeout and cancellation support (Trio) - Error handling for recursion limits and DNS failures

Example usage:

from multiaddr import Multiaddr ma = Multiaddr(“/dns4/example.com/tcp/443”) resolved = await ma.resolve() print(resolved) # [Multiaddr(“/ip4/93.184.216.34/tcp/443”)]

class multiaddr.resolvers.dns.DNSResolver[source]

Bases: Resolver

DNS resolver for multiaddr.

Resolves /dns, /dns4, /dns6, and /dnsaddr multiaddrs to their underlying IP addresses. Supports recursive resolution for DNSADDR records and protocol-specific resolution for DNS4/DNS6.

DEFAULT_TIMEOUT = 5.0
MAX_RECURSIVE_DEPTH = 32
async resolve(maddr: Multiaddr, options: dict | None = None) list[Multiaddr][source]

Resolve a DNS multiaddr to its actual addresses.

Args:

maddr: The multiaddr to resolve options: Optional configuration options (e.g., max_recursive_depth, signal)

Returns:

A list of resolved multiaddrs

Raises:

ResolutionError: If resolution fails RecursionLimitError: If maximum recursive depth is reached trio.Cancelled: If the operation is cancelled

Module contents

DNS resolution support for multiaddr.

class multiaddr.resolvers.DNSResolver[source]

Bases: Resolver

DNS resolver for multiaddr.

Resolves /dns, /dns4, /dns6, and /dnsaddr multiaddrs to their underlying IP addresses. Supports recursive resolution for DNSADDR records and protocol-specific resolution for DNS4/DNS6.

DEFAULT_TIMEOUT = 5.0
MAX_RECURSIVE_DEPTH = 32
async resolve(maddr: Multiaddr, options: dict | None = None) list[Multiaddr][source]

Resolve a DNS multiaddr to its actual addresses.

Args:

maddr: The multiaddr to resolve options: Optional configuration options (e.g., max_recursive_depth, signal)

Returns:

A list of resolved multiaddrs

Raises:

ResolutionError: If resolution fails RecursionLimitError: If maximum recursive depth is reached trio.Cancelled: If the operation is cancelled

class multiaddr.resolvers.Resolver(*args, **kwargs)[source]

Bases: Protocol

Protocol for multiaddr resolvers.

async resolve(maddr: Multiaddr) list[Multiaddr][source]

Resolve a multiaddr to its final form.

Parameters

maddr~multiaddr.multiaddr.Multiaddr

The multiaddr to resolve.

Returns

list[~multiaddr.multiaddr.Multiaddr]

The resolved multiaddrs.

Raises

~multiaddr.exceptions.ResolveError

If the multiaddr cannot be resolved.