Skip to content

Commit 9d7b513

Browse files
ujucclaude
andcommitted
docs: py.typed 파일에 대한 블로그 포스트 추가
Python 타입 힌팅과 패키지 배포에서 사용되는 py.typed 파일에 대한 기술 문서를 작성했습니다. 이 포스트는 다음 내용을 포함합니다: - PEP 561의 py.typed 파일 설명 - uv로 라이브러리 생성 시 자동 생성되는 파일의 의미 - 타입 힌팅 지원을 위한 마커 파일의 역할과 사용법 - Python 개발자를 위한 실용적인 정보 제공 개인 개발 경험을 바탕으로 작성된 한국어 기술 블로그 글입니다. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent ed6782a commit 9d7b513

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
Title: py.typed 파일은 무엇인가?
2+
Date: 2025-08-21 21:15
3+
Modified: 2025-08-21 21:15
4+
Category: Develop
5+
Tags: python, type-hinting, type
6+
Slug: pytyped-파일은-무엇인가
7+
Summary: uv에서 라이브러리를 만들려고 명령어를 입력하니 `py.typed` 파일을 만들어줬다. 이것은 무엇인가?
8+
9+
# 들어가기
10+
11+
MCP 공부를 하려고 Python으로 Roam Research MCP를 만들어보려고 했는데, Roam Research API를 위한 공식 코드가 패키지화되지 않은 상태로 각각 따로 사용하고 있었다.
12+
그럼 Python 라이브러리를 만들어볼까 하고 한달째 (귀찮아...) 찬찬히 만들어가고 있다.
13+
14+
[uv][1]를 이용해서 `uv init --lib` 를 하였더니, `py.typed`라는 파일을 만들어줬다. 이건 뭐지?
15+
파이썬으로 단순 스크립트를 만들거나, 그냥 간단한 cli를 만들어서 사용하던 나에겐 낯선 파일이었다.
16+
17+
# PEP 561 - Distributing and Packaging Type Information
18+
19+
구글에서 검색하니 [PEP 561][2] 에 명시된 내용이라고 뜸.
20+
21+
> 타입 검사를 지원하는 패키지를 배포하고자 하는 개발자는 타입 검사를 지원하는 패키지에 `py.typed`라는 마커 파일을 추가해야 합니다. 이 마커는 재귀적으로 적용되므로 최상위 패키지에 이 마커가 포함되어 있으면 모든 하위 패키지에서도 유형 검사를 지원해야합니다. 이 파일을 패키지와 함께 설치하려면 관리자는 아래와 같이 `distutils`에서 `package_data`와 같은 기존 패키징 옵션을 사용할 수 있습니다.
22+
> (중략)
23+
> 네임스페이스 패키지 ([PEP 420][3])의 경우, 충돌을 피하고 명확성을 위해 `py.typed` 파일은 네임스페이스의 서브모듈에 있어야 합니다.
24+
> 이 PEP는 모듈 전용 배포 또는 네임스페이스 패키지 내의 단일 파일 모듈의 일부로 타이핑 정보를 배포하는것을 지원하지 않습니다.
25+
> 단일 파일 모듈은 패키지로 리팩터링하고 위에서 설명한 대로 패키지가 타이핑을 지원하다는 것을 표시해야 합니다.
26+
([원문][4])
27+
28+
# `py.typed` 파일이란?
29+
30+
- 이 라이브러리는 타입 힌팅을 완전히 지원한다는 내용을 명시하는 데 사용된다.
31+
- 내용은 안써도 됩니다.
32+
- `.pyi` ([Stub Files][5]) 파일이 있는 경우엔 `py.typed` 파일을 필요가 없습니다.
33+
34+
35+
# TMI
36+
37+
- 2017-11-12 일에 `.typeinfo` 에서 `py.typed`로 파일명이 변경되었다.
38+
39+
# 참고
40+
41+
- [PEP 561][2]
42+
- [Distributing type information](https://typing.python.org/en/latest/spec/distributing.html#type-information-in-libraries)
43+
- [Typing Python Library](https://typing.python.org/en/latest/guides/libraries.html#providing-type-annotations)
44+
45+
46+
[1]: https://docs.astral.sh/uv/concepts/projects/init/#libraries
47+
[2]: https://peps.python.org/pep-0561/
48+
[3]: https://peps.python.org/pep-0420/
49+
[4]: https://peps.python.org/pep-0561/#packaging-type-information
50+
[5]: https://typing.python.org/en/latest/spec/distributing.html#stub-files

0 commit comments

Comments
 (0)