GroupDocs.Comparison for Python 26.5.0 kini tersedia. Ini adalah rilis publik‑PyPI pertama dari pustaka sejak 25.12 dan memperkenalkan pembungkus pure‑Python, bundel AGENTS.md untuk penemuan AI‑assistant, skrip konsol baru, serta restrukturisasi dokumentasi yang luas.
Apa yang baru di rilis ini
| Kunci | Kategori | Ringkasan |
|---|---|---|
| COMPARISONPYTHON-34 | Fitur | Rebuild pembungkus Pure-Python — API publik kini sepenuhnya dapat di‑introspeksi dari Python |
| COMPARISONPYTHON-35 | Fitur | Menyertakan AGENTS.md di dalam wheel untuk penemuan AI‑agent |
| COMPARISONPYTHON-36 | Fitur | Halaman dokumentasi baru: Agents and LLM Integration (MCP server, bundled AGENTS.md, dokumen yang dioptimalkan untuk LLM) |
| COMPARISONPYTHON-39 | Fitur | Skrip konsol groupdocs-comparison dipasang bersama wheel — subperintah compare, info, list-formats |
| COMPARISONPYTHON-38 | Peningkatan | Restrukturisasi dokumentasi — developer-guide/comparing-documents/ mengkonsolidasikan comparison-basic/ dan advanced-usage/comparison/; pemuatan dan penyimpanan diratakan |
Perubahan API Publik
Pembungkus 26.x dibangun ulang dengan generator baru yang mengekspor API publik yang lebih luas dan membersihkan beberapa nama anggota. Sebagian besar skrip yang ditulis untuk 25.12 berjalan tanpa perubahan pada 26.5; perubahan di bawah dikelompokkan berdasarkan dampak kompatibilitas.
Kelas tingkat‑atas yang kini terlihat
Kelas‑kelas ini ada di dalam 25.12 secara internal tetapi tersembunyi dari introspeksi Python oleh pembungkus yang dikompilasi dengan Nuitka. Sekarang mereka dapat di‑import secara langsung:
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
Kelas Color baru
StyleSettings.font_color, .highlight_color, .shape_color, dan .boarder_color kini menerima salah satu dari:
from groupdocs.comparison.options import Color
# Pabrik warna bernama
style.font_color = Color.from_name("firebrick")
# Tuple RGB / RGBA
style.font_color = (255, 0, 0)
style.font_color = (255, 0, 0, 128)
# String heks
style.font_color = "#FF8800"
style.font_color = "#80FF8800" # AARRGGBB
# Integer ARGB terpaket
style.font_color = 0xFF0000
# Atau langsung instance Color
style.font_color = Color(178, 34, 34, 255)
Color dapat di‑import dari groupdocs.comparison, groupdocs.comparison.options, dan groupdocs.pydrawing—ketiga jalur tersebut mengarah ke kelas yang sama.
PreviewOptions berbasis Callable
Konstruktor PreviewOptions menerima callable Python untuk delegasi CreatePageStream. Tanda tangan callback adalah (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 # bridge sudah melakukan flush/close pada stream
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) (satu argumen, tanpa callback release) juga valid.
Rectangle bertipe dari properti koordinat
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 — '…'
Perbaikan ini bersifat lintas produk—berlaku pada setiap properti bertipe nilai di seluruh produk (Point, Size, dll., bukan hanya Rectangle).
Kwargs nama‑properti pada konstruktor opsi
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)
Pola setter masih berfungsi (opts = ApplyChangeOptions(); opts.changes = changes). Kwargs yang tidak dikenal akan menimbulkan TypeError.
Metode dengan akhiran overload baru
Sekumpulan metode dengan akhiran overload telah ditambahkan ke permukaan publik sehingga setiap overload .NET dapat dipanggil dari Python dengan nama eksplisit yang tidak ambigu. Contoh:
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() eksplisit
Tersedia bagi pemanggil yang lebih memilih tidak menggunakan idiom manajer konteks with. Pola yang direkomendasikan tetap:
with Comparer("source.docx") as comparer:
comparer.add("target.docx")
comparer.compare("result.docx")
Penulisan enum
Semua enum menggunakan konvensi Python UPPERCASE. Enum umum:
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
Jika Anda menggunakan dokumentasi 25.12 yang menampilkan nilai dengan gaya .Accept/.Reject, perbarui menjadi bentuk huruf kapital.
Contoh kode
Berikut contoh minimal yang menunjukkan cara meng‑import kelas tingkat‑atas yang baru terlihat dan melakukan perbandingan sederhana:
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}")
Cara mendapatkan pembaruan
PyPI
pip install groupdocs-comparison-net==26.5.0
Wheel dipublikasikan di PyPI publik: https://pypi.org/project/groupdocs-comparison-net/
Unduhan langsung
Tidak ada tautan unduhan langsung yang disediakan; dapatkan paket melalui PyPI atau situs web GroupDocs.
Sumber daya
- Halaman proyek PyPI: https://pypi.org/project/groupdocs-comparison-net/
- Dokumentasi Agents and LLM Integration: https://docs.groupdocs.com/comparison/python-net/agents-and-llm-integration/
- Repository contoh: https://github.com/groupdocs-comparison/GroupDocs.Comparison-for-Python-via-.NET
- Forum pelaporan isu: https://forum.groupdocs.com/c/comparison/
- Helpdesk Dukungan Berbayar: https://helpdesk.groupdocs.com/