GroupDocs.Comparison pour Python 26.5.0 est maintenant disponible. Il s’agit de la première version publique ‑ PyPI de la bibliothèque depuis 25.12 et elle introduit un wrapper pure‑Python, le fichier AGENTS.md intégré pour la découverte d’assistants IA, un nouveau script console et une restructuration importante de la documentation.

Quoi de neuf dans cette version

Clé Catégorie Résumé
COMPARISONPYTHON-34 Fonctionnalité Reconstruction du wrapper pure‑Python ‑ l’API publique est désormais entièrement introspectable depuis Python
COMPARISONPYTHON-35 Fonctionnalité Inclusion de AGENTS.md dans la roue pour la découverte d’agents IA
COMPARISONPYTHON-36 Fonctionnalité Nouvelle page de documentation : Agents et intégration LLM (serveur MCP, AGENTS.md intégré, docs optimisées pour LLM)
COMPARISONPYTHON-39 Fonctionnalité Script console groupdocs-comparison installé avec la roue ‑ sous‑commandes compare, info, list-formats
COMPARISONPYTHON-38 Amélioration Restructuration de la documentation ‑ developer-guide/comparing-documents/ regroupe comparison-basic/ et advanced-usage/comparison/; chargement et enregistrement aplatis

Modifications de l’API publique

Le wrapper 26.x a été reconstruit avec un nouveau générateur qui expose une API publique plus large et nettoie quelques noms de membres. La plupart des scripts existants écrits pour 25.12 fonctionnent sans modification sur 26.5 ; les changements ci‑dessous sont regroupés par impact de compatibilité.

Classes de niveau supérieur nouvellement visibles

Ces classes existaient dans les internaux de 25.12 mais étaient cachées de l’introspection Python par le wrapper compilé avec Nuitka. Elles sont maintenant importables directement :

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

Nouvelle classe Color

StyleSettings.font_color, .highlight_color, .shape_color et .boarder_color acceptent désormais l’une des valeurs suivantes :

from groupdocs.comparison.options import Color

# Fabrique de couleur nommée
style.font_color = Color.from_name("firebrick")

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

# Chaîne hexadécimale
style.font_color = "#FF8800"
style.font_color = "#80FF8800"  # AARRGGBB

# Entier ARGB compacté
style.font_color = 0xFF0000

# Ou une instance Color directement
style.font_color = Color(178, 34, 34, 255)

Color est importable depuis groupdocs.comparison, groupdocs.comparison.options et groupdocs.pydrawing ‑ les trois chemins renvoient à la même classe.

PreviewOptions basé sur un callable

Le constructeur PreviewOptions accepte un callable Python pour le délégué CreatePageStream. La signature du rappel est (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  # le pont a déjà vidé/fermé le flux

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) (un seul argument, sans rappel de libération) est également valide.

Rectangle typé à partir des propriétés de coordonnées

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

La correction s’applique à l’ensemble du produit ‑ elle concerne chaque propriété typée dans tous les produits (Point, Size, etc., pas seulement Rectangle).

Paramètres nommés (kwargs) sur les constructeurs d’options

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)

Le modèle de mutateur fonctionne toujours (opts = ApplyChangeOptions(); opts.changes = changes). Les kwargs inconnus lèvent TypeError.

Méthodes suffixées par surcharge

Un ensemble de méthodes suffixées par le type de surcharge a été ajouté à la surface publique afin que chaque surcharge .NET soit appelable depuis Python via un nom explicite et non ambigu. Exemples :

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

Disponible pour les appelants qui préfèrent ne pas utiliser le gestionnaire de contexte with. Le modèle recommandé reste :

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

Casse des énumérations

Toutes les énumérations utilisent la convention Python MAJUSCULES. Énumérations courantes :

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

Si vous utilisiez la documentation 25.12 qui affichait des valeurs du type .Accept/.Reject, mettez‑les à jour avec la forme en majuscules.

Exemple de code

Voici un exemple minimal qui montre comment importer les classes de niveau supérieur nouvellement visibles et réaliser une comparaison simple :

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

Comment obtenir la mise à jour

PyPI

pip install groupdocs-comparison-net==26.5.0

La roue est publiée sur le PyPI public : https://pypi.org/project/groupdocs-comparison-net/

Téléchargement direct

Pas de liens de téléchargement direct fournis ; obtenez le paquet via PyPI ou le site Web de GroupDocs.

Ressources