관리-도구
편집 파일: intranges.cpython-311.pyc
� �Re� � �: � d Z ddlZddlmZmZ d� Zd� Zd� Zd� ZdS )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�Tuplec �j � t | � � }g }d}t t |� � � � D ]u}|dz t |� � k r|| ||dz dz k r�1||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 )�sorted�range�len�append� _encode_range�tuple)�list_�sorted_list�ranges� last_write�i� current_ranges ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-3.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_vendor/idna/intranges.py�intranges_from_listr s� � � ��-�-�K� �F��J� �3�{�#�#� $� $� � ���Q�3��[�!�!�!�!��1�~��Q�q�S�!1�!�!3�3�3��#�J�q�L��1��$4�5� �� � �m�M�!�$4�m�B�6G�!�6K�L�L�M�M�M�� � ���=�=�� c � � | dz |z S )N� � )�start�ends r r r ! s � ��R�K�3��r c � � | dz | dz fS )Nr l �� r )�rs r � _decode_ranger % s � � ��G�q�M�*�+�+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 �bisect�bisect_leftr r )�int_r �tuple_�pos�left�right�_s r �intranges_containr( * s� � � �4�� #� #�F� � �V�V� ,� ,�C� �Q�w�w�#�F�3�q�5�M�2�2���e��4�����%�������4� �S��[�[�����s��,�,���a��4�<�<��4��5r ) �__doc__r �typingr r r r r r( r r r �<module>r+ sx ��� � � � � � � � � � � � � �� � �,� � �,� ,� ,� � � � � r