MCPcopy Create free account
hub / github.com/datapane/datapane / parse_range_header

Function parse_range_header

python-client/src/datapane/_vendor/bottle.py:2986–3002  ·  view source on GitHub ↗

Yield (start, end) ranges parsed from a HTTP Range header. Skip unsatisfiable ranges. The end index is non-inclusive.

(header, maxlen=0)

Source from the content-addressed store, hash-verified

2984
2985
2986def parse_range_header(header, maxlen=0):
2987 """ Yield (start, end) ranges parsed from a HTTP Range header. Skip
2988 unsatisfiable ranges. The end index is non-inclusive."""
2989 if not header or header[:6] != 'bytes=': return
2990 ranges = [r.split('-', 1) for r in header[6:].split(',') if '-' in r]
2991 for start, end in ranges:
2992 try:
2993 if not start: # bytes=-100 -> last 100 bytes
2994 start, end = max(0, maxlen - int(end)), maxlen
2995 elif not end: # bytes=100- -> all but the first 99 bytes
2996 start, end = int(start), maxlen
2997 else: # bytes=100-200 -> bytes 100-200 (inclusive)
2998 start, end = int(start), min(int(end) + 1, maxlen)
2999 if 0 <= start < end <= maxlen:
3000 yield start, end
3001 except ValueError:
3002 pass
3003
3004
3005#: Header tokenizer used by _parse_http_header()

Callers 1

static_fileFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected