Convert an IPv6 hextet string into an integer. Args: hextet_str: A string, the number to parse. Returns: The hextet as an integer. Raises: ValueError: if the input isn't strictly a hex number from [0..FFFF].
(cls, hextet_str)
| 1760 | |
| 1761 | @classmethod |
| 1762 | def _parse_hextet(cls, hextet_str): |
| 1763 | """Convert an IPv6 hextet string into an integer. |
| 1764 | |
| 1765 | Args: |
| 1766 | hextet_str: A string, the number to parse. |
| 1767 | |
| 1768 | Returns: |
| 1769 | The hextet as an integer. |
| 1770 | |
| 1771 | Raises: |
| 1772 | ValueError: if the input isn't strictly a hex number from |
| 1773 | [0..FFFF]. |
| 1774 | |
| 1775 | """ |
| 1776 | # Reject non-ASCII digits. |
| 1777 | if not cls._HEX_DIGITS.issuperset(hextet_str): |
| 1778 | raise ValueError("Only hex digits permitted in %r" % hextet_str) |
| 1779 | # We do the length check second, since the invalid character error |
| 1780 | # is likely to be more informative for the user |
| 1781 | if len(hextet_str) > 4: |
| 1782 | msg = "At most 4 characters permitted in %r" |
| 1783 | raise ValueError(msg % hextet_str) |
| 1784 | # Length check means we can skip checking the integer value |
| 1785 | return int(hextet_str, 16) |
| 1786 | |
| 1787 | @classmethod |
| 1788 | def _compress_hextets(cls, hextets): |
no test coverage detected