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 دریافت کنید.
منابع
- صفحه پروژه در PyPI: https://pypi.org/project/groupdocs-comparison-net/
- مستندات ادغام Agents و LLM: https://docs.groupdocs.com/comparison/python-net/agents-and-llm-integration/
- مخزن مثالها: https://github.com/groupdocs-comparison/GroupDocs.Comparison-for-Python-via-.NET
- انجمن گزارش مشکلات: https://forum.groupdocs.com/c/comparison/
- پشتیبانی پولی Helpdesk: https://helpdesk.groupdocs.com/