در انتظار حذف در پایتون 3.17

  • collections.abc:

    • collections.abc.ByteString قرار است در Python 3.17 حذف شود.

      برای آزمودن اینکه آیا obj پروتکل بافر را در زمان اجرا پیاده‌سازی می‌کند، از isinstance(obj, collections.abc.Buffer) استفاده کنید. برای استفاده در حاشیه‌نویسی‌های نوع، یا از Buffer استفاده کنید یا از یک اجتماع (union) که به‌طور صریح انواعی را که کد شما از آن‌ها پشتیبانی می‌کند مشخص می‌کند (مثلاً bytes | bytearray | memoryview).

      ByteString در اصل قرار بود کلاسی انتزاعی باشد که به‌عنوان ابرنوع (supertype) برای هر دو bytes و bytearray عمل کند. با این حال، از آنجا که این کلاس پایه انتزاعی هرگز هیچ متدی نداشت، دانستن اینکه شیئی نمونه‌ای از ByteString است، هرگز در واقع هیچ چیز مفیدی درباره‌ی آن شیء به شما نمی‌گفت. سایر نوع‌های بافر رایج مانند memoryview نیز هرگز به‌عنوان زیرنوع‌هایی از ByteString در نظر گرفته نمی‌شدند (نه در زمان اجرا و نه توسط بررسی‌گرهای نوع ایستا).

      برای جزئیات بیشتر به PEP 688 مراجعه کنید. (مشارکت‌شده توسط شانتانو جین در gh-91896.)

  • typing:

    • پیش از پایتون 3.14، یونیون‌های سبک قدیمی (old-style unions) با استفاده از کلاس خصوصی typing._UnionGenericAlias پیاده‌سازی می‌شدند. این کلاس دیگر برای پیاده‌سازی مورد نیاز نیست، اما برای سازگاری با نسخه‌های قبلی حفظ شده است و حذف آن برای پایتون 3.17 برنامه‌ریزی شده است. کاربران باید به‌جای تکیه بر جزئیات پیاده‌سازی خصوصی، از ابزارهای کمکی مستند درون‌نگری مانند typing.get_origin() و typing.get_args() استفاده کنند.

    • typing.ByteString که از پایتون 3.9 منسوخ شده است، برای حذف در پایتون 3.17 برنامه‌ریزی شده است.

      برای آزمودن اینکه آیا obj پروتکل بافر را در زمان اجرا پیاده‌سازی می‌کند، از isinstance(obj, collections.abc.Buffer) استفاده کنید. برای استفاده در حاشیه‌نویسی‌های نوع، یا از Buffer استفاده کنید یا از یک اجتماع (union) که به‌طور صریح انواعی را که کد شما از آن‌ها پشتیبانی می‌کند مشخص می‌کند (مثلاً bytes | bytearray | memoryview).

      ByteString در اصل قرار بود کلاسی انتزاعی باشد که به‌عنوان ابرنوع (supertype) برای هر دو bytes و bytearray عمل کند. با این حال، از آنجا که این کلاس پایه انتزاعی هرگز هیچ متدی نداشت، دانستن اینکه شیئی نمونه‌ای از ByteString است، هرگز در واقع هیچ چیز مفیدی درباره‌ی آن شیء به شما نمی‌گفت. سایر نوع‌های بافر رایج مانند memoryview نیز هرگز به‌عنوان زیرنوع‌هایی از ByteString در نظر گرفته نمی‌شدند (نه در زمان اجرا و نه توسط بررسی‌گرهای نوع ایستا).

      برای جزئیات بیشتر به PEP 688 مراجعه کنید. (مشارکت‌شده توسط شانتانو جین در gh-91896.)