tJ/j1 d Z ddlZddlmZmZ dee deedf fdZded edefd
Zdedeeef fdZd
edeedf de fdZ
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)ListTuplelist_return.c j t | }g }d}t t | D ]u}|dz t | k r|| ||dz dz
k r1||dz |dz }| t |d |d dz |}vt | 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 )sortedrangelenappend
_encode_rangetuple)r sorted_listranges
last_writei
current_ranges `/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib/python3.11/site-packages/idna/intranges.pyintranges_from_listr s --K
FJ
3{##
$
$ Q3[!!!!1~QqS!1!!333#JqL1$45
mM!$4mB6G!6KLLMMM
== startendc | dz |z S )N )r r s r r r s RK3r rc | dz | dz fS )Nr l r )r s r
_decode_ranger # s
GqM*++r int_r c t | d }t j || }|dk r-t ||dz
\ }}|| cxk r|k rn ndS |t | k r t || \ }}|| k rdS dS )z=Determine if `int_` falls into one of the ranges in `ranges`.r r TF)r bisectbisect_leftr r )r r tuple_posleftright_s r intranges_containr) ' s
4
#
#F
VV
,
,C Qww#F3q5M22e4%4
S[[s,,a4<<45r )__doc__r" typingr r intr r r boolr) r r r