12 คะแนน โดย darjeeling 2026-01-10 | ยังไม่มีความคิดเห็น | แชร์ทาง WhatsApp

สรุป:

  • กล่าวถึงวิธีนำและย้ายมาใช้ Python type checker ตัวใหม่บน Rust ชื่อ 'ty' ที่เปิดตัวโดย Astral (ผู้สร้าง Ruff)
  • 'ty' ทำงานโดยพื้นฐานคล้ายกับโหมด strict ของ Mypy และรองรับการติดตั้งและรันผ่าน uv เป็นหลัก
  • แม้จะยังไม่รองรับ pre-commit อย่างเป็นทางการ แต่สามารถใช้วิธีแก้แบบชุมชนได้ และมีการแนะนำวิธีเชื่อมต่อกับ GitHub Actions อย่างละเอียด

สรุปแบบละเอียด:
1. แนะนำ Ty และคุณสมบัติ
ในระบบนิเวศการตรวจสอบ type ของ Python ที่เดิมนำโดย Mypy และ Pyright ตอนนี้มี 'ty' ที่ Astral พัฒนาขึ้นเข้ามาใหม่ เช่นเดียวกับ Ruff มันถูกเขียนด้วย Rust จึงมีความเร็วสูงมาก

2. การติดตั้งและการรันบนเครื่องโลคัล
สามารถติดตั้งและรัน 'ty' ได้อย่างสะดวกผ่าน uv

  • การติดตั้ง:
    # ติดตั้งเครื่องมือผ่าน uv  
    uv tool install ty@latest  
    
    # หรือรองรับการติดตั้งแบบ standalone (ดูเอกสาร)  
    
  • การรัน:
    # รันหลังติดตั้งแล้ว  
    uv run ty  
    
    # รันโดยไม่ต้องติดตั้ง (ใช้ uvx)  
    uvx ty  
    
    # รันโดยตรง  
    ty check  
    

3. การตั้งค่า (Configuration)
สามารถตั้งค่าได้ผ่าน pyproject.toml หรือ ty.toml

  • พฤติกรรมเริ่มต้น: เมื่อรันโดยไม่มีการตั้งค่าเพิ่มเติม จะทำงานคล้ายกับโหมด strict ของ Mypy อย่างมาก
  • ข้อจำกัด: ขณะนี้ยังไม่ไฮไลต์ missing type hints หากต้องการบังคับส่วนนี้ ต้องเพิ่มกฎ flake8-annotations ของ Ruff ลงใน pyproject.toml เพื่อเสริมการทำงาน

4. การเชื่อมต่อกับ GitHub Actions
ในสภาพแวดล้อม CI สามารถสร้างไฟล์ .github/workflows/ty.yml เพื่อให้มีการตรวจสอบ type อัตโนมัติเมื่อมีการสร้าง PR

name: ty  
on:  
  pull_request:  
    types: [opened, synchronize, reopened, ready_for_review]  
  workflow_dispatch:  
jobs:  
  build:  
    if: github.event.pull_request.draft == false  
    runs-on: self-hosted  
    steps:  
      - uses: actions/checkout@v3  
      - name: Install Python  
        uses: actions/setup-python@v4  
        with:  
          python-version: "3.12"  
      - name: Install dependencies  
        run: |  
          python -m pip install --upgrade pip  
          pip install ty==0.0.7      
      - name: Run ty  
        run: ty check  
        continue-on-error: false  
  

(หมายเหตุ: เวอร์ชันของ ty จำเป็นต้องอัปเดตให้สอดคล้องกับสถานะการรีลีส)

5. การผสานกับ Pre-commit
ปัจจุบันยังไม่รองรับ pre-commit hook อย่างเป็นทางการ (issue #269) แต่สามารถใช้วิธีแก้จากชุมชน (เช่น ty-pre-commit) เพื่อนำไปผสานใน .pre-commit-config.yaml ได้ และแนะนำให้อัปเดตการตั้งค่าเมื่อมีการรองรับอย่างเป็นทางการในอนาคต

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น