(url, scheme=None, allow_fragments=True)
| 497 | return _coerce_result(v) |
| 498 | |
| 499 | def _urlsplit(url, scheme=None, allow_fragments=True): |
| 500 | # Only lstrip url as some applications rely on preserving trailing space. |
| 501 | # (https://url.spec.whatwg.org/#concept-basic-url-parser would strip both) |
| 502 | url = url.lstrip(_WHATWG_C0_CONTROL_OR_SPACE) |
| 503 | for b in _UNSAFE_URL_BYTES_TO_REMOVE: |
| 504 | url = url.replace(b, "") |
| 505 | if scheme is not None: |
| 506 | scheme = scheme.strip(_WHATWG_C0_CONTROL_OR_SPACE) |
| 507 | for b in _UNSAFE_URL_BYTES_TO_REMOVE: |
| 508 | scheme = scheme.replace(b, "") |
| 509 | |
| 510 | allow_fragments = bool(allow_fragments) |
| 511 | netloc = query = fragment = None |
| 512 | i = url.find(':') |
| 513 | if i > 0 and url[0].isascii() and url[0].isalpha(): |
| 514 | for c in url[:i]: |
| 515 | if c not in scheme_chars: |
| 516 | break |
| 517 | else: |
| 518 | scheme, url = url[:i].lower(), url[i+1:] |
| 519 | if url[:2] == '//': |
| 520 | netloc, url = _splitnetloc(url, 2) |
| 521 | if (('[' in netloc and ']' not in netloc) or |
| 522 | (']' in netloc and '[' not in netloc)): |
| 523 | raise ValueError("Invalid IPv6 URL") |
| 524 | if '[' in netloc and ']' in netloc: |
| 525 | _check_bracketed_netloc(netloc) |
| 526 | if allow_fragments and '#' in url: |
| 527 | url, fragment = url.split('#', 1) |
| 528 | if '?' in url: |
| 529 | url, query = url.split('?', 1) |
| 530 | _checknetloc(netloc) |
| 531 | return (scheme, netloc, url, query, fragment) |
| 532 | |
| 533 | def urlunparse(components): |
| 534 | """Put a parsed URL back together again. This may result in a |
no test coverage detected