3
Y'ícY ã @ s d Z ddlZddlmZmZ ee eedf dddZeeedd d
Zeeeef ddd
Zeeedf e dddZ
dS )a
Given a list of integers, made up of (hopefully) a small number of long runs
of consecutive integers, compute a representation of the form
((start1, end1), (start2, end2) ...). Then answer the question "was x present
in the original list?" in time O(log(# runs)).
é N)ÚListÚTuple.)Úlist_Úreturnc C s t | }g }d}xrtt|D ]b}|d t|k rL|| ||d d krLq||d |d
}|jt|d |d d |}qW t|S )a Represent a list of integers as a sequence of ranges:
((start_0, end_0), (start_1, end_1), ...), such that the original
integers are exactly those x such that start_i <= x < end_i for some i.
Ranges are encoded as single integers (start << 32 | end), not as tuples.
é r éÿÿÿÿr )ÚsortedÚrangeÚlenÚappendÚ
_encode_rangeÚtuple)r Úsorted_listÚrangesÚ
last_writeÚiÚ
current_range© r ú./tmp/pip-build-gk9425m9/idna/idna/intranges.pyÚintranges_from_list s r )ÚstartÚendr c C s | d>