GroupDocs.Comparison برای Python 26.5.0 هم‌اکنون در دسترس است. این اولین انتشار عمومی ‑ PyPI کتابخانه از نسخه 25.12 است و یک wrapper کاملاً پایتونی، فایل AGENTS.md برای کشف دستیار هوش مصنوعی، اسکریپت کنسول جدید و بازسازی گسترده مستندات را معرفی می‌کند.

چه چیزهای جدیدی در این انتشار وجود دارد

Key Category Summary
COMPARISONPYTHON-34 Feature بازسازی wrapper پایتونی‑pure — API عمومی اکنون به‌صورت کامل از پایتون قابل بازبینی است
COMPARISONPYTHON-35 Feature افزودن AGENTS.md داخل wheel برای کشف عامل‌های هوش مصنوعی
COMPARISONPYTHON-36 Feature صفحه مستندات جدید: ادغام Agents و LLM (سرور 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 عمومی

wrapper نسخه 26.x با یک ژنراتور جدید بازسازی شد که API عمومی وسیع‌تری را ارائه می‌دهد و نام چند عضو را تمیز می‌کند. اکثر اسکریپت‌های موجود نوشته‌شده برای 25.12 بدون تغییر روی 26.5 اجرا می‌شوند؛ تغییرات زیر بر اساس تأثیر بر سازگاری گروه‌بندی شده‌اند.

کلاس‌های سطح‑بالای تازه‑قابل‑مشاهده

این کلاس‌ها در داخلی‌های 25.12 وجود داشتند اما توسط wrapper کامپایل‌شده با 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 فشرده
style.font_color = 0xFF0000

# یا مستقیماً یک نمونه Color
style.font_color = Color(178, 34, 34, 255)

Color می‌تواند از groupdocs.comparison، groupdocs.comparison.options و groupdocs.pydrawing ایمپورت شود — هر سه مسیر به یک کلاس اشاره دارند.

PreviewOptions مبتنی بر Callable

سازنده PreviewOptions یک Callable پایتونی برای delegate CreatePageStream می‌پذیرد. امضای callback به شکل (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  # پل قبلاً جریان را flush/close کرده است

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) (یک آرگومان، بدون callback آزادسازی) نیز معتبر است.

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)

الگوی setter همچنان کار می‌کند (opts = ApplyChangeOptions(); opts.changes = changes). kwargsهای ناشناخته TypeError می‌اندازند.

متدهای جدید با پسوند overload

یک مجموعه از متدهای دارای پسوند overload به سطح عمومی اضافه شده‌اند تا هر overload در .NET بتواند از پایتون با نام صریح و بدون ابهام فراخوانی شود. مثال‌ها:

  • 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() صریح

برای فراخوانندگانی که ترجیح می‌دهند از idiom مدیریت زمینه with استفاده نکنند، در دسترس است. الگوی پیشنهادی همچنان به این شکل است:

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

حروف‌بندی Enumها

تمام Enumها از کنوانسیون بزرگ‌حرفی پایتون استفاده می‌کنند. برخی 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 دریافت کنید.

منابع