Hub Python Library documentation
أدوات
أدوات
إعداد التسجيل
يوفر حزمة huggingface_hub أداة logging للتحكم في مستوى التسجيل الخاص بالحزمة نفسها.
يمكنك استيرادها على النحو التالي:
from huggingface_hub import loggingثم، يمكنك تحديد مستوى التفصيل لتحديث كمية السجلات التي ستشاهدها:
from huggingface_hub import logging
logging.set_verbosity_error()
logging.set_verbosity_warning()
logging.set_verbosity_info()
logging.set_verbosity_debug()
logging.set_verbosity(...)يجب فهم المستويات على النحو التالي:
error: عرض السجلات الحرجة المتعلقة بالاستخدام فقط، والتي قد تؤدي إلى خطأ أو سلوك غير متوقع.warning: يعرض سجلات ليست حرجة، لكن الاستخدام قد يؤدي إلى سلوك غير مقصود. بالإضافة إلى ذلك، قد يتم عرض سجلات معلوماتية مهمة.info: يعرض معظم السجلات، بما في ذلك بعض التسجيلات التفصيلية المتعلقة بما يحدث في الخلفية. إذا كان هناك شيء يتصرف بطريقة غير متوقعة، فننصح بتبديل مستوى التفصيل إلى هذا المستوى من أجل الحصول على مزيد من المعلومات.debug: يعرض جميع السجلات، بما في ذلك بعض السجلات الداخلية التي قد تُستخدم لتتبع ما يحدث بالضبط تحت الغطاء.
إرجاع المستوى الحالي لسجل الجذر الخاص بـ HuggingFace Hub.
تتوفر مستويات التسجيل التالية في HuggingFace Hub:
huggingface_hub.logging.CRITICAL,huggingface_hub.logging.FATALhuggingface_hub.logging.ERRORhuggingface_hub.logging.WARNING,huggingface_hub.logging.WARNhuggingface_hub.logging.INFOhuggingface_hub.logging.DEBUG
huggingface_hub.utils.logging.set_verbosity
< source >( verbosity: int )
يحدد مستوى المسجّل الجذري (root logger) الخاص بـ HuggingFace Hub.
يحدد مستوى التفصيل إلى logging.INFO.
يحدد مستوى التفصيل إلى logging.DEBUG.
يحدد مستوى التفصيل إلى logging.WARNING.
يحدد مستوى التفصيل إلى logging.ERROR.
تعطيل انتشار مخرجات سجلات المكتبة. لاحظ أن انتشار السجلات معطّل افتراضيًا.
تفعيل انتشار مخرجات سجلات المكتبة. يُرجى تعطيل المُعالِج الافتراضي الخاص بـ HuggingFace Hub لمنع تسجيل السجلات مرتين إذا تم تكوين المُسجِّل الجذري.
طرق مساعدة خاصة بالمستودع
تتعلق الطرق المعروضة أدناه بتعديل الوحدات من مكتبة huggingface_hub نفسها.
لا ينبغي أن يكون استخدام هذه الطرق ضرورياً إذا كنت تستخدم huggingface_hub ولا تقوم بتعديلها.
huggingface_hub.utils.logging.get_logger
< source >( name: str | None = None )
يعيد مسجلاً (logger) بالاسم المحدد. لا يُفترض أن يصل مستخدمو المكتبة إلى هذه الدالة مباشرة.
تهيئة أشرطة التقدم
تُعدّ أشرطة التقدّم أداةً مفيدةً لعرض المعلومات على المستخدم أثناء تنفيذ مهمة تستغرق وقتاً طويلاً (مثل تنزيل الملفات أو رفعها). يوفّر huggingface_hub غلافًا لـ tqdm لعرض أشرطة التقدّم بطريقة متّسقة عبر المكتبة.
بشكل افتراضي، تكون أشرطة التقدم مفعّلة. يمكنك تعطيلها على مستوى النظام عن طريق تعيين متغير البيئة HF_HUB_DISABLE_PROGRESS_BARS. كما يمكنك تفعيلها أو تعطيلها باستخدام enable_progress_bars() و disable_progress_bars. إذا تم تعيين متغير البيئة، فإن له الأولوية على الدوال المساعدة.
>>> from huggingface_hub import snapshot_download
>>> from huggingface_hub.utils import are_progress_bars_disabled, disable_progress_bars, enable_progress_bars
>>> # Disable progress bars globally
>>> disable_progress_bars()
>>> # Progress bar will not be shown !
>>> snapshot_download("gpt2")
>>> are_progress_bars_disabled()
True
>>> # Re-enable progress bars globally
>>> enable_progress_bars()التحكم في أشرطة التقدم الخاصة بالمجموعات
يمكنك أيضًا تفعيل أو تعطيل أشرطة التقدم لمجموعات محددة. يتيح لك ذلك إدارة ظهور أشرطة التقدم بشكل أكثر تفصيلًا داخل أجزاء مختلفة من تطبيقك أو مكتبتك. عند تعطيل شريط التقدم لمجموعة معينة، تتأثر جميع المجموعات الفرعية التابعة لها أيضًا ما لم يتم تجاوز ذلك صراحةً.
# Disable progress bars for a specific group
>>> disable_progress_bars("peft.foo")
>>> assert not are_progress_bars_disabled("peft")
>>> assert not are_progress_bars_disabled("peft.something")
>>> assert are_progress_bars_disabled("peft.foo")
>>> assert are_progress_bars_disabled("peft.foo.bar")
# Re-enable progress bars for a subgroup
>>> enable_progress_bars("peft.foo.bar")
>>> assert are_progress_bars_disabled("peft.foo")
>>> assert not are_progress_bars_disabled("peft.foo.bar")
# Use groups with tqdm
# No progress bar for `name="peft.foo"`
>>> for _ in tqdm(range(5), name="peft.foo"):
... pass
# Progress bar will be shown for `name="peft.foo.bar"`
>>> for _ in tqdm(range(5), name="peft.foo.bar"):
... pass
100%|███████████████████████████████████████| 5/5 [00:00<00:00, 117817.53it/s]are_progress_bars_disabled
huggingface_hub.utils.are_progress_bars_disabled
< source >( name: str | None = None ) → bool
تحقق مما إذا كانت أشرطة التقدم معطّلة على مستوى النظام أو لمجموعة محددة.
تعيد هذه الدالة ما إذا كانت أشرطة التقدم معطّلة لمجموعة معينة أو على مستوى النظام ككل.
تتحقق أولاً من متغير البيئة HF_HUB_DISABLE_PROGRESS_BARS، ثم من الإعدادات البرمجية.
disable_progress_bars
فئة huggingface_hub.utils.disable_progress_bars
< source >( name: str | None = None )
تعطيل أشرطة التقدم إما على مستوى النظام أو لمجموعة محددة.
تحديث حالة أشرطة التقدم بناءً على اسم المجموعة.
إذا لم يُقدَّم اسم للمجموعة، يتم تعطيل جميع أشرطة التقدم. تحترم هذه العملية
إعداد متغير البيئة HF_HUB_DISABLE_PROGRESS_BARS.
يعمل كاستدعاء عادي وكإدارة سياق: disable_progress_bars() # يُعطّل حتى استدعاء enable_progress_bars() with disable_progress_bars(): # يُعطّل ضمن الكتلة، ويُعيد التفعيل عند الخروج …
enable_progress_bars
huggingface_hub.utils.enable_progress_bars
< source >( name: str | None = None )
فعّل أشرطة التقدم إما على مستوى النظام أو لمجموعة محددة.
تقوم هذه الدالة بتفعيل أشرطة التقدم للمجموعة المحددة أو على مستوى النظام إذا لم تُحدد مجموعة. وتخضع هذه العملية لإعداد البيئة HF_HUB_DISABLE_PROGRESS_BARS.
تهيئة الخلفية HTTP
في
huggingface_hubالإصدار v0.x، كانت طلبات HTTP تُعالَج باستخدامrequests، وكان يتم تكوين الإعدادات عبرconfigure_http_backend. وبما أننا نستخدم الآنhttpx2، فإن آلية التكوين تعمل بشكل مختلف: يجب عليك توفير دالة مصنع (factory function) لا تستقبل أي معاملات وتعيدhttpx2.Client. يمكنك مراجعة التنفيذ الافتراضي هنا لمعرفة المعاملات المستخدمة افتراضيًا.
في بعض الإعدادات، قد تحتاج إلى التحكم في كيفية إرسال طلبات HTTP، على سبيل المثال عند العمل خلف وكيل (proxy). تتيح لك مكتبة huggingface_hub تكوين هذا الإعداد على مستوى عام باستخدام set_client_factory(). بعد التكوين، ستستخدم جميع الطلبات الموجهة إلى Hub إعداداتك المخصصة. وبما أن huggingface_hub يعتمد على httpx2.Client في الخلفية، يمكنك الاطلاع على توثيق httpx2 لمعرفة التفاصيل حول المعلمات المتاحة.
إذا كنت تبني مكتبة من طرف ثالث وتحتاج إلى إرسال طلبات مباشرة إلى Hub، فاستخدم get_session() للحصول على عميل httpx2 مُهيأ بشكل صحيح. استبدل أي استدعاءات مباشرة لـ httpx2.get(...) بـ get_session().get(...) لضمان السلوك الصحيح.
اضبط مصنع عميل HTTP الذي سيستخدمه huggingface_hub.
مصنع العميل هو طريقة تُرجع كائن httpx2.Client. عند أول استدعاء لـ get_session()، سيُستخدم مصنع العميل لإنشاء كائن httpx2.Client جديد سيُشارك بين جميع الاستدعاءات التي يجريها huggingface_hub.
قد يكون ذلك مفيدًا إذا كنت تشغّل سكربتاتك في بيئة محددة تتطلب تكوينًا مخصصًا (مثل وكيل مخصص أو شهادات).
استخدم get_session() للحصول على httpx2.Client مُهيأ بشكل صحيح.
احصل على كائن httpx2.Client باستخدام مصنع النقل من المستخدم.
هذا العميل مشترك بين جميع الاستدعاءات التي يجريها huggingface_hub. لذلك، يجب ألا تُغلقه يدويًا.
استخدم set_client_factory() لتخصيص httpx2.Client.
في حالات نادرة، قد ترغب في إغلاق الجلسة الحالية يدوياً (على سبيل المثال، بعد حدوث SSLError مؤقت). يمكنك القيام بذلك باستخدام close_session(). سيتم إنشاء جلسة جديدة تلقائياً عند الاستدعاء التالي لـ get_session().
تُغلق الجلسات تلقائيًا دائمًا عند انتهاء العملية.
أغلق httpx2.Client العام المستخدم بواسطة huggingface_hub.
إذا أُغلق عميل، فسيتم إنشاؤه مرة أخرى عند الاستدعاء التالي لـ get_session().
قد يكون مفيدًا إذا تم تحديث شهادة SSL، على سبيل المثال.
بالنسبة إلى الأكواد غير المتزامنة، استخدم set_async_client_factory() لإعداد httpx2.AsyncClient واستخدم get_async_session() لاسترجاع واحد.
اضبط مصنع عميل HTTP غير المتزامن الذي سيستخدمه huggingface_hub.
مصنع العميل غير المتزامن (async client factory) هو طريقة تُرجع كائن httpx2.AsyncClient.
قد يكون هذا مفيدًا إذا كنت تشغّل سكربتاتك في بيئة محددة تتطلب تكوينًا مخصصًا (مثل وكيل مخصص أو شهادات).
استخدم get_async_session() للحصول على httpx2.AsyncClient مُهيأ بشكل صحيح.
على عكس
httpx2.Clientالذي يُشارَك بين جميع الاستدعاءات التي يجريهاhuggingface_hub، فإنhttpx2.AsyncClientلا يُشارَك. يُوصى باستخدام مدير سياق غير متزامن (async context manager) لضمان إغلاق العميل بشكل صحيح عند الخروج من السياق.
أعد كائن httpx2.AsyncClient باستخدام مصنع النقل من المستخدم.
استخدم set_async_client_factory() لتخصيص httpx2.AsyncClient.
على عكس
httpx2.Clientالذي يُشارَك بين جميع الاستدعاءات التي يجريهاhuggingface_hub، فإنhttpx2.AsyncClientلا يُشارَك. يُوصى باستخدام مدير سياق غير متزامن (async context manager) لضمان إغلاق العميل بشكل صحيح عند الخروج من السياق.
على عكس العميل المتزامن، لا يُدار دورة حياة العميل غير المتزامن تلقائيًا. استخدم مدير سياق غير متزامن للتعامل معه بشكل صحيح.
وحدة httpx
يعيد huggingface_hub تصدير مكتبة HTTP التي يستخدمها في الخلفية باسم huggingface_hub.utils.httpx:
from huggingface_hub.utils import httpx
try:
...
except httpx.HTTPError:
...يكون هذا مفيدًا بشكل رئيسي للمكتبات الخارجية المبنية فوق huggingface_hub. حيث بُنيت huggingface_hub الإصدار v1.x على httpx، بينما بُنيت الإصدار v2.x على httpx2 (خلفها، الموزع كحزمة مستقلة). استيراد الوحدة من huggingface_hub.utils بدلاً من استيراد httpx مباشرة يعني أنك تحصل دائمًا على الإصدار الذي يستخدمه huggingface_hub فعليًا، وتبقى مكتبتك متوافقة مع كلا الإصدارين الرئيسيين. راجع هذه المشكلة لمزيد من التفاصيل حول خطة الانتقال.
استخدم هذا فقط إذا كنت بحاجة إلى أنواع أو استثناءات
httpx(مثل التقاط الأخطاء). لإرسال طلبات إلى Hub، استخدم get_session() كما هو موضح أعلاه.
معالجة أخطاء HTTP
huggingface_hub يحدد أخطاء HTTP خاصة به لتحسين HTTPError الذي يرميه httpx2 عبر إضافة معلومات إضافية تُرسلها الخادم.
ارفع للتحقق من الحالة
يُعدّ hf_raise_for_status() الطريقة المركزية لـ “رفع الحالة” من أي طلب مُرسَل إلى Hub. فهو يغلّف httpx2.Response.raise_for_status الأساسي لتوفير معلومات إضافية. يتم تحويل أي HTTPError يُطرح إلى HfHubHTTPError.
from huggingface_hub.utils import get_session, hf_raise_for_status, HfHubHTTPError
response = get_session().post(...)
try:
hf_raise_for_status(response)
except HfHubHTTPError as e:
print(str(e)) # formatted message
e.request_id, e.server_message # details returned by server
# Complete the error message with additional information once it's raised
e.append_to_message("\n`create_commit` expects the repository to exist.")
raisehuggingface_hub.hf_raise_for_status
< source >( response: Responseendpoint_name: str | None = None )
الإصدار الداخلي لـ response.raise_for_status() الذي سيُحسّن خطأ HTTPError المحتمل.
الاستثناء المُثار سيكون نسخة من HfHubHTTPError.
This helper is meant to be the unique method to raise_for_status when making a call to the Hugging Face Hub.
يُستدعى عند فشل الطلب:
- RepositoryNotFoundError إذا تعذّر العثور على المستودع الذي سيتم التنزيل منه. قد يكون السبب في ذلك عدم وجوده، أو أن
repo_typeغير مضبوط بشكل صحيح، أو أن المستودعprivateولا تملك صلاحية الوصول إليه.- GatedRepoError إذا كان المستودع موجودًا لكنه محمي (gated) والمستخدم غير مدرج في القائمة المصرّح لها.
- RevisionNotFoundError إذا كان المستودع موجودًا لكن تعذّر العثور على المراجعة.
- EntryNotFoundError إذا كان المستودع موجودًا لكن تعذّر العثور على العنصر (مثل الملف المطلوب).
- BadRequestError إذا فشل الطلب مع خطأ HTTP 400 BadRequest.
- HfHubHTTPError إذا فشل الطلب لسبب غير مدرج أعلاه.
التحقق من وضع عدم الاتصال
يمكنك التحقق برمجياً من تفعيل وضع عدم الاتصال باستخدام is_offline_mode. يتم تفعيل وضع عدم الاتصال عن طريق تعيين HF_HUB_OFFLINE=1 كمتغير بيئة.
يعيد ما إذا كنا في وضع عدم الاتصال بالنسبة إلى Hub.
عند تفعيل الوضع دون اتصال، ستُطلق جميع طلبات HTTP المُرسلة باستخدام get_session استثناءً من نوع OfflineModeIsEnabled.
أخطاء HTTP
فيما يلي قائمة بأخطاء HTTP التي تُطرح في huggingface_hub.
HfHubHTTPError
HfHubHTTPError هي الفئة الأم لأي خطأ HTTP في HF Hub. تتولى تحليل استجابة الخادم وتنسيق رسالة الخطأ لتوفير أكبر قدر ممكن من المعلومات للمستخدم.
فئة huggingface_hub.errors.HfHubHTTPError
< source >( message: strresponse: Responseserver_message: str | None = None )
HTTPError لتوريثها لأي خطأ HTTP مخصص يُستدعى في HF Hub.
تُحوَّل أي HTTPError على الأقل إلى HfHubHTTPError. وإذا أرسل الخادم بعض المعلومات، فسيتم إضافتها إلى رسالة الخطأ.
تفاصيل مضافة:
- يُستخرج معرّف الطلب من الترويسات حسب ترتيب الأولوية: “X-Request-Id”، “X-Amzn-Trace-Id”، “X-Amz-Cf-Id”.
- رسالة خطأ الخادم من الترويسة X-Error-Message.
- رسالة خطأ الخادم إذا تم العثور على واحدة في جسم الاستجابة.
مثال:
import httpx2
from huggingface_hub.utils import get_session, hf_raise_for_status, HfHubHTTPError
response = get_session().post(...)
try:
hf_raise_for_status(response)
except HfHubHTTPError as e:
print(str(e)) # formatted message
e.request_id, e.server_message # details returned by server
# Complete the error message with additional information once it's raised
e.append_to_message("
ate_commit` expects the repository to exist.")
raiseأضف معلومات إضافية إلى رسالة HfHubHTTPError الأولية.
RepositoryNotFoundError
فئة huggingface_hub.errors.RepositoryNotFoundError
< source >( message: strresponse: Responseserver_message: str | None = None )
تُستدعى عند محاولة الوصول إلى عنوان URL على hf.co باسم مستودع غير صالح، أو باسم مستودع خاص لا يملك المستخدم صلاحية الوصول إليه.
مثال:
>>> from huggingface_hub import model_info
>>> model_info("<non_existent_repository>")
(...)
huggingface_hub.errors.RepositoryNotFoundError: 401 Client Error. (Request ID: PvMw_VjBMjVdMz53WKIzP)
Repository Not Found for url: https://huggingface.co/api/models/%3Cnon_existent_repository%3E.
Please make sure you specified the correct `repo_id` and `repo_type`.
If the repo is private, make sure you are authenticated and your token has the required permissions.
Invalid username or password.GatedRepoError
فئة huggingface_hub.errors.GatedRepoError
< source >( message: strresponse: Responseserver_message: str | None = None )
تُستدعى عند محاولة الوصول إلى مستودع محمي لا يوجد المستخدم في قائمة المصرّح لهم.
ملاحظة: مشتقة من RepositoryNotFoundError لضمان التوافق مع الإصدارات السابقة.
مثال:
>>> from huggingface_hub import model_info
>>> model_info("<gated_repository>")
(...)
huggingface_hub.errors.GatedRepoError: 403 Client Error. (Request ID: ViT1Bf7O_026LGSQuVqfa)
Cannot access gated repo for url https://huggingface.co/api/models/ardent-figment/gated-model.
Access to model ardent-figment/gated-model is restricted and you are not in the authorized list.
Visit https://huggingface.co/ardent-figment/gated-model to ask for access.RevisionNotFoundError
فئة huggingface_hub.errors.RevisionNotFoundError
< source >( message: strresponse: Responseserver_message: str | None = None )
تُستدعى عند محاولة الوصول إلى عنوان URL على hf.co يحتوي على مستودع صالح لكن إصدارًا (revision) غير صالح.
مثال:
>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download('bert-base-cased', 'config.json', revision='<non-existent-revision>')
(...)
huggingface_hub.errors.RevisionNotFoundError: 404 Client Error. (Request ID: Mwhe_c3Kt650GcdKEFomX)
Revision Not Found for url: https://huggingface.co/bert-base-cased/resolve/%3Cnon-existent-revision%3E/config.json.RevisionResolutionError
تُستدعى بواسطة HfApi.resolve_revision() عندما لا يمكن تحديد المراجعة إلى تجزئة التزامن: تعذّر الوصول إلى Hub (وضع عدم الاتصال، خطأ في الاتصال، انتهاء المهلة، توقف Hub، …) ولم يتم العثور على إدخال مطابق في ذاكرة التخزين المؤقت المحلية.
BadRequestError
فئة huggingface_hub.errors.BadRequestError
< source >( message: strresponse: Responseserver_message: str | None = None )
تُستدعى بواسطة hf_raise_for_status عندما يعيد الخادم خطأ HTTP 400.
EntryNotFoundError
تُستدعى عند عدم العثور على الإدخال، سواء محلياً أو عن بُعد.
مثال:
>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download('bert-base-cased', '<non-existent-file>')
(...)
huggingface_hub.errors.RemoteEntryNotFoundError (...)
>>> hf_hub_download('bert-base-cased', '<non-existent-file>', local_files_only=True)
(...)
huggingface_hub.utils.errors.LocalEntryNotFoundError (...)RemoteEntryNotFoundError
فئة huggingface_hub.errors.RemoteEntryNotFoundError
< source >( message: strresponse: Responseserver_message: str | None = None )
تُستدعى عند محاولة الوصول إلى عنوان URL على hf.co يحتوي على مستودع ورسم صحيحين، لكن اسم ملف غير صالح.
مثال:
>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download('bert-base-cased', '<non-existent-file>')
(...)
huggingface_hub.errors.EntryNotFoundError: 404 Client Error. (Request ID: 53pNl6M0MxsnG5Sw8JA6x)
Entry Not Found for url: https://huggingface.co/bert-base-cased/resolve/main/%3Cnon-existent-file%3E.LocalEntryNotFoundError
تُستدعى عند محاولة الوصول إلى ملف أو لقطة غير موجودة على القرص عند تعطيل الشبكة أو عدم توفرها (مشكلة اتصال). قد يكون العنصر موجودًا على Hub.
مثال:
>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download('bert-base-cased', '<non-cached-file>', local_files_only=True)
(...)
huggingface_hub.errors.LocalEntryNotFoundError: Cannot find the requested files in the disk cache and outgoing traffic has been disabled. To enable hf.co look-ups and downloads online, set 'local_files_only' to False.IncompleteSnapshotError
تُستدعى بواسطة snapshot_download() عندما لا يمكن الوصول إلى Hub (سواءً بسبب عدم الاتصال، أو مشكلة في الاتصال، أو local_files_only=True) ويُعرف أن لقطة التخزين المؤقت غير مكتملة: حيث تكون بعض الملفات المدرجة في قائمة شجرة التخزين المؤقت للمستودع مفقودة من اللقطة المحلية.
هذا صنف فرعي من LocalEntryNotFoundError من أجل التوافق مع الإصدارات السابقة.
يحتوي السمة snapshot_path على المسار إلى اللقطة المحلية غير المكتملة، مما يتيح لمكتبة لاحقة تحديد أحدث الملفات المخزنة مؤقتًا على الرغم من كونها معروفة بأنها غير مكتملة.
CachedRepoTreeNotFoundError
يُستدعى بواسطة get_cached_repo_tree() عندما لا يكون هناك فهرس شجرة مخزّن مسبقًا للمراجعة المطلوبة.
يتم ملء قائمة الشجرة كنتيجة ثانوية لاستدعاء snapshot_download().
OfflineModeIsEnabled
تُستدعى عند إرسال طلب مع تعيين HF_HUB_OFFLINE=1 كمتغير بيئة.
التقنيات
يتضمن huggingface_hub أداة مساعدة لإرسال بيانات القياس. تساعدنا هذه المعلومات في تصحيح المشكلات وتحديد أولويات الميزات الجديدة.
يمكن للمستخدمين تعطيل جمع بيانات القياس في أي وقت عن طريق تعيين متغير البيئة HF_HUB_DISABLE_TELEMETRY=1.
كما يتم تعطيل القياس في وضع عدم الاتصال (أي عند تعيين HF_HUB_OFFLINE=1).
إذا كنت مسؤولاً عن مكتبة تابعة لطرف ثالث، فإن إرسال بيانات التلميتري بسيط للغاية، إذ يكفي إجراء استدعاء إلى send_telemetry.
تُرسل البيانات في خيط منفصل لتقليل الأثر على المستخدمين قدر الإمكان.
huggingface_hub.utils.send_telemetry
< source >( topic: strlibrary_name: str | None = Nonelibrary_version: str | None = Noneuser_agent: dict | str | None = None )
المعاملات
- topic (
str) — اسم الموضوع الذي يتم مراقبته. يُستخدم الموضوع مباشرةً لبناء عنوان URL. إذا كنت ترغب في مراقبة مواضيع فرعية، فاستخدم ببساطة فاصل “/”. أمثلة: “gradio”، “transformers/examples”،… - library_name (
str، اختياري) — اسم المكتبة التي تُرسل طلب HTTP. سيُضاف إلى ترويسة user-agent. - library_version (
str، اختياري) — إصدار المكتبة التي تُرسل طلب HTTP. سيُضاف إلى ترويسة user-agent. - user_agent (
str،dict، اختياري) — معلومات وكيل المستخدم على شكل قاموس أو سلسلة نصية واحدة. سيتم استكمالها بمعلومات حول الحزم المثبتة.
يرسل بيانات التلميتري التي تساعد في تتبع استخدام مكتبات HF المختلفة.
يساعدنا هذا البيانات الاستخدام في تصحيح المشكلات وتحديد أولويات الميزات الجديدة. ومع ذلك، نفهم أن ليس كل شخص يرغب في مشاركة معلومات إضافية، ونحترم خصوصيتك. يمكنك تعطيل جمع بيانات القياس عن بُعد عن طريق تعيين HF_HUB_DISABLE_TELEMETRY=1 كمتغير بيئة. كما يتم تعطيل القياس عن بُعد في وضع عدم الاتصال (أي عند تعيين HF_HUB_OFFLINE=1).
تُنفَّذ عملية جمع بيانات القياس في خيط منفصل لتقليل الأثر على المستخدم.
مثال:
>>> from huggingface_hub.utils import send_telemetry
# Send telemetry without library information
>>> send_telemetry("ping")
# Send telemetry to subtopic with library information
>>> send_telemetry("gradio/local_link", library_name="gradio", library_version="3.22.1")
# Send telemetry with additional data
>>> send_telemetry(
... topic="examples",
... library_name="transformers",
... library_version="4.26.0",
... user_agent={"pipeline": "text_classification", "framework": "flax"},
... )المُتحقِّقون
يتضمن huggingface_hub مُتحقّقات مخصّصة للتحقّق تلقائيًا من معاملات الدوال.
يستلهم التحقّق من العمل المنجز في Pydantic للتحقّق من تلميحات الأنواع، لكن بميزات أكثر محدودية.
مُزيِّن عام
validate_hf_hub_args() هو مُزيِّن عام (generic decorator) يُغلّف الدوال التي تحتوي على معاملات تتبع تسمية huggingface_hub. بشكل افتراضي، ستُتحقق من جميع المعاملات التي تم تنفيذ مُتحقق (validator) لها.
إذا لم يكن الإدخال صالحًا، يتم طرح HFValidationError. القيمة غير الصالحة الأولى فقط هي التي تثير خطأً وتوقف عملية التحقق.
طريقة الاستخدام:
>>> from huggingface_hub.utils import validate_hf_hub_args
>>> @validate_hf_hub_args
... def my_cool_method(repo_id: str):
... print(repo_id)
>>> my_cool_method(repo_id="valid_repo_id")
valid_repo_id
>>> my_cool_method("other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.
>>> my_cool_method(repo_id="other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.validate_hf_hub_args
huggingface_hub.utils.validate_hf_hub_args
< source >( fn: ~CallableT )
يرفع
- HFValidationError — إذا كان الإدخال غير صالح.
تحقق من القيم المستلمة كحجة لأي طريقة عامة في huggingface_hub.
يهدف هذا المُزيّن إلى توحيد التحقق من صحة الحُجج المُعاد استخدامها في كل مكان. افتراضيًا، يتم اختبار جميع المُتحقِّقات المُعرَّفة.
المُتحقِّقون:
- validate_repo_id(): يجب أن يكون
repo_idإما"repo_name"أو"namespace/repo_name". يشير Namespace إلى اسم مستخدم أو منظمة. ~utils.smoothly_deprecate_legacy_arguments: تجاهلproxiesعند تنزيل الملفات (يجب ضبطها على مستوى النظام).
مثال:
>>> from huggingface_hub.utils import validate_hf_hub_args
>>> @validate_hf_hub_args
... def my_cool_method(repo_id: str):
... print(repo_id)
>>> my_cool_method(repo_id="valid_repo_id")
valid_repo_id
>>> my_cool_method("other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.
>>> my_cool_method(repo_id="other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.HFValidationError
استثناء عام يُرميه مُتحقّقات huggingface_hub.
يرث من ValueError.
مُتحقِّقات الحُجج
يمكن أيضًا استخدام أدوات التحقق بشكل فردي. فيما يلي قائمة بجميع الحجج التي يمكن التحقق منها.
repo_id
تحقق من أن repo_id صالح.
لا يُقصد بهذا أن يحلّ محلّ التحقق السليم الذي يتم إجراؤه على Hub، بل لتجنّب عدم الاتساق المحلي قدر الإمكان (مثال: تمرير repo_type في repo_id أمر ممنوع).
القواعد:
- بين 1 و96 حرفًا.
- إما “repo_name” أو “namespace/repo_name”
- [a-zA-Z0-9] أو ”-” أو ”_” أو ”.”
- يُمنع استخدام “—” و “..”
صالح: "foo"، "foo/bar"، "123"، "Foo-BAR_foo.bar123"
غير صالح: "datasets/foo/bar"، ".repo_id"، "foo--bar"، "foo.git"
مثال:
>>> from huggingface_hub.utils import validate_repo_id
>>> validate_repo_id(repo_id="valid_repo_id")
>>> validate_repo_id(repo_id="other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.تمت مناقشته في https://github.com/huggingface/huggingface_hub/issues/1008. في moon-landing (مستودع داخلي):
smoothly_deprecate_legacy_arguments
ليس مُتحقِّقًا بالمعنى الدقيق، لكنه نُفِّذ أيضًا.
huggingface_hub.utils._validators.smoothly_deprecate_legacy_arguments
< source >( fn_name: strkwargs: dict )
إلغاء استخدام الحجج القديمة بسلاسة في قاعدة أكواد huggingface_hub.
تتجاهل هذه الدالة بعض المعاملات غير المدعومة بعد من kwargs وتحذّر المستخدم من أنها مُتجاهلة. الهدف هو تجنّب كسر الكود الحالي مع توجيه المستخدم إلى الطريقة الجديدة للقيام بالأشياء.
قائمة بالحجج غير المدعومة:
proxies: لإعداد الوكلاء، يجب على المستخدم إما استخدام متغير البيئة HTTP_PROXY أو تكوينhttpx2.Clientيدويًا باستخدام الدالة set_client_factory().في huggingface_hub 0.x، كان
proxiesقاموسًا يُمرَّر مباشرة إلىrequests.request. منذ huggingface_hub 1.x، لم تعد الوكلاءproxiesلكل طلب مدعومة. وبشكل خاص، لم يعد من الممكن تكوين الوكلاء على أساس كل طلب على حدة. الحل هو تكوينها عالميًا باستخدام دالة set_client_factory() أو باستخدام متغير البيئة HTTP_PROXY.لمزيد من التفاصيل، راجع:
resume_download: تم إيقاف استخدامه دون بديل.huggingface_hubيستأنف التنزيلات دائمًا كلما كان ذلك ممكنًا.force_filename: تم إيقاف استخدامه دون بديل. يكون اسم الملف دائمًا مطابقًا لذلك الموجود على Hub.local_dir_use_symlinks: تم إيقاف استخدامه دون بديل. لم يعد تنزيل الملفات إلى مجلد محلي يستخدم الروابط الرمزية.