Hub Python Library documentation
التفاعل مع المناقشات وطلبات الدمج
التفاعل مع المناقشات وطلبات الدمج
توفر مكتبة huggingface_hub واجهة بلغة بايثون للتفاعل مع طلبات الدمج والمناقشات على الـ Hub.
قم بزيارة الصفحة المخصصة للتوثيق للحصول على نظرة أعمق حول ماهية المناقشات وطلبات الدمج على الـ Hub، وكيف تعمل في الخلفية.
استرجاع النقاشات وطلبات الدمج من المركز
تتيح لك فئة HfApi استرجاع النقاشات وطلبات الدمج على مستودع معيّن:
>>> from huggingface_hub import get_repo_discussions
>>> for discussion in get_repo_discussions(repo_id="bigscience/bloom"):
... print(f"{discussion.num} - {discussion.title}, pr: {discussion.is_pull_request}")
# 11 - Add Flax weights, pr: True
# 10 - Update README.md, pr: True
# 9 - Training languages in the model card, pr: True
# 8 - Update tokenizer_config.json, pr: True
# 7 - Slurm training script, pr: False
[...]يدعم HfApi.get_repo_discussions التصفية حسب المؤلف والنوع (طلب سحب أو نقاش) والحالة (open أو closed):
>>> from huggingface_hub import get_repo_discussions
>>> for discussion in get_repo_discussions(
... repo_id="bigscience/bloom",
... author="ArthurZ",
... discussion_type="pull_request",
... discussion_status="open",
... ):
... print(f"{discussion.num} - {discussion.title} by {discussion.author}, pr: {discussion.is_pull_request}")
# 19 - Add Flax weights by ArthurZ, pr: Trueيعيد HfApi.get_repo_discussions generator يُنتج كائنات Discussion. للحصول على جميع المناقشات في قائمة واحدة، نفّذ:
>>> from huggingface_hub import get_repo_discussions
>>> discussions_list = list(get_repo_discussions(repo_id="bert-base-uncased"))يحتوي كائن Discussion الذي يعيده HfApi.get_repo_discussions() على نظرة عامة عالية المستوى على المناقشة أو طلب السحب. يمكنك أيضاً الحصول على معلومات أكثر تفصيلاً باستخدام HfApi.get_discussion_details():
>>> from huggingface_hub import get_discussion_details
>>> get_discussion_details(
... repo_id="bigscience/bloom-1b3",
... discussion_num=2
... )
DiscussionWithDetails(
num=2,
author='cakiki',
title='Update VRAM memory for the V100s',
status='open',
is_pull_request=True,
events=[
DiscussionComment(type='comment', author='cakiki', ...),
DiscussionCommit(type='commit', author='cakiki', summary='Update VRAM memory for the V100s', oid='1256f9d9a33fa8887e1c1bf0e09b4713da96773a', ...),
],
conflicting_files=[],
target_branch='refs/heads/main',
merge_commit_oid=None,
diff='diff --git a/README.md b/README.md\nindex a6ae3b9294edf8d0eda0d67c7780a10241242a7e..3a1814f212bc3f0d3cc8f74bdbd316de4ae7b9e3 100644\n--- a/README.md\n+++ b/README.md\n@@ -132,7 +132,7 [...]',
)يعيد HfApi.get_discussion_details() كائنًا من نوع DiscussionWithDetails، وهو فئة فرعية من Discussion تتضمن معلومات أكثر تفصيلًا حول المناقشة أو طلب السحب. وتشمل المعلومات جميع التعليقات، وتغييرات الحالة، وإعادة تسمية المناقشة عبر DiscussionWithDetails.events.
في حالة طلب الدمج، يمكنك استرجاع فرق git الخام باستخدام DiscussionWithDetails.diff. جميع التزامات طلبات الدمج مدرجة في DiscussionWithDetails.events.
إنشاء ومناقشة طلبات سحب أو نقاشات برمجياً
توفر فئة HfApi أيضًا طرقًا لإنشاء المناقشات وطلبات السحب وتحريرها. ستحتاج إلى رمز وصول لإنشاء المناقشات أو طلبات السحب وتحريرها.
أبسط طريقة لاقترح تغييرات على مستودع في Hub هي عبر واجهة create_commit(): ما عليك سوى ضبط معامل create_pr على True. يتوفر هذا المعامل أيضاً في طرق أخرى تغلف create_commit():
>>> from huggingface_hub import metadata_update
>>> metadata_update(
... repo_id="username/repo_name",
... metadata={"tags": ["computer-vision", "awesome-model"]},
... create_pr=True,
... )يمكنك أيضًا استخدام HfApi.create_discussion() (أو HfApi.create_pull_request() على التوالي) لإنشاء نقاش (أو طلب سحب على التوالي) في مستودع.
قد يكون فتح طلب سحب بهذه الطريقة مفيدًا إذا كنت بحاجة إلى العمل على التغييرات محليًا. ستكون طلبات السحب المفتوحة بهذه الطريقة في وضع "draft".
>>> from huggingface_hub import create_discussion, create_pull_request
>>> create_discussion(
... repo_id="username/repo-name",
... title="Hi from the huggingface_hub library!",
... token="<insert your access token here>",
... )
DiscussionWithDetails(...)
>>> create_pull_request(
... repo_id="username/repo-name",
... title="Hi from the huggingface_hub library!",
... token="<insert your access token here>",
... )
DiscussionWithDetails(..., is_pull_request=True)يمكن إدارة طلبات الدمج والمناقشات بالكامل باستخدام فئة HfApi. على سبيل المثال:
- comment_discussion() لإضافة تعليقات
- edit_discussion_comment() لتحرير التعليقات
- rename_discussion() لتغيير اسم نقاش أو طلب سحب
- change_discussion_status() لفتح أو إغلاق نقاش / طلب سحب
- merge_pull_request() لدمج طلب سحب
- upload_attachment() لرفع صورة أو فيديو وتضمين رابطها في وصف أو تعليق
قم بزيارة صفحة توثيق HfApi للاطلاع على مرجع شامل لجميع الطرق المتاحة.
إدارة النقاشات وطلبات الدمج من سطر الأوامر
جميع العمليات المذكورة أعلاه متاحة أيضًا من سطر الأوامر عبر hf discussions. وهذا مفيد لأتمتة المهام عبر السكربتات، أو خطوط التكامل المستمر، أو التفاعلات السريعة دون الحاجة إلى كتابة أكواد بايثون.
# List open discussions and PRs on a repo
hf discussions list bigscience/bloom
# List discussions on a dataset repo
hf discussions list nebius/SWE-rebench-V2 --type dataset
# Get info for a specific discussion, including its comment thread
hf discussions info bigscience/bloom 2
# Create a new discussion
hf discussions create username/repo-name --title "Bug report" --body "Description here"
# Create a pull request
hf discussions create username/repo-name --title "Fix typo" --pull-request
# Comment on a discussion or PR
hf discussions comment username/repo-name 5 --body "LGTM!"
# Attach a screenshot to a comment
hf discussions comment username/repo-name 5 --body "Here is the fix:" --attach screenshot.png
# Merge a pull request
hf discussions merge username/repo-name 5 --yes
# Show the diff of a pull request
hf discussions diff username/repo-name 5للاطلاع على القائمة الكاملة للخيارات، شغّل hf discussions --help أو راجع مرجع سطر الأوامر.
دفع التغييرات إلى طلب سحب
قريباً!
انظر أيضاً
لمزيد من التفاصيل، قم بزيارة صفحة المناقشات وطلبات الدمج وصفحة توثيق hf_api.
Update on GitHub