GroupDocs.Comparison für Python 26.5.0 ist jetzt verfügbar. Dies ist die erste öffentliche PyPI‑Veröffentlichung der Bibliothek seit 25.12 und führt einen reinen Python‑Wrapper, das mitgelieferte AGENTS.md für die KI‑Assistenten‑Entdeckung, ein neues Konsolenskript und eine umfangreiche Umstrukturierung der Dokumentation ein.

Was ist neu in dieser Version

Schlüssel Kategorie Zusammenfassung
COMPARISONPYTHON-34 Funktion Neuaufbau des reinen Python‑Wrappers — die öffentliche API ist jetzt vollständig introspektierbar aus Python
COMPARISONPYTHON-35 Funktion AGENTS.md wird im Wheel für die KI‑Agenten‑Entdeckung mitgeliefert
COMPARISONPYTHON-36 Funktion Neue Dokumentationsseite: Agents and LLM Integration (MCP‑Server, mitgeliefertes AGENTS.md, LLM‑optimierte Docs)
COMPARISONPYTHON-39 Funktion Konsolenskript groupdocs-comparison wird mit dem Wheel installiert — Unterbefehle compare, info, list-formats
COMPARISONPYTHON-38 Verbesserung Umstrukturierung der Dokumentation — developer-guide/comparing-documents/ fasst comparison-basic/ und advanced-usage/comparison/ zusammen; Laden und Speichern abgeflacht

Änderungen der öffentlichen API

Der Wrapper der Version 26.x wurde mit einem neuen Generator neu erstellt, der eine breitere öffentliche API bereitstellt und einige Member‑Namen bereinigt. Die meisten bestehenden Skripte, die gegen 25.12 geschrieben wurden, laufen unverändert auf 26.5; die nachfolgenden Änderungen sind nach Kompatibilitätsauswirkung gruppiert.

Neu sichtbare Top‑Level‑Klassen

Diese Klassen existierten in den Interna von 25.12, waren jedoch durch den Nuitka‑kompilierten Wrapper vor der Python‑Introspektion verborgen. Sie sind jetzt direkt importierbar:

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

Neue Color‑Klasse

StyleSettings.font_color, .highlight_color, .shape_color und .boarder_color akzeptieren nun eines der folgenden Formate:

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

# Oder direkt eine Color‑Instanz
style.font_color = Color(178, 34, 34, 255)

Color ist importierbar aus groupdocs.comparison, groupdocs.comparison.options und groupdocs.pydrawing — alle drei Pfade verweisen auf dieselbe Klasse.

Aufrufbasierte PreviewOptions

Der Konstruktor von PreviewOptions akzeptiert ein Python‑Callable für das CreatePageStream‑Delegate. Die Signatur des Callbacks lautet (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) (ein Argument, kein Release‑Callback) ist ebenfalls gültig.

Typisiertes Rectangle aus Koordinaten‑Properties

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

Die Korrektur gilt produktübergreifend — sie wird auf jede werttypisierte Property in allen Produkten angewendet (Point, Size usw., nicht nur Rectangle).

Property‑Name‑Kwargs bei Options‑Konstruktoren

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)

Das Setter‑Muster funktioniert weiterhin (opts = ApplyChangeOptions(); opts.changes = changes). Unbekannte Kwargs lösen TypeError aus.

Neue overload‑suffixed Methoden

Ein Satz von overload‑suffixed Methoden wurde zur öffentlichen Oberfläche hinzugefügt, sodass jede .NET‑Überladung aus Python über einen expliziten, eindeutigen Namen aufrufbar ist. Beispiele:

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

Explizites Comparer.dispose()

Verfügbar für Aufrufer, die das with‑Context‑Manager‑Muster nicht verwenden möchten. Das empfohlene Muster bleibt:

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

Enum‑Schreibweise

Alle Enums verwenden die UPPERCASE‑Konvention von Python. Häufige 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

Falls Sie in der Dokumentation zu 25.12 die Schreibweise .Accept/.Reject verwendet haben, aktualisieren Sie sie auf die Großschreibung.

Code‑Beispiel

Unten finden Sie ein minimales Beispiel, das das Importieren der neu sichtbaren Top‑Level‑Klassen demonstriert und einen einfachen Vergleich durchführt:

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

Wie Sie das Update erhalten

PyPI

pip install groupdocs-comparison-net==26.5.0

Das Wheel wird im öffentlichen PyPI veröffentlicht: https://pypi.org/project/groupdocs-comparison-net/

Direkter Download

Keine direkten Download‑Links werden bereitgestellt; beziehen Sie das Paket über PyPI oder die GroupDocs‑Webseite.

Ressourcen