from urllib.parse import urlparse, parse_qs from typing import Dict, Any def parse_url(url: str) -> Dict[str, Any]: """ Parse a URL into its components. """ parsed = urlparse(url) return { "scheme": parsed.scheme, "netloc": parsed.netloc, "path": parsed.path, "params": parsed.params, "query": parse_qs(parsed.query), "fragment": parsed.fragment, } def is_valid_url(url: str) -> bool: """ Check if a URL is valid. """ parsed = urlparse(url) return bool(parsed.scheme and parsed.netloc)