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