Server IP : 149.255.58.128 / Your IP : 216.73.216.35
System : Linux cloud516.thundercloud.uk 5.14.0-427.26.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 17 15:51:13 EDT 2024 x86_64
PHP Version : 8.2.28
Disable Function : allow_url_include, apache_child_terminate, apache_setenv, exec, passthru, pcntl_exec, posix_kill, posix_mkfifo, posix_getpwuid, posix_setpgid, posix_setsid, posix_setuid, posix_setgid, posix_seteuid, posix_setegid, posix_uname, proc_close, proc_get_status, proc_open, proc_terminate, shell_exec, show_source, system
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Upload Files :
Command :
Current File : /usr/lib/python3.9/site-packages/idna//intranges.py
"""
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)).
"""
import bisect
def intranges_from_list(list_):
"""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.
"""
sorted_list = sorted(list_)
ranges = []
last_write = -1
for i in range(len(sorted_list)):
if i+1 < len(sorted_list):
if sorted_list[i] == sorted_list[i+1]-1:
continue
current_range = sorted_list[last_write+1:i+1]
ranges.append(_encode_range(current_range[0], current_range[-1] + 1))
last_write = i
return tuple(ranges)
def _encode_range(start, end):
return (start << 32) | end
def _decode_range(r):
return (r >> 32), (r & ((1 << 32) - 1))
def intranges_contain(int_, ranges):
"""Determine if `int_` falls into one of the ranges in `ranges`."""
tuple_ = _encode_range(int_, 0)
pos = bisect.bisect_left(ranges, tuple_)
# we could be immediately ahead of a tuple (start, end)
# with start < int_ <= end
if pos > 0:
left, right = _decode_range(ranges[pos-1])
if left <= int_ < right:
return True
# or we could be immediately behind a tuple (int_, end)
if pos < len(ranges):
left, _ = _decode_range(ranges[pos])
if left == int_:
return True
return False
Name |
Size |
Last Modified |
Owner / Group |
Permissions |
Options |
.. | -- | March 19 2025 22:42:16 | 0 / root | 0755 | |
__pycache__ | -- | June 14 2024 21:42:16 | 0 / root | 0755 | |
| | | | | |
__init__.py | 0.057 KB | December 08 2019 01:33:00 | 0 / root | 0644 | |
codec.py | 3.222 KB | June 27 2020 23:37:26 | 0 / root | 0644 | |
compat.py | 0.227 KB | June 27 2020 23:37:26 | 0 / root | 0644 | |
core.py | 11.531 KB | June 13 2024 08:56:37 | 0 / root | 0644 | |
idnadata.py | 76.484 KB | June 13 2024 08:56:37 | 0 / root | 0644 | |
intranges.py | 1.708 KB | December 08 2019 01:33:00 | 0 / root | 0644 | |
package_data.py | 0.021 KB | June 27 2020 23:41:13 | 0 / root | 0644 | |
uts46data.py | 197.348 KB | June 27 2020 23:37:31 | 0 / root | 0644 | |