파이썬 생태계를 위한 고성능 도구를 만들어온 Astral이 자사 도구들을 하나의 통합 툴체인으로 엮는 작업에 본격적으로 나섰다. Astral은 패키지 관리자 uv, 린터이자 포매터인 Ruff, 타입 체커 겸 언어 서버인 ty를 각각 독립적으로 개발해왔는데, 이번에 그 중 uv와 ty를 연결하는 실험적 통합 기능을 프리뷰로 공개했다. 핵심은 두 가지다. 파이썬 스크립트를 명령줄과 에디터 양쪽에서 1급 시민으로 다루는 지원, 그리고 환경 준비부터 타입 검사까지 한 번에 처리하는 통합 명령 uv check다.
이 통합의 배경에는 각 도구가 서로 다른 정보를 쥐고 있다는 사실이 있다. uv는 프로젝트의 환경과 의존성을 이해하고, ty는 코드 자체를 이해한다. 그동안은 이 둘이 따로 놀았기 때문에, 타입 검사를 하려면 사용자가 환경을 먼저 갖춰 ty에게 넘겨줘야 했다. 두 도구가 서로의 지식을 공유하면 어느 한쪽만으로는 불가능했던 기능이 열린다는 것이 Astral의 판단이다. 각 도구는 여전히 단독으로도 쓸 수 있고 생태계의 다른 도구와도 호환되지만, 함께 쓸 때 더 강력해지도록 설계한다는 방향이다.
PEP 723 스크립트가 1급 시민이 되다
PEP 723은 파이썬 스크립트가 파일 상단의 인라인 메타데이터로 자신의 의존성과 파이썬 버전 요구사항을 선언할 수 있게 한 표준이다. uv는 이미 이 메타데이터를 읽어 스크립트 실행 시 환경을 준비해왔는데, 이제 ty도 같은 메타데이터를 활용한다. ty는 프로젝트 곳곳의 스크립트를 인라인 메타데이터로 찾아내고, uv를 호출해 각 스크립트 전용 환경을 만든 뒤 그 선언에 맞춰 타입을 검사한다.
실무적으로 중요한 점은 한 저장소 안에서 스크립트마다 요구사항이 다를 수 있다는 것이다. 각 스크립트는 주변 프로젝트와 다른 의존성이나 파이썬 버전을 쓰더라도 자신의 선언을 기준으로 개별 검사된다. 에디터에서는 PEP 723으로 의존성을 선언하고 저장하면 uv가 동기화하며, 그 환경을 바탕으로 ty가 자동 완성, 호버 정보, 정의로 이동 같은 기능을 제공한다. 에디터 통합이 켜져 있으면 ty가 백그라운드에서 uv를 호출해 환경을 준비하는 과정이 자동으로 일어난다.
uv check로 합쳐지는 진단 인터페이스
uv check는 uv에 통합 진단 인터페이스를 도입하는 명령으로, 우선 ty 지원부터 시작한다. 이 명령을 실행하면 프로젝트 환경이 자동으로 준비되고 필요한 의존성이 설치된 뒤 ty로 코드가 검사된다. 별도 설정 없이 통합이 자동으로 활성화되며, 반대로 uv check를 쓰지 않으면 기존 uv 경험은 그대로다. ty 바이너리는 처음 호출할 때 별도로 설치된다. 워크스페이스에서는 uv check --package 이름으로 개별 패키지를, --all-packages로 전체를 검사할 수 있고, 검사 대상은 워크스페이스 설정이 결정하므로 프로젝트가 커져도 명령은 동일하게 유지된다. 독립 PEP 723 스크립트는 uv check --script 파일명으로 자신의 선언에 따라 따로 검사한다.
버전 관리 측면의 이점도 눈여겨볼 만하다. uv check는 프로젝트 락파일에 기록된 ty 버전을 자동으로 사용한다. 설정과 락파일을 커밋해두면 개발자와 CI가 별도의 핀 관리 없이 동일한 ty 버전을 공유하게 된다. ty 프리커밋 훅 역시 내부적으로 uv check를 사용해, 프로젝트의 의존성 선언으로부터 환경을 자동 구성한 뒤 커밋 전에 ty를 돌린다. 이 전체 통합은 uv의 워크스페이스 메타데이터가 ty에게 패키지, 의존성, 파이썬 환경에 대한 구조적 시야를 제공하는 방식으로 작동한다.
아직은 실험 단계라는 점을 감안해야
도입하려면 전제 조건과 한계를 짚어야 한다. PEP 723 스크립트 지원과 uv check 명령은 uv 0.12.3, ty 0.0.76 이상을 요구한다. VS Code에서 쓰려면 uv와 ty 확장을 설치한 뒤 settings.json에서 uv 통합을 켜야 한다. 특히 PEP 723 스크립트의 자동 환경 구성은 현재 옵트인이다. 의존성 설치 과정에서 서드파티 파이썬 코드가 실행될 수 있기 때문인데, 신뢰할 수 없는 스크립트를 다룰 때는 이 동작의 보안적 함의를 의식하는 편이 좋다. Astral은 향후 스크립트 지원과 표준 프로젝트의 자동 환경 설정을 기본값으로 전환할 계획이라고 밝혔다.
현재 기능은 주로 uv의 환경 구성 능력으로 ty 실행을 돕는 수준이지만, Astral은 uv의 의존성 지식과 ty의 코드 이해를 결합한 새로운 범주의 검사도 준비하고 있다. 사용하지 않는 의존성 탐지 같은 것이 예로 언급됐고, 이는 추후 별도 글에서 다뤄질 예정이다. 당장 프로덕션에 전면 도입하기보다는, 스크립트가 많은 저장소나 CI에서 타입 체커 버전을 통일하고 싶은 팀이 실험적으로 적용해보며 피드백을 주기에 적합한 단계로 보인다. ty의 정식 릴리스 작업도 병행 중이라는 점을 함께 고려하면 좋겠다.