Skip to content

Comments

HwpxDocument 저장 API를 경로/스트림/바이트 케이스로 분리#24

Merged
airmang merged 1 commit intomainfrom
codex/refactor-save-method-in-document.py
Feb 18, 2026
Merged

HwpxDocument 저장 API를 경로/스트림/바이트 케이스로 분리#24
airmang merged 1 commit intomainfrom
codex/refactor-save-method-in-document.py

Conversation

@airmang
Copy link
Owner

@airmang airmang commented Feb 18, 2026

Motivation

  • 저장 동작이 단일 save()에 몰려 있어 반환 타입과 사용 의도가 불명확해 이를 명확히 분리하려는 목적입니다.
  • 하위 호환을 유지하면서 호출자에게 명시적인 API(경로/스트림/바이트)를 제공하고 향후 save() 제거 시 전환을 용이하게 하려는 의도입니다.

Description

  • HwpxDocumentsave_to_path(path) -> str | PathLike[str], save_to_stream(stream) -> BinaryIO, to_bytes() -> bytes 메서드를 추가해 경로 저장, 스트림 저장, 바이트 반환 시나리오를 분리했습니다.
  • 기존 save()는 하위 호환용 래퍼로 유지하되 typing.overload로 시그니처를 명확히 하고 호출 시 DeprecationWarning을 발생시키며 내부에서 새 메서드로 위임하도록 변경했습니다.
  • 내부 구현은 기존 직렬화/패키지 저장 로직을 재사용하도록 self._root.serialize()HwpxPackage.save() 호출을 분리하여 각 반환 타입 요구사항을 처리합니다.
  • 문서화와 예제도 업데이트했으며 README.mddocs/api_reference.md에 새 반환 타입 안내와 deprecation 가이드를 반영했습니다.

Testing

  • 새 동작을 검증하는 단위 테스트 tests/test_document_save_api.py를 추가했고 기존 컨텍스트 매니저 테스트(tests/test_document_context_manager.py)와 함께 실행했습니다.
  • pytest -q tests/test_document_save_api.py tests/test_document_context_manager.py 명령을 실행한 결과 7 passed (및 1개의 DeprecationWarning)이 보고되었습니다.

Codex Task

@airmang airmang merged commit eb4bdc5 into main Feb 18, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant