python-hwpx 6.0 이주 가이드
6.0 은 HwpxDocument 의 공개 표면을 102개에서 34개로 줄였다. 나머지
79개는 사라진 것이 아니라 도메인 네임스페이스로 옮겨갔다.
6.0 에서 지금 당장 깨지는 것
경로 이동은 아무것도 깨뜨리지 않는다. 5.x 이름은 전부 그대로 답하고,
호출하면 행선지를 담은 DeprecationWarning 이 난다. 7.0 에서 제거된다.
깨지는 것은 반환 타입뿐이다. add_* 가 dict·str·int·tuple 대신 도메인
객체를 돌려준다.
5.x 반환 |
6.0 반환 |
옮기는 법 |
|---|---|---|
|
|
|
|
|
원소 접근을 속성으로 |
|
|
|
|
|
|
|
|
|
|
|
속성 접근. 빈 값은 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
런타임은 그대로 — 타입만 정직해졌다 |
6.0 이 고친 것
① section=0 이 동작한다. 5.x 는 내부가 새는 AttributeError 를 냈다.
document.page.set_header(text="머리말", section=0) # 인덱스도 객체도 받는다
잘못된 값은 전부 typed error 다 — 범위 밖은 section-not-found, 타입 오류는
section-invalid-type, section_index 와 동시 지정은 section-argument-conflict.
② 스타일을 이름으로 지정하고, 오타를 호출 시점에 잡는다.
document.add_paragraph("본문", style="개요 1")
document.add_paragraph("본문", style="개요1")
# HwpxLookupError(code="style-not-found"), context["closest"] == ["개요 1", "개요 10"]
style_id_ref= 는 6.x 동안 계속 동작하며 DeprecationWarning 을 낸다.
③ add_heading 이 생겼다. 개요 스타일과 개요 수준을 함께 붙인다 —
5.x 는 둘이 분리돼 “번호는 붙는데 스타일은 바탕글”인 문단이 나왔다.
document.add_heading("2026 학년도 운영계획", level=1) # level 1..10
④ 공개 경로의 실패가 전부 typed 다. code·context·suggestion 을
싣는다(70종 — docs/error-codes.md). 기존 except ValueError 는 그대로
작동한다 — typed 클래스가 자기가 대체한 builtin 을 함께 상속한다.
이주가 급하지 않다면
아무것도 안 해도 6.0 은 돌아간다(반환 타입 13종 제외). 경고를 한 번에 보려면:
python -W error::DeprecationWarning -m pytest
되돌리려면 pip install "python-hwpx<6". 5.x 라인은 그대로 있다.
전수 대응표 (79)
doc 는 HwpxDocument 인스턴스다. 왼쪽은 6.x 동안 계속 동작하되 경고를 내고,
7.0 에서 사라진다.
doc.styles — 서식 정의 (16)
5.x |
6.0 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
doc.page — 쪽 기하 (11)
5.x |
6.0 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
doc.text — 텍스트 (6)
5.x |
6.0 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
doc.parts — OPC 파트 (4)
5.x |
6.0 |
|---|---|
|
|
|
|
|
|
|
|
doc.tables — 표 (4)
5.x |
6.0 |
|---|---|
|
|
|
|
|
|
|
|
doc.fields — 양식개체 (6)
5.x |
6.0 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
doc.shapes — 인라인 개체 (7)
5.x |
6.0 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
doc.media — 이진 항목 (5)
5.x |
6.0 |
|---|---|
|
|
|
|
|
|
|
|
|
|
doc.notes — 주석 (7)
5.x |
6.0 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
doc.refs — 참조 (2)
5.x |
6.0 |
|---|---|
|
|
|
|
doc.tracking — 변경추적 (8)
5.x |
6.0 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
강등 3종 (3)
5.x |
6.0 |
|---|---|
|
|
|
|
|
|
이 표는 어디서 오는가
tests/data/document_legacy_shims.json 에서 생성된다. 그 락은 실제
_LegacyFacade 클래스에서 유도되므로, shim 을 지우거나 행선지를 바꾸면
이 문서가 먼저 어긋난다 — 문서끼리 대조하는 가드는 양쪽에 다 없는 것을
놓치기 때문에 코드에서 유도한다.