Skip to content

Release 2.2.6 — require python-hwpx 2.9.1, drop compat shim, packaging fix#65

Merged
airmang merged 3 commits into
mainfrom
release/2.2.6
Apr 27, 2026
Merged

Release 2.2.6 — require python-hwpx 2.9.1, drop compat shim, packaging fix#65
airmang merged 3 commits into
mainfrom
release/2.2.6

Conversation

@airmang
Copy link
Copy Markdown
Owner

@airmang airmang commented Apr 27, 2026

요약

python-hwpx 2.9.1 릴리즈에 맞춰 하류(downstream) MCP 서버도 2.2.6으로 묶어 내보냅니다. #64에서 임시로 들여놓았던 id 생성기 compat shim을 제거하고, 소스 설치를 막던 PEP 639 classifier도 정리합니다.

포함 내용

  1. refactor(compat): id-generator shim 제거

  2. chore(release): 버전/의존성 범프

    • version = \"2.2.6\"
    • python-hwpx >= 2.9.1 (이전: >= 2.6)
    • pyproject.toml의 legacy License :: OSI Approved :: Apache Software License classifier 제거 — setuptools>=77 기준 `pip install -e .` / `python -m build`가 airmang/python-hwpx#38과 동일한 사유로 실패하던 문제를 해소합니다.
  3. ci(release): `[Unreleased]` 섹션 skip

    • airmang/python-hwpx#39과 동일한 패치. 태그 푸시 전에 Unreleased 블록을 매번 비우지 않아도 `v*` 태그 릴리즈가 통과합니다.

로컬 검증

Python 3.11 + python-hwpx 2.9.1 (PyPI에서 바로 설치) 환경:

```
pytest tests/ → 130 passed in 4.37s
```

실전 재현 (compat shim 제거 후):

  • HwpxDocument.new() + 100 paragraphs + 3x3 table + cell.text = 전부 성공
  • 저장된 hwpx 내 전 id 183개 스캔 → overflow 0건
  • 즉 업스트림 2.9.1의 id-range fix가 실제로 흐르고 있음을 확인

`pip install -e .` / `python -m build` 둘 다 성공.

머지 이후

  1. 이 PR merge 후 `v2.2.6` 태그 push → Release 워크플로가 PyPI 업로드 + GitHub Release 생성을 자동으로 수행합니다.
  2. `get-pip`-style 통합 검증이 필요하면 머지 후 별도 smoke-test 스크립트에서 돌리겠습니다.

연결 이슈

관련 상류 변경

기여자 크레딧

airmang added 3 commits April 27, 2026 22:59
…x 2.9.1

python-hwpx 2.9.1 masks _paragraph_id / _object_id / _memo_id with
0x7FFFFFFF upstream (airmang/python-hwpx#34). The local compat shim
introduced in #64 is therefore redundant for anyone on 2.9.1+, which
is what pyproject.toml now requires.

Remove:
- _patch_upstream_id_generators_to_signed_int32 in compat.py
- tests/test_compat_id_sanitizer.py (covered upstream by
  tests/test_id_generator_range.py and test_skeleton_template_ids.py)

Keep _patch_sub_element_for_lxml_parent. Upstream 2.9.1 only fixed
the cell-text and run-style paths (airmang/python-hwpx#30); the other
26 stdlib ET.SubElement call sites in hwpx/oxml/document.py can still
trip the lxml dispatch mismatch until a follow-up upstream PR closes
them out.

Thanks to @seonghoony for the original shim (#64).
…y classifier

- Bump version to 2.2.6.
- Require python-hwpx >= 2.9.1 so the interop fixes merged upstream
  (ET.SubElement dispatch #30, id-range #34/#35) are always present.
- Drop the legacy 'License :: OSI Approved :: Apache Software License'
  classifier that collided with the PEP 639 'license' expression under
  setuptools>=77 (same source-install breakage that python-hwpx 2.9.1
  fixed).
- Record the above plus the compat shim removal in CHANGELOG [2.2.6].
Mirror airmang/python-hwpx#39. The release workflow matched the first
'## [...]' heading in CHANGELOG.md, so maintainers had to empty the
conventional keep-a-changelog [Unreleased] block before every tag push.

Skip the Unreleased heading explicitly in both validation and the
release-notes extraction step so the first actual version heading
(e.g. '## [2.2.6] - 2026-04-27') drives both the tag/version check
and the release body.
@airmang airmang merged commit 68dfdaf into main Apr 27, 2026
@airmang airmang deleted the release/2.2.6 branch April 27, 2026 14:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant