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
- Page du projet PyPI : https://pypi.org/project/groupdocs-comparison-net/
- Documentation Agents et intégration LLM : https://docs.groupdocs.com/comparison/python-net/agents-and-llm-integration/
- Référentiel d’exemples : https://github.com/groupdocs-comparison/GroupDocs.Comparison-for-Python-via-.NET
- Forum de signalement des problèmes : https://forum.groupdocs.com/c/comparison/
- Service d’assistance payant : https://helpdesk.groupdocs.com/