Plages HTTP uniques en octets
Résolvez une plage ASCII d’octets HTTP pour une ressource de zéro à 10^12 octets avec un en-tête de 80 caractères au plus.
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)
Vérifiez avant d’appliquer
Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications.
Modèles
Configurez un endpoint compatible OpenAI ou Anthropic avec son URL de base et une clé API si nécessaire. Testez la connexion. Un serveur local doit fonctionner ; les outils distants peuvent transmettre des données séparément.
Projet
Testez les fins ouvertes et les suffixes, bornez la fin et renvoyez une absence de plage si nécessaire, en rejetant la syntaxe invalide et les plages multiples.
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)
Préservez le sens des requêtes lors de la refactorisation d’un utilitaire
RangeTallow est un logiciel de programmation avec IA pour examiner les modifications d’utilitaires dans le contexte de l’application qui en dépend. Ouvrez le projet sous Windows et décrivez le comportement qui doit rester stable pendant la refactorisation. Demandez au modèle d’examiner ensemble l’analyse des entrées, les valeurs renvoyées et l’appelant concerné. Cela évite qu’une implémentation plus courte ne modifie silencieusement le sens d’une requête.
Vous pouvez utiliser byte_range.py pour discuter de la résolution d’une plage suffixe à partir d’une taille de fichier connue. Apportez des exemples explicites pour une plage normale, une ressource vide et une requête hors du contenu disponible. Examinez ce que renvoie la fonction auxiliaire avant de décider comment le gestionnaire de réponse doit l’utiliser. Traitez l’interprétation des plages et la construction de la réponse comme des responsabilités liées, séparées par une frontière explicable.
Testez la modification proposée dans l’environnement du projet, notamment les cas distinguant une entrée mal formée d’une plage impossible à satisfaire. Examinez le code de réponse consommant le résultat pour qu’une nouvelle convention de retour ne produise pas de sortie trompeuse. RangeTallow prend en charge les connexions compatibles OpenAI ou Anthropic, avec des identifiants selon les besoins. Des modèles sans restrictions peuvent être choisis si votre point de terminaison en propose ; limites de contexte, outils et restrictions restent dépendants du modèle et du serveur. Les exemples de requêtes acceptées donnent à la conversation de refactorisation une mesure concrète de réussite.
Examiner les modifications de traitement des plages
Pourquoi distinguer une entrée mal formée d’une plage impossible à satisfaire ?
Ce sont des conditions différentes : une requête peut ne pas respecter la syntaxe acceptée ou demander du contenu indisponible pour la taille connue. Précisez la représentation de chaque cas par la fonction auxiliaire et examinez comment le gestionnaire de réponse utilise cette distinction.
Une plage analysée suffit-elle à construire une réponse correcte ?
Non. L’appelant doit encore construire la réponse selon son propre contrat et la ressource réelle. Examinez son utilisation des bornes renvoyées, notamment la sélection du corps et le comportement du statut, plutôt que de considérer une analyse réussie comme une intégration terminée.
Que doit préciser un exemple de suffixe ?
Donnez la longueur du suffixe demandé, la taille connue de la ressource et les bornes inclusives attendues ou le résultat de rejet. Incluez une ressource vide pour que l’implémentation ne suppose pas qu’il existe toujours un dernier octet à sélectionner.
Comment garder la refactorisation ciblée ?
Consignez les cas actuellement acceptés et la modification voulue, s’il y en a une. Demandez une proposition préservant les autres comportements, puis examinez les différences et exécutez ces cas dans la fonction auxiliaire et son appelant.
RangeTallow · Mis à jour 2026-10-25