Jednotlivé rozsahy bajtů HTTP
Vyřešte jeden rozsah bajtů HTTP v ASCII pro zdroj od nuly do 10^12 bajtů s hlavičkou do 80 znaků.
import re
def byte_range(header, size):
if type(header) is not str or len(header) > 80 or type(size) is not int or not 0 <= size <= 10**12:
raise ValueError("range.input")
match = re.fullmatch(r"bytes=([0-9]*)-([0-9]*)", header)
if match is None or not any(match.groups()):
raise ValueError("range.syntax")
left, right = match.groups()
if not left:
suffix = int(right)
if suffix == 0 or size == 0:
return None
return max(0, size-suffix), size-1
start = int(left)
end = int(right) if right else size-1
if start >= size or end < start:
return None
return start, min(end, size-1)
Před použitím zkontrolujte
Porovnejte skutečné chování s očekávaným výsledkem. Pokud kontrola selže, před dalšími změnami zjistěte příčinu.
Modely
Nastavte endpoint kompatibilní s OpenAI nebo Anthropic pomocí základní URL a případného API klíče. Otestujte připojení. Lokální server modelu musí běžet; vzdálené nástroje mohou data odesílat samostatně.
Projekt
Otestujte otevřené konce a přípony, omezte konec a u nesplnitelných požadavků vraťte žádný interval, odmítněte chybnou syntaxi a více rozsahů.
import re
def byte_range(header, size):
if type(header) is not str or len(header) > 80 or type(size) is not int or not 0 <= size <= 10**12:
raise ValueError("range.input")
match = re.fullmatch(r"bytes=([0-9]*)-([0-9]*)", header)
if match is None or not any(match.groups()):
raise ValueError("range.syntax")
left, right = match.groups()
if not left:
suffix = int(right)
if suffix == 0 or size == 0:
return None
return max(0, size-suffix), size-1
start = int(left)
end = int(right) if right else size-1
if start >= size or end < start:
return None
return start, min(end, size-1)
Při refaktoringu zachovejte význam interpretovaného požadavku
RangeTallow je software pro programování s AI pro kontrolu změn pomocného kódu v kontextu aplikace, která na něm závisí. Otevřete projekt ve Windows a popište, které chování má při refaktoringu zůstat stabilní. Požádejte model o společnou kontrolu parsování vstupu, návratových hodnot a příslušného volajícího. Kratší implementace tak tiše nezmění význam požadavku.
Pomocí byte_range.py můžete například probrat vyhodnocení příponového rozsahu vzhledem ke známé velikosti souboru. Dodejte výslovné příklady běžného rozsahu, prázdného prostředku a požadavku mimo dostupný obsah. Než rozhodnete, jak má obsluha odpovědi výsledek používat, prověřte návratovou hodnotu pomocné funkce. Interpretaci rozsahu a sestavení odpovědi chápejte jako související odpovědnosti s vysvětlitelnou hranicí.
Navrženou úpravu otestujte v prostředí projektu včetně případů odlišujících chybný vstup od nesplnitelného rozsahu. Prověřte kód odpovědi používající výsledek, aby nová konvence návratových hodnot nevytvářela zavádějící výstup. RangeTallow podporuje připojení kompatibilní s OpenAI nebo Anthropic s přihlašovacími údaji podle potřeby. Modely bez omezení lze zvolit, pokud je koncový bod nabízí; limity kontextu, nástroje a omezení stále závisí na modelu a serveru. Příklady přijímaných požadavků dávají diskusi o refaktoringu konkrétní měřítko úspěchu.
Kontrola změn zpracování rozsahů
Proč rozlišovat chybný a nesplnitelný vstup?
Jde o odlišné stavy: požadavek nemusí odpovídat přijímané syntaxi, nebo může žádat obsah nedostupný při známé velikosti. Určete, jak pomocná funkce každý stav vyjadřuje, a prověřte, jak toto rozlišení používá obsluha odpovědi.
Stačí naparsovaný rozsah k sestavení správné odpovědi?
Ne. Volající musí stále sestavit odpověď podle vlastního kontraktu a skutečného prostředku. Prověřte použití vrácených mezí včetně výběru těla a stavového chování; úspěšné parsování není dokončená integrace.
Co má určit příklad příponového rozsahu?
Uveďte požadovanou délku přípony, známou velikost prostředku a očekávané meze včetně krajních hodnot, nebo výsledek odmítnutí. Zahrňte prázdný prostředek, aby implementace nespoléhala na to, že vždy existuje poslední bajt k výběru.
Jak udržet refaktoring zaměřený na cíl?
Sepište současné přijímané případy a případnou zamýšlenou změnu. Požádejte o návrh zachovávající ostatní chování, potom prověřte diff a spusťte tyto případy přes pomocnou funkci i jejího volajícího.
RangeTallow · Aktualizováno 2026-10-25