R`iY d Z ddlZddlmZmZ dee deedf fdZded edefd
Zdedeeef fdZd
edeedf de fdZ
y)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 t | }g }d}t t | D ]V }|dz t | k r|| ||dz dz
k( r&||dz |dz }|j t |d |d dz |}X 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 )sortedrangelenappend
_encode_rangetuple)r sorted_listranges
last_writei
current_ranges /builddir/build/BUILDROOT/alt-python312-pip-23.3.1-3.el8.x86_64/opt/alt/python312/lib/python3.12/site-packages/pip/_vendor/idna/intranges.pyintranges_from_listr s -K
FJ
3{#
$Q3[!!1~QqS!1!!33#JqL15
mM!$4mB6G!6KLM
% = 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 || }|dkD r!t ||dz
\ }}|| cxk r|k ry |t | k rt || \ }}|| k( ryy)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 Qw#F3q5M2e4% S[s,a4<r )__doc__r" typingr r intr r r boolr) r r r