GroupDocs.Comparison for Python 26.5.0이 이제 제공됩니다. 이번 릴리스는 25.12 이후 최초의 public‑PyPI 배포이며, 순수 Python 래퍼, AI‑assistant 탐색을 위한 AGENTS.md 번들, 새로운 콘솔 스크립트, 그리고 문서 구조 전면 재구성을 포함합니다.
이번 릴리스의 주요 내용
| 키 | 카테고리 | 요약 |
|---|---|---|
| COMPARISONPYTHON-34 | Feature | 순수 Python 래퍼 재구축 — public API가 이제 Python에서 완전히 introspectable하게 되었습니다. |
| COMPARISONPYTHON-35 | Feature | AI‑agent 탐색을 위해 AGENTS.md를 wheel 내부에 포함합니다. |
| COMPARISONPYTHON-36 | Feature | 새로운 문서 페이지: Agents and LLM Integration (MCP 서버, 번들된 AGENTS.md, LLM‑최적화 문서) |
| COMPARISONPYTHON-39 | Feature | 콘솔 스크립트 groupdocs-comparison이 wheel과 함께 설치됩니다 — compare, info, list-formats 서브커맨드 제공 |
| COMPARISONPYTHON-38 | Enhancement | 문서 구조 재정비 — developer-guide/comparing-documents/가 comparison-basic/ 및 advanced-usage/comparison/을 통합; 로드·저장 플랫화 |
Public API 변경 사항
새롭게 노출된 최상위 클래스
이 클래스들은 25.12 내부에 존재했지만 Nuitka‑컴파일된 래퍼 때문에 Python introspection에서 숨겨져 있었습니다. 이제 직접 import할 수 있습니다:
from groupdocs.comparison.license import License, Metered
from groupdocs.comparison.options import (
Color, PdfCompareOptions, WordCompareOptions, CalculateCoordinatesModeEnumeration,
ChangeType, ComparisonDisplayMode, DetalisationLevel, FolderComparisonExtension,
ImagesInheritance, MetadataType, PagesSetup, PaperSize, PasswordSaveOption,
PreviewFormats, PreviewResolution,
)
from groupdocs.comparison.result import ComparisonAction, FileType, Rectangle
새로운 Color 클래스
StyleSettings.font_color, .highlight_color, .shape_color, 그리고 .boarder_color가 이제 다음 형태를 모두 허용합니다:
from groupdocs.comparison.options import Color
# 이름 기반 색상 팩토리
style.font_color = Color.from_name("firebrick")
# RGB / RGBA 튜플
style.font_color = (255, 0, 0)
style.font_color = (255, 0, 0, 128)
# 헥스 문자열
style.font_color = "#FF8800"
style.font_color = "#80FF8800" # AARRGGBB
# ARGB 정수값
style.font_color = 0xFF0000
# 혹은 Color 인스턴스 직접 전달
style.font_color = Color(178, 34, 34, 255)
Color는 groupdocs.comparison, groupdocs.comparison.options, groupdocs.pydrawing 세 경로 모두에서 import 가능하며, 세 경로는 동일한 클래스를 가리킵니다.
Callable‑기반 PreviewOptions
PreviewOptions 생성자는 CreatePageStream 대리자를 위한 Python callable을 받습니다. 콜백 시그니처는 (page_number) -> writable_stream입니다:
from groupdocs.comparison.options import PreviewOptions, PreviewFormats
def create_page_stream(page_number):
return open(f"page-{page_number}.png", "wb")
def release_page_stream(page_number):
pass # 브리지에서 이미 스트림을 flush/close 했음
with Comparer("source.docx") as comparer:
preview = PreviewOptions(create_page_stream, release_page_stream)
preview.preview_format = PreviewFormats.PNG
preview.page_numbers = [1, 2, 3]
comparer.source.generate_preview(preview)
PreviewOptions(create_page_stream)와 같이 단일 인자만 전달해도 (release 콜백 없이) 유효합니다.
좌표 속성에서 타입이 지정된 Rectangle
options = CompareOptions(calculate_coordinates=True)
with Comparer("source.docx") as comparer:
comparer.add("target.docx")
comparer.compare(options)
for change in comparer.get_changes():
b = change.box
print(f"({b.x:.1f}, {b.y:.1f}) {b.width:.1f}x{b.height:.1f}")
# (488.96, 223.86) 71.09x36.80 — '…'
이 수정은 제품 전반에 적용되며, 모든 값 타입 속성(Point, Size 등)에서 동일하게 동작합니다.
옵션 생성자에서 속성‑이름 kwargs 지원
opts = ApplyChangeOptions(changes=changes, save_original_state=True)
save = SaveOptions(password="secret")
load = LoadOptions(password="open-sesame")
comp = CompareOptions(detect_style_changes=True, sensitivity_of_comparison=85)
setter 패턴(opts = ApplyChangeOptions(); opts.changes = changes)도 여전히 동작합니다. 알 수 없는 kwargs는 TypeError를 발생시킵니다.
새 overload‑suffix 메서드
.NET overload마다 Python에서 명시적이고 모호하지 않은 이름으로 호출할 수 있도록 overload‑suffix 메서드가 추가되었습니다. 예시:
Comparer.add_file(path),add_stream(stream),add_streams(streams),add_string(text)Comparer.apply_changes_file(path, options),apply_changes_stream(stream, options), …Comparer.compare_file(...),compare_stream(...),compare_streams(...),compare_string(...),compare_compare_options(...),compare_save_options(...)Comparer.compare_directory_file(...),compare_directory_string(...)Comparer.get_changes_change_type(...),get_changes_get_change_options(...)License.set_license_file(...),set_license_stream(...),set_license_streams(...),set_license_string(...)Metered.set_metered_key_file(...),set_metered_key_string(...)Document.generate_preview_preview_options(...)localization.SupportedLocales.is_locale_supported_culture_info(...),is_locale_supported_file(...),is_locale_supported_string(...)
명시적 Comparer.dispose()
with 컨텍스트 매니저 대신 직접 dispose()를 호출하고 싶은 경우 사용할 수 있습니다. 권장 패턴은 여전히 다음과 같습니다:
with Comparer("source.docx") as comparer:
comparer.add("target.docx")
comparer.compare("result.docx")
Enum 표기법
모든 enum은 UPPERCASE Python 관례를 따릅니다. 주요 enum 예시:
from groupdocs.comparison.result import ComparisonAction, FileType
from groupdocs.comparison.options import (
ChangeType, ComparisonDisplayMode, DetalisationLevel,
FolderComparisonExtension, ImagesInheritance, MetadataType,
PaperSize, PasswordSaveOption, PreviewFormats, PreviewResolution,
)
from groupdocs.comparison.words.revision import RevisionAction
ComparisonAction.ACCEPT, ComparisonAction.REJECT, ComparisonAction.NONE
RevisionAction.ACCEPT, RevisionAction.REJECT, RevisionAction.NONE
PreviewFormats.PNG, PreviewFormats.JPG
MetadataType.SOURCE, MetadataType.TARGET, MetadataType.FILE_AUTHOR
PasswordSaveOption.USER, PasswordSaveOption.SOURCE, PasswordSaveOption.TARGET
25.12 문서에서 .Accept/.Reject 형태를 보셨다면, 대문자 형태로 업데이트하십시오.
코드 예제
아래는 새롭게 노출된 최상위 클래스를 import하고 간단한 비교를 수행하는 최소 예제입니다:
from groupdocs.comparison import Comparer
from groupdocs.comparison.options import CompareOptions
options = CompareOptions(detect_style_changes=True)
with Comparer("source.docx") as comparer:
comparer.add("target.docx")
comparer.compare(options)
for change in comparer.get_changes():
print(f"Change type: {change.change_type}, Box: {change.box}")
업데이트 받는 방법
PyPI
pip install groupdocs-comparison-net==26.5.0
wheel은 공개 PyPI에 배포됩니다: https://pypi.org/project/groupdocs-comparison-net/
직접 다운로드
직접 다운로드 링크는 제공되지 않으며, PyPI 또는 GroupDocs 웹사이트를 통해 패키지를 받으시기 바랍니다.
리소스
- PyPI 프로젝트 페이지: https://pypi.org/project/groupdocs-comparison-net/
- Agents and LLM Integration 문서: https://docs.groupdocs.com/comparison/python-net/agents-and-llm-integration/
- 예제 저장소: https://github.com/groupdocs-comparison/GroupDocs.Comparison-for-Python-via-.NET
- 이슈 보고 포럼: https://forum.groupdocs.com/c/comparison/
- 유료 지원 헬프데스크: https://helpdesk.groupdocs.com/