GroupDocs.Comparison voor Python 26.5.0 is nu beschikbaar. Dit is de eerste public‑PyPI release van de bibliotheek sinds 25.12 en introduceert een pure‑Python wrapper, meegeleverde AGENTS.md voor AI‑assistant ontdekking, een nieuw console‑script, en een uitgebreide herstructurering van de documentatie.

Wat is nieuw in deze release

Sleutel Categorie Samenvatting
COMPARISONPYTHON-34 Feature Pure-Python wrapper herbouw — publieke API is nu volledig introspecteerbaar vanuit Python
COMPARISONPYTHON-35 Feature AGENTS.md meegeleverd in het wheel voor AI-agent ontdekking
COMPARISONPYTHON-36 Feature Nieuwe documentatiepagina: Agents and LLM Integration (MCP server, meegeleverde AGENTS.md, LLM‑geoptimaliseerde docs)
COMPARISONPYTHON-39 Feature Console‑script groupdocs-comparison geïnstalleerd met het wheel — subcommando’s compare, info, list-formats
COMPARISONPYTHON-38 Enhancement Documentatieherstructurering — developer-guide/comparing-documents/ consolideert comparison-basic/ en advanced-usage/comparison/; laden en opslaan afgevlakt

Wijzigingen in de publieke API

De 26.x wrapper is opnieuw opgebouwd met een nieuwe generator die een bredere publieke API blootlegt en een aantal ledennamen opruimt. De meeste bestaande scripts geschreven voor 25.12 draaien ongewijzigd op 26.5; de onderstaande wijzigingen zijn gegroepeerd op compatibiliteitsimpact.

Nieuw‑zichtbare top‑level klassen

Deze klassen bestonden in de interne structuur van 25.12, maar waren verborgen voor Python‑introspectie door de Nuitka‑gecompileerde wrapper. Ze zijn nu direct importeerbaar:

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

Nieuwe Color‑klasse

StyleSettings.font_color, .highlight_color, .shape_color, en .boarder_color accepteren nu een van de volgende:

from groupdocs.comparison.options import Color

# Named‑color factory
style.font_color = Color.from_name("firebrick")

# RGB / RGBA tuple
style.font_color = (255, 0, 0)
style.font_color = (255, 0, 0, 128)

# Hex string
style.font_color = "#FF8800"
style.font_color = "#80FF8800"  # AARRGGBB

# Packed ARGB int
style.font_color = 0xFF0000

# Of direct een Color‑instantie
style.font_color = Color(178, 34, 34, 255)

Color is importeerbaar vanuit groupdocs.comparison, groupdocs.comparison.options en groupdocs.pydrawing — alle drie paden verwijzen naar dezelfde klasse.

Callable‑gebaseerde PreviewOptions

De constructor van PreviewOptions accepteert een Python‑callable voor de CreatePageStream‑delegate. De callback‑handtekening is (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  # the bridge has already flushed/closed the 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) (enkel‑argument, geen release‑callback) is ook geldig.

Getypeerde Rectangle vanuit coördinateigenschappen

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 — '…'

De correctie is product‑breed — van toepassing op elke waarde‑getypeerde eigenschap in elk product (Point, Size, enz., niet alleen Rectangle).

Eigenschaps‑naam kwargs op opties‑constructors

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)

Het setter‑patroon werkt nog steeds (opts = ApplyChangeOptions(); opts.changes = changes). Onbekende kwargs veroorzaken een TypeError.

Nieuwe overload‑suffixed methoden

Er is een set overload‑suffixed methoden toegevoegd aan de publieke oppervlakte zodat elke .NET‑overload aanroepbaar is vanuit Python via een expliciete, niet‑ambiguë naam. Voorbeelden:

  • 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(...)

Expliciete Comparer.dispose()

Beschikbaar voor aanroepers die liever niet de with‑context‑manager idiom gebruiken. Het aanbevolen patroon blijft:

with Comparer("source.docx") as comparer:
    comparer.add("target.docx")
    comparer.compare("result.docx")

Enum‑hoofdlettergebruik

Alle enums gebruiken de UPPERCASE Python‑conventie. Veelvoorkomende enums:

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

Als je de documentatie van 25.12 gebruikte waarin waarden als .Accept/.Reject werden getoond, werk ze dan bij naar de hoofdletter‑vorm.

Code‑voorbeeld

Hieronder staat een minimaal voorbeeld dat laat zien hoe je de nieuw‑zichtbare top‑level klassen importeert en een eenvoudige vergelijking uitvoert:

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}")

Hoe de update te verkrijgen

PyPI

pip install groupdocs-comparison-net==26.5.0

Het wheel wordt gepubliceerd op public PyPI: https://pypi.org/project/groupdocs-comparison-net/

Directe download

Geen directe download‑links beschikbaar; verkrijg het pakket via PyPI of de GroupDocs‑website.

Bronnen