JetBrains는 PyCharm 2026.2 릴리스 라인에 263개의 수정 및 개선 사항이 포함되었으며, 그중 상당수가 개발 환경이 Python 코드를 이해하는 방식을 개선하는 데 초점을 맞췄다고 발표했습니다. 변경 사항에는 더욱 정확한 타입 추론, 감소한 잘못된 경고, 더욱 적절한 자동 완성, 가져오기 및 리팩터링 개선이 포함됩니다.
회사는 이러한 변경 사항이 하나의 주요 기능을 별도로 제공하기보다는 일상적인 작업에서 나타나는 세부 사항, 특히 최신 타입과 널리 사용되는 프레임워크를 사용할 때의 세부 사항을 대상으로 한다고 밝혔습니다.
더 정확해진 SQLAlchemy 2.0 지원
이번 업데이트는 SQLAlchemy 2.0과 관련된 여러 문제를 해결했습니다. 이러한 문제는 이전에 잘못된 경고를 발생시켰습니다. 이제 PyCharm은 Mapped[...] 내부의 클래스에 대한 문자열 참조를 올바르게 처리하며, Session.get()이 반환하는 타입을 클래스 자체의 타입이 아니라 모델 객체 또는 None 값으로 추론합니다.
또한 편집기는 @name.inplace.setter를 사용하는 hybrid_property의 최신 설정 도구를 인식하고, mixin에서 상속된 모델 클래스 속성을 처리합니다. 이에 따라 객체 생성 시 예상치 못한 인자에 대한 보고가 줄어듭니다.
향상된 타입 추론 및 실행 경로 분석
JetBrains는 분석기가 코드 일부를 잘못 도달할 수 없는 것으로 표시하거나, 루프를 통과한 뒤 타입 좁히기를 잃는 경우를 수정했습니다. isinstance를 사용해 int | float와 같은 숫자형 유니언을 검사할 때 더 이상 else 분기를 도달할 수 없는 것으로 처리하지 않으며, while 루프 내부에서도 올바른 타입 좁히기가 계속 유지됩니다.
수정 사항에는 언패킹과 별표 표현식을 사용할 때 타입 정보 보존, /=와 같은 증강 할당으로 생성되는 타입 수정, 그리고 __new__, __init__ 또는 metaclass __call__을 사용하는 생성자의 결과 및 Self 처리 개선도 포함됩니다.
열거형에서는 이제 .value와 .name의 값이 str 또는 int로 확장되지 않고 정확한 Literal 타입으로 추론됩니다. 또한 데코레이터가 부과하는 제약을 바탕으로 데코레이터가 적용된 함수의 매개변수 타입을 추론할 수 있게 되었으며, 일반적인 Any 타입을 할당하지 않습니다.
더 유용해진 가져오기 및 자동 완성
자동 가져오기는 이미 가져온 모듈을 재사용하며 중복된 두 번째 가져오기를 제안하지 않습니다. 모듈을 이미 사용할 수 있는 경우 PyCharm은 정규화된 이름을 통해 해당 모듈을 참조하는 방식을 선호하며, 중첩 클래스에 대한 자동 가져오기 지원도 추가되었습니다.
문자열로 작성된 unittest.mock.patch() 대상에는 모듈, 클래스 및 속성이 포함된 경로에 대한 자동 완성이 제공됩니다. 또한 내장 함수나 dunter 함수의 재정의를 위한 자동 완성은 주석이 표시된 전체 시그니처를 채우고 필요한 타입을 자동으로 가져옵니다.
실제로 무엇이 달라지는가?
이러한 개선 사항은 개발자가 잘못된 경고를 검토하거나 가져오기 및 자동 완성 제안을 수정하는 데 소비하는 시간을 줄입니다. 클릭하여 타입 정의로 이동할 수 있게 된 인라인 타입 힌트는 사용 위치에서 제네릭 타입의 결과를 직접 이해하는 데도 도움이 됩니다.
이번 업데이트에는 f-string 내부의 형식 지정 구문에 대한 검사도 추가되어, 지원되지 않는 지정자나 __format__을 구현하지 않는 타입을 감지합니다. 리팩터링에서는 모듈 이름을 변경할 때 관련 참조와 가져오기 문도 함께 업데이트됩니다. 또한 Refactor | Field 작업의 이름이 객체 속성과 관련된 Python 용어에 맞게 Attribute로 변경되었습니다.