3 L]5@s`ddlmZmZmZmZddlZddlZddlmZddl m Z m Z m Z m Z ddZdd ZdS) )unicode_literalsdivisionabsolute_importprint_functionN)unwrap)byte_cls bytes_to_liststr_cls type_namec Csr|ttjtjgkr6ttdttjttjt|t|tsRt tdt ||tjkr`dnd}t ||krttd|t ||tjkrdt t |Stjd|}i}d}d }x`t|dD]P\}}|dkr|d k r||} | |kr||| <t|| }d }q|d kr|}qWd d |D} |d kr:dj| S||} | |} dj| d | ddj| | d S)a Windows compatibility shim for socket.inet_ntop(). :param address_family: socket.AF_INET for IPv4 or socket.AF_INET6 for IPv6 :param packed_ip: A byte string of the network form of an IP address :return: A unicode string of the IP address zp address_family must be socket.AF_INET (%s) or socket.AF_INET6 (%s), not %s zA packed_ip must be a byte string, not %s zA packed_ip must be %d bytes long - is %d z %d.%d.%d.%ds !HHHHHHHHrNrcSsg|]}t|ddqS)N)hex).0or8/tmp/pip-install-wfra5znf/asn1crypto/asn1crypto/_inet.py Iszinet_ntop..r:z::)r)setsocketAF_INETAF_INET6 ValueErrorrrepr isinstancer TypeErrorr lentupler structunpack enumeratemaxjoin) address_familyZ packed_ipZ required_lenoctetsZ runs_of_zeroZ longest_runZ zero_indexioctetlengthZhexedZ zero_startZzero_endrrr inet_ntop sL            r+c Cs|ttjtjgkr6ttdttjttjt|t|tsRt tdt ||tjkr|j d}t |dk}|sg}x4|D],}t |}|dks|dkrd}P|j|qW|rttdt|tjd|Sd }|jd }|d krd}nj|dkr|j d }t |dk}nH|j d \}}|j d } |j d } dt | t | } | dg| | }|sg}x<|D]4}t |d}|dks|dkrd}P|j|qjWtjd|Sttdt|dS)a Windows compatibility shim for socket.inet_ntop(). :param address_family: socket.AF_INET for IPv4 or socket.AF_INET6 for IPv6 :param ip_string: A unicode string of an IP address :return: A byte string of the network form of the IP address zp address_family must be socket.AF_INET (%s) or socket.AF_INET6 (%s), not %s zD ip_string must be a unicode string, not %s .r rTz ip_string must be a dotted string with four integers in the range of 0 to 255, got %s !BBBBFz::rr0r i !HHHHHHHHz? ip_string must be a valid ipv6 string, got %s N)r.)r1)rrrrrrrrr rr splitrintappendr!packcount) r&Z ip_stringr'errorintsrZomittedbeginendZ begin_octetsZ end_octetsmissingrrr inet_ptonTsd               r<) __future__rrrrrr!_errorsr_typesrr r r r+r<rrrrs  I