Einzelne HTTP-Bytebereiche
Löse einen ASCII-HTTP-Bytebereich für eine Ressource von null bis 10^12 Bytes mit höchstens 80 Kopfzeilenzeichen auf.
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)
Vor dem Anwenden prüfen
Vergleichen Sie das tatsächliche Verhalten mit dem erwarteten Ergebnis. Klären Sie fehlgeschlagene Prüfungen vor weiteren Änderungen.
Modelle
Richten Sie einen OpenAI-kompatiblen oder Anthropic-Endpunkt mit Basis-URL und gegebenenfalls API-Schlüssel ein. Testen Sie die Verbindung. Ein lokaler Modellserver muss laufen; entfernte Werkzeuge können Daten separat übertragen.
Projekt
Teste offene Enden und Suffixe, begrenze das Ende und liefere bei unerfüllbaren Bereichen kein Intervall, lehne falsche Syntax und Mehrfachbereiche ab.
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)
Beim Refactoring die Bedeutung der interpretierten Anfrage bewahren
RangeTallow ist KI-Programmiersoftware zur Prüfung von Änderungen an Hilfsfunktionen im Kontext der Anwendung, die von ihnen abhängt. Öffnen Sie das Projekt unter Windows und beschreiben Sie, welches Verhalten beim Refactoring stabil bleiben muss. Lassen Sie das Modell Eingabeparsing, Rückgabewerte und den relevanten Aufrufer gemeinsam untersuchen. Das verhindert, dass eine kürzere Implementierung stillschweigend die Bedeutung einer Anfrage verändert.
Mit byte_range.py könnten Sie besprechen, wie ein Suffixbereich bei bekannter Dateigröße aufgelöst wird. Bringen Sie ausdrückliche Beispiele für einen normalen Bereich, eine leere Ressource und eine Anfrage außerhalb des verfügbaren Inhalts mit. Prüfen Sie den Rückgabewert der Hilfsfunktion, bevor Sie entscheiden, wie die Antwortbehandlung ihn verwenden soll. Betrachten Sie Bereichsinterpretation und Antwortaufbau als zusammenhängende Aufgaben mit einer erklärbaren Grenze.
Testen Sie die Änderung in Ihrer Projektumgebung einschließlich der Fälle, die fehlerhafte Eingaben von nicht erfüllbaren Bereichen unterscheiden. Prüfen Sie den Antwortcode, der das Ergebnis verwendet, damit eine neue Rückgabekonvention keine irreführende Ausgabe erzeugt. RangeTallow unterstützt OpenAI-kompatible oder Anthropic-Verbindungen, bei Bedarf mit Zugangsdaten. Uneingeschränkte Modelle sind wählbar, wenn Ihr Endpunkt sie anbietet; Kontextgrenzen, Werkzeuge und Einschränkungen hängen weiterhin von Modell und Server ab. Die akzeptierten Anfragebeispiele geben dem Refactoring-Gespräch einen konkreten Erfolgsmaßstab.
Änderungen an der Bereichsbehandlung prüfen
Warum fehlerhafte und nicht erfüllbare Eingaben unterscheiden?
Sie beschreiben verschiedene Zustände: Eine Anfrage kann die zulässige Syntax verfehlen oder Inhalte verlangen, die bei der bekannten Größe nicht verfügbar sind. Legen Sie fest, wie Ihre Hilfsfunktion beides darstellt, und prüfen Sie, wie die Antwortbehandlung diese Unterscheidung verwendet.
Reicht ein geparster Bereich für eine korrekte Antwort?
Nein. Der Aufrufer muss die Antwort weiterhin gemäß seinem eigenen Vertrag und der tatsächlichen Ressource aufbauen. Prüfen Sie, wie er die zurückgegebenen Grenzen verwendet, einschließlich Inhaltsauswahl und Statusverhalten, statt erfolgreiches Parsen als abgeschlossene Integration anzusehen.
Was sollte ein Suffixbeispiel angeben?
Geben Sie die angeforderte Suffixlänge, die bekannte Ressourcengröße und die erwarteten inklusiven Grenzen oder das Zurückweisungsergebnis an. Nehmen Sie eine leere Ressource auf, damit die Implementierung nicht voraussetzen kann, dass immer ein letztes Byte zur Auswahl existiert.
Wie halte ich das Refactoring auf die Aufgabe konzentriert?
Schreiben Sie die derzeit akzeptierten Fälle und gegebenenfalls die beabsichtigte Änderung auf. Verlangen Sie einen Vorschlag, der das übrige Verhalten bewahrt, prüfen Sie anschließend den Diff und führen Sie diese Fälle sowohl durch die Hilfsfunktion als auch durch ihren Aufrufer aus.
RangeTallow · Aktualisiert 2026-10-25