Rentang byte HTTP tunggal
Tentukan satu rentang byte HTTP ASCII untuk sumber berukuran nol sampai 10^12 byte dengan header paling panjang 80 karakter.
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)
Tinjau sebelum menerapkan
Bandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain.
Model
Atur endpoint kompatibel OpenAI atau Anthropic dengan URL dasar dan kunci API jika diperlukan. Uji koneksi. Server model lokal harus berjalan; alat jarak jauh dapat mengirim data secara terpisah.
Proyek
Uji ujung terbuka dan akhiran, batasi ujung dan kembalikan tanpa interval bila tak terpenuhi, serta tolak sintaks salah atau beberapa rentang.
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)
Jaga refaktor utilitas tetap setia pada permintaan yang ditafsirkannya
RangeTallow adalah perangkat lunak pemrograman AI untuk meninjau perubahan utilitas dalam konteks aplikasi yang bergantung padanya. Buka proyek di Windows dan jelaskan perilaku yang harus tetap stabil selama refaktor. Minta model memeriksa parsing masukan, nilai keluaran, dan pemanggil terkait secara bersamaan. Ini mencegah implementasi yang lebih pendek diam-diam mengubah makna permintaan.
Anda dapat menggunakan byte_range.py untuk membahas cara rentang sufiks ditentukan berdasarkan ukuran berkas yang diketahui. Berikan contoh eksplisit untuk rentang normal, sumber daya kosong, dan permintaan di luar konten yang tersedia. Tinjau keluaran fungsi pembantu sebelum memutuskan penggunaannya oleh penangan respons. Perlakukan penafsiran rentang dan pembentukan respons sebagai tanggung jawab terkait dengan batas yang dapat Anda jelaskan.
Uji perubahan yang diusulkan menggunakan lingkungan proyek, termasuk kasus yang membedakan masukan cacat dari rentang yang tidak dapat dipenuhi. Periksa kode respons yang menggunakan hasil agar konvensi keluaran baru tidak menghasilkan keluaran menyesatkan. RangeTallow mendukung koneksi kompatibel OpenAI atau Anthropic, dengan kredensial sesuai kebutuhan. Model tanpa batasan dapat dipilih ketika endpoint menawarkannya; batas konteks, alat, dan batasan tetap bergantung pada model dan server. Contoh permintaan yang diterima memberi percakapan refaktor ukuran keberhasilan konkret.
Meninjau perubahan penanganan rentang
Mengapa membedakan masukan cacat dan yang tidak dapat dipenuhi?
Keduanya menggambarkan kondisi berbeda: permintaan mungkin tidak sesuai sintaks yang diterima atau meminta konten yang tidak tersedia pada ukuran yang diketahui. Tentukan cara fungsi pembantu mewakili masing-masing kondisi dan periksa cara penangan respons menggunakan perbedaan itu.
Apakah rentang yang berhasil diparse cukup untuk membuat respons benar?
Tidak. Pemanggil masih harus membentuk respons menurut kontraknya sendiri dan sumber daya sebenarnya. Tinjau cara pemanggil menggunakan batas keluaran, termasuk pemilihan badan dan perilaku status, alih-alih menganggap keberhasilan parsing sebagai integrasi selesai.
Apa yang harus ditentukan dalam contoh sufiks?
Berikan panjang sufiks yang diminta, ukuran sumber daya yang diketahui, dan batas inklusif yang diharapkan atau hasil penolakan. Sertakan kasus sumber daya kosong agar implementasi tidak mengandalkan selalu adanya byte terakhir untuk dipilih.
Bagaimana menjaga refaktor tetap terfokus?
Tuliskan kasus yang saat ini diterima dan perubahan yang diinginkan, jika ada. Minta usulan yang mempertahankan perilaku lain, lalu periksa diff dan jalankan kasus tersebut melalui fungsi pembantu maupun pemanggilnya.
RangeTallow · Diperbarui 2026-10-25