<p>لم يعد jinja2 يدعم محمل pytest</p>

تم إنشاؤها على ١٠ مارس ٢٠٢٠  ·  18تعليقات  ·  مصدر: pallets/jinja

حاليًا ، تتوقع jinja2 إما _path المعرفة أو get_filenames: https://github.com/pallets/jinja/blob/master/src/jinja2/loaders.py#L262 -L281

لا تحدد أداة إعادة كتابة تأكيد pytest أيًا منهما (انظر https://github.com/pytest-dev/pytest/blob/master/src/_pytest/assertion/rewrite.py#L48) ، وعلى هذا النحو تشغيل مجموعة اختبار على كود المصدر التي لديها ما يلي العالمية:

from jinja2 import PackageLoader
LOADER = PackageLoader(__name__, "templates")

سوف تفشل مع:

    raise ValueError(
E   ValueError: The 'xxx' package was not installed in a way that PackageLoader understands.

لست متأكدًا مما إذا كان jinja2 هنا يحتاج إلى دعم المزيد من الطرق للحصول على جذر القالب ، أو أن أداة تحميل pytest تفتقد إلى بعض الطرق.

ال 18 كومينتر

يبدو أن هذا مرتبط بـ # 1148. لقد أسقطنا pkg_resources ونستخدم الآن pkgutil.get_loader() و loader.get_filename() . إذا كان مُحمل Pytest يوفر get_filename ، فيجب أن يعمل.

هنا حيث نكتشف الحزمة ، هناك أيضًا بعض الحلول في الكود المحيط لدعم عمليات استيراد zip ومساحة الأسماء: https://github.com/pallets/jinja/blob/45a76a3794a91e6d7077ced88c814a96cc87d5c2/src/jinja2/loaders.py#L262 -L267

لا يوفر مُحمل Pytest get_filename كما أشرت في

تضع jinja2 افتراضات حول اللوادر التي ليست جزءًا من PEP 451 - من المحتمل أن تستخدم السمة .origin لمواصفات الوحدة في pep451 + worlds

نحتاج إلى طريقة للحصول على المسار إلى الملفات داخل الحزمة من أجل تحميلها. يبدو أن هذه هي الطريقة للقيام بذلك باستخدام واجهات برمجة التطبيقات التي توفرها Python ، ولكن من المسلم به أن التوثيق حول كيفية القيام بأي شيء باستخدام واجهات برمجة التطبيقات تلك كان غير قابل للاختراق إلى حد كبير بالنسبة لي.

إذا كان لدى أي شخص اقتراح أفضل يلعب بشكل أفضل مع أدوات تحميل مختلفة بينما لا يزال يدعم الدلائل والكود البريدية ومساحات الأسماء ، فسأكون ممتنًا للمساعدة.

سي سيjaraco

إذا كنت تريد تحميل بعض الموارد ، فلا يجب أن تستخدم https://docs.python.org/3/library/importlib.html#module -importlib.resources؛ لا داعي لك لمعرفة مصدر الملف ، فقط ما يحتويه ، أليس كذلك؟

يتطلب resources أن تحتوي جميع أدلة "الموارد" على ملفات __init__.py ، والتي ستكون أكثر تعارضًا مع طريقة عمل Jinja. راجع https://gitlab.com/python-devs/importlib_resources/issues/58#note_232533726 للحصول على ملاحظاتي حول ذلك.

قد تكون هذه نقطة بداية مفيدة ، سأرى ما إذا كان بإمكاني إضفاء بعض التعليمات البرمجية إلى jinja2: https://github.com/asottile/aspy.refactor_imports/blob/519ee18ea75e0045b9b53644c627c6817b2a0748/aspy/refactor_imports/classify.py#L76 -L91

يبدو أن هذا قد يكون انسدادًا للتصميم الأولي لـ imporltib.resources ؛ اعتماده في شكله الحالي على الرغم من أنه يتسبب في تراجع ميزات jinja2 ؛ أي أن فجأة لم يعد يدعم pytest ؛ لذلك ربما يجب إضافة كود مرتبط asottile لملء الفراغ بينما يضيف المنبع الدعم.

يبدو أنه ربما حصل importlib_resources على تحديث يسمح بالأدلة الفرعية؟ https://importlib-resources.readthedocs.io/en/latest/changelog٪20 (الروابط) .html # v1-1-0 قد يكون جيدًا للتحقق أيضًا.

1169 هي محاولة لإصلاح ، ربما ما زلت بحاجة إلى سجل التغيير وما إلى ذلك ، لكن ربما يمكنك تجربته ومعرفة ما إذا كان يعمل على إصلاح مشكلتكgaborbernat

لا تهتم ، القضية لا تزال صالحة.

تم الإرجاع في # 1182 مرة أخرى إلى استخدام pkg_resources لـ 2.11.2 ، سيتم استخدام # 1169 لـ 3.0.

هل يمكننا الحصول على تحرير مع هذا من فضلك؟

في انتظار العلاقات العامة الأخرى.

هل يمكنك ربطه؟ 😄

أظن أنه رقم 1183 بالنظر إلى المعلم

تم إصدار 2.11.2 للتو والذي يعكس التغيير. 3.0 سيكون له السلوك الجديد مع الإصلاح.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات