Chuyển đến nội dung chính
Quay lại danh sách bài viết

Ruff 0.17.3 แก้ UP032 แปลง f-string ผิด พร้อมปรับ Formatter และเพิ่มกฎ Preview

แพตช์ Ruff 0.17.3 เน้นความถูกต้อง auto-fix และประสิทธิภาพ พร้อมแนวทางตรวจ diff และตรึงรุ่นให้ Local, Pre-commit กับ CI ตรงกัน

Ruff 0.17.3 แก้ UP032 แปลง f-string ผิด พร้อมปรับ Formatter และเพิ่มกฎ Preview

Ruff 0.17.3 ระบุวันออกใน release notes เป็น 26 ตุลาคม 2026 และเผยแพร่บน GitHub เมื่อ 27 ตุลาคมเวลา 00:35 UTC รุ่นนี้แก้การแปลงข้อความเป็น f-string ที่ไม่ถูกต้องในกฎ UP032 พร้อมปรับประสิทธิภาพของ formatter และ lexer รวมถึงเพิ่ม shared-clock-mock เป็น preview rule ประเด็นที่ทีม Python ควรตรวจคือผลของการแก้โค้ดอัตโนมัติและความต่างระหว่างกฎปกติกับกฎทดลอง

Auto-fix ต้องรักษาความหมายของโปรแกรม

กฎ UP032 อยู่ในกลุ่ม pyupgrade และเกี่ยวข้องกับการเปลี่ยนรูปแบบ string formatting การมีแพตช์แก้ conversion ไม่ถูกต้องเป็นเหตุให้ทีมที่พึ่ง auto-fix ควรตรวจ diff และผลทดสอบ ไม่ควรถือว่าการเปลี่ยนที่ดูเป็นเรื่องรูปแบบย่อมไม่มีผลต่อพฤติกรรมเสมอไป

สำหรับโครงการที่มีการจัดรูปแบบตัวเลข ข้อความแปลภาษา หรือการสร้างข้อความตามค่าที่ runtime ควรมีตัวอย่างทดสอบผลลัพธ์ที่คาดไว้ เมื่ออัปเดต Ruff ให้รันการตรวจโดยยังไม่เขียนไฟล์ก่อน แล้วทดลอง fix ใน branch แยกเพื่อให้ reviewer เห็นความต่างครบ การรวมการเปลี่ยนจำนวนมากเข้ากับงานแก้บั๊กธุรกิจอาจทำให้ตรวจผลกระทบได้ยาก

Preview Rule ควรมีเหตุผลในการเปิด

shared-clock-mock ถูกเพิ่มเป็น preview feature ตามประกาศ จึงควรตรวจเอกสารกฎและตัวอย่างที่โครงการใช้ก่อนรวมเข้าค่ากลาง หากทีมเปิด preview ไว้แล้ว อัปเดตเครื่องมืออาจทำให้เจอ finding ใหม่ได้ แม้โค้ดใน repository ไม่เปลี่ยน

ควรแยกการประเมินกฎใหม่ออกจากการบังคับใช้ทันที ลองกับชุดทดสอบที่มีการ mock เวลา ตรวจว่าคำเตือนช่วยพบปัญหาที่ทีมต้องการจริงหรือไม่ และบันทึกข้อยกเว้นที่จำเป็นพร้อมเหตุผล ไม่ควรปิดคำเตือนทั้งกลุ่มเพียงเพราะมีตัวอย่างหนึ่งที่ยังไม่เข้าใจ

ประสิทธิภาพต้องเทียบกับ Output Mode ที่ใช้

release notes ระบุ buffering ของ stdout ใน ruff format และการปรับการอ่าน identifiers กับ keywords ผลที่เห็นอาจต่างตามขนาดไฟล์และการเรียกผ่าน terminal หรือ pipeline ผู้ดูแล CI ควรวัดคำสั่งจริงของงาน เช่นการตรวจ formatter โดยไม่เขียนไฟล์ เทียบเวลาหลายรอบบน runner ที่สภาพใกล้เคียงกัน

อย่าใช้ผลรอบเดียวที่ cache และโหลดเครื่องต่างกันเป็นข้อสรุป หากทีมเคยแยก lint กับ format คนละ job ให้เก็บเวลาทั้งสองอย่าง การปรับส่วน parser อาจไม่ใช่คอขวดหลักเมื่อ pipeline ใช้เวลาส่วนใหญ่ติดตั้ง dependency หรือดาวน์โหลด artifact

ให้ Local, Pre-commit และ CI ใช้รุ่นเดียวกัน

อาการที่พบบ่อยในทีมคือเครื่องนักพัฒนาแก้ format ผ่านแล้ว แต่ CI ยังปฏิเสธเพราะใช้ Ruff คนละรุ่น ก่อนเปลี่ยนควรตรวจทุกจุดที่ตรึงเครื่องมือ ทั้ง dependency กลุ่มพัฒนา pre-commit hook และ container ที่รัน CI พร้อมระบุ configuration ที่แต่ละจุดอ่านอยู่

หลังอัปเดต ให้ตรวจว่าไฟล์ที่ไม่ควรถูกแก้ยังถูกยกเว้นตามเดิม และทีมเห็น diff ชุดเดียวกันเมื่อใช้คำสั่งเดียวกัน หากมีการปรับ configuration เพิ่ม ให้แยกเหตุผลให้ชัดว่าเกิดจากแพตช์หรือการตัดสินใจเปิดกฎใหม่ของโครงการเอง

คุณค่าของแพตช์นี้อยู่ที่ความถูกต้องและการทำงานที่สอดคล้องกัน ไม่จำเป็นต้องเปิดทุกฟีเจอร์เพื่อให้ได้ประโยชน์ เริ่มจากกฎและคำสั่งที่ใช้อยู่ ตรวจผลทดสอบ แล้วจึงพิจารณากฎทดลองเมื่อมีโจทย์ชัดเจน

แหล่งต้นทาง: Ruff 0.17.3 release notes ระบุวันออก 26 ตุลาคม 2026 และเผยแพร่บน GitHub วันที่ 27 ตุลาคม 2026 เวลา 00:35 UTC

Chia sẻ bài viết:
Xem thêm bài viết