GroupDocs.Comparison for Python 26.5.0 тепер доступний. Це перший публічний випуск бібліотеки на PyPI після 25.12, який вводить чисту Python‑обгортку, включений AGENTS.md для виявлення AI‑асистентів, новий консольний скрипт та масштабну реструктуризацію документації.

Що нового у цьому випуску

Ключ Категорія Опис
COMPARISONPYTHON-34 Feature Перебудова чистої Python‑обгортки — публічний API тепер повністю інспектований з Python
COMPARISONPYTHON-35 Feature Додано AGENTS.md у wheel для виявлення AI‑агентів
COMPARISONPYTHON-36 Feature Нова сторінка документації: Agents and LLM Integration (сервер MCP, включений AGENTS.md, документи, оптимізовані для LLM)
COMPARISONPYTHON-39 Feature Консольний скрипт groupdocs-comparison, встановлений разом з wheel — підкоманди compare, info, list-formats
COMPARISONPYTHON-38 Enhancement Переструктуризація документації — developer-guide/comparing-documents/ об’єднує comparison-basic/ та advanced-usage/comparison/; завантаження та збереження спрощені

Зміни у публічному API

Обгортка 26.x була перебудована за допомогою нового генератора, який відкриває ширший публічний API і прибирає кілька назв членів. Більшість існуючих скриптів, написаних під 25.12, працюватимуть без змін на 26.5; зміни нижче згруповані за впливом на сумісність.

Нові видимі класи верхнього рівня

Ці класи існували у внутрішньому коді 25.12, але були приховані від інспекції Python обгорткою, скомпільованою Nuitka. Тепер їх можна імпортувати безпосередньо:

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

Новий клас Color

StyleSettings.font_color, .highlight_color, .shape_color та .boarder_color тепер приймають будь‑яке з наступного:

from groupdocs.comparison.options import Color

# Фабрика кольорів за назвою
style.font_color = Color.from_name("firebrick")

# Кортеж RGB / RGBA
style.font_color = (255, 0, 0)
style.font_color = (255, 0, 0, 128)

# Шестизначний рядок
style.font_color = "#FF8800"
style.font_color = "#80FF8800"  # AARRGGBB

# Упакований ARGB‑int
style.font_color = 0xFF0000

# Або безпосередньо екземпляр Color
style.font_color = Color(178, 34, 34, 255)

Color можна імпортувати з groupdocs.comparison, groupdocs.comparison.options та groupdocs.pydrawing — усі три шляхи повертають один і той самий клас.

PreviewOptions, що приймає викликаємі об’єкти

Конструктор PreviewOptions приймає Python‑функцію‑колбек для делегата CreatePageStream. Підпис колбеку: (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  # міст міст вже був скинутий/закритий мостом

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) (один аргумент, без колбеку звільнення) також є допустимим.

Типізований Rectangle з координатних властивостей

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

Виправлення поширюється на весь продукт — застосовується до кожної типізованої властивості у всіх продуктах (Point, Size тощо, а не лише до Rectangle).

Параметри‑ключі (kwargs) імен властивостей у конструкторах опцій

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)

Шаблон сеттера все ще працює (opts = ApplyChangeOptions(); opts.changes = changes). Невідомі kwargs викликають TypeError.

Нові методи з суфіксом overload

Додано набір методів з суфіксом overload, щоб кожне .NET‑перевантаження можна було викликати з Python однозначною назвою. Приклади:

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

Доступний для викликів, які не хочуть користуватись контекстним менеджером with. Рекомендований патерн залишається:

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

Форматування enum’ів

Усі enum’и використовують UPPERCASE‑конвенцію Python. Приклади поширених enum’ів:

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

Якщо ви користувались документацією 25.12, у якій значення виглядали як .Accept/.Reject, оновіть їх до верхнього регістру.

Приклад коду

Нижче наведено мінімальний приклад, який демонструє імпорт нових видимих класів верхнього рівня та просте порівняння:

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

Як отримати оновлення

PyPI

pip install groupdocs-comparison-net==26.5.0

Колесо (wheel) опубліковано у публічному PyPI: https://pypi.org/project/groupdocs-comparison-net/

Пряме завантаження

Прямі посилання на завантаження не надаються; отримайте пакет через PyPI або веб‑сайт GroupDocs.

Ресурси