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
- PyPI‑projectpagina: https://pypi.org/project/groupdocs-comparison-net/
- Documentatie Agents and LLM Integration: https://docs.groupdocs.com/comparison/python-net/agents-and-llm-integration/
- Voorbeeld‑repository: https://github.com/groupdocs-comparison/GroupDocs.Comparison-for-Python-via-.NET
- Issue‑rapportageforum: https://forum.groupdocs.com/c/comparison/
- Betaalde Support Helpdesk: https://helpdesk.groupdocs.com/