منسوخ‌شده‌ها

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

  • سیستم ایمپورت:

    • تنظیم __cached__ روی یک ماژول در حالی که __spec__.cached تنظیم نشده باشد، منسوخ شده است. در پایتون 3.15، __cached__ دیگر توسط سیستم ایمپورت یا کتابخانه استاندارد تنظیم نخواهد شد یا در نظر گرفته نخواهد شد. (gh-97879)

    • تنظیم کردن __package__ روی یک ماژول بدون تنظیم __spec__.parent منسوخ شده است. در پایتون 3.15، __package__ دیگر توسط سیستم ایمپورت یا کتابخانه استاندارد تنظیم یا در نظر گرفته نخواهد شد. (gh-97879)

  • ctypes:

    • تابع مستند‌نشده ctypes.SetPointerType() از پایتون 3.13 منسوخ شده است.

  • http.server:

    • کلاس CGIHTTPRequestHandler که از رده خارج است و به‌ندرت استفاده می‌شود، از پایتون 3.13 منسوخ شده است. جایگزین مستقیمی برای آن وجود ندارد. برای برقراری رابط بین وب‌سرور و هندلر درخواست، هر چیزی بهتر از CGI است.

    • پرچم --cgi در رابط خط فرمان python -m http.server از پایتون 3.13 منسوخ شده است.

  • importlib:

    • متد load_module(): به‌جای آن از exec_module() استفاده کنید.

  • pathlib:

  • platform:

    • java_ver() از پایتون 3.13 منسوخ شده است. این تابع تنها برای پشتیبانی از Jython مفید است، API گیج‌کننده‌ای دارد و عمدتاً آزمایش‌نشده است.

  • sysconfig:

  • threading:

    • RLock() در پایتون 3.15 هیچ آرگومانی نخواهد گرفت. ارسال هر آرگومانی از پایتون 3.14 منسوخ شده است، زیرا نسخه‌ی پایتون اجازه‌ی هیچ آرگومانی را نمی‌دهد، اما نسخه‌ی C هر تعداد آرگومان جایگاهی یا کلیدواژه‌ای را می‌پذیرد و همه‌ی آرگومان‌ها را نادیده می‌گیرد.

  • types:

    • types.CodeType: دسترسی به co_lnotab طبق PEP 626 از نسخه‌ی 3.10 منسوخ شد و قرار بود در 3.12 حذف شود، اما تنها در 3.12 یک DeprecationWarning مناسب دریافت کرد. ممکن است در 3.15 حذف شود. (مشارکت‌شده توسط نیکیتا سوبولف در gh-101866.)

  • typing:

    • سینتکس مستندنشده‌ی آرگومان کلیدواژه‌ای برای ایجاد کلاس‌های NamedTuple (برای مثال، Point = NamedTuple("Point", x=int, y=int)) از پایتون 3.13 منسوخ شده است. به‌جای آن، از سینتکس مبتنی بر کلاس یا سینتکس تابعی استفاده کنید.

    • هنگام استفاده از سینتکس تابعی TypedDict، عدم ارسال مقدار به پارامتر fields (TD = TypedDict("TD")) یا ارسال None (TD = TypedDict("TD", None)) از پایتون 3.13 منسوخ شده است. برای ایجاد یک TypedDict بدون هیچ فیلدی، از class TD(TypedDict): pass یا TD = TypedDict("TD", {}) استفاده کنید.

    • تابع دکوراتور @typing.no_type_check_decorator از پایتون 3.13 منسوخ شده است. پس از هشت سال حضور در ماژول typing، هنوز توسط هیچ بررسی‌گر نوع مطرحی پشتیبانی نشده است.

  • wave:

  • zipimport:

    • load_module() از پایتون 3.10 منسوخ شده است. به جای آن از exec_module() استفاده کنید. (مشارکت‌شده توسط جیاهائو لی در gh-125746.)

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

  • سیستم ایمپورت:

    • تنظیم __loader__ روی یک ماژول بدون تنظیم __spec__.loader منسوخ شده است. در پایتون 3.16، __loader__ دیگر توسط سیستم ایمپورت یا کتابخانه استاندارد تنظیم یا در نظر گرفته نخواهد شد.

  • array:

    • کد قالب 'u' (wchar_t) در مستندات از پایتون 3.3 و در ران‌تایم از پایتون 3.13 منسوخ شده است. به جای آن، برای نویسه‌های یونیکد از کد قالب 'w' (Py_UCS4) استفاده کنید.

  • asyncio:

  • builtins:

    • وارون‌سازی بیتی روی نوع‌های بولی، یعنی ~True یا ~False، از پایتون 3.12 منسوخ شده است، زیرا نتایج غیرمنتظره و غیرشهودی تولید می‌کند (-2 و -1). برای نقیض منطقی یک مقدار بولی، به‌جای آن از not x استفاده کنید. در موارد نادر که به وارون‌سازی بیتی عدد صحیح زیرین نیاز دارید، آن را به‌طور صریح به int تبدیل کنید (~int(x)).

  • functools:

    • فراخوانی پیاده‌سازی پایتونی functools.reduce() با آرگومان‌های کلیدواژه‌ای function یا sequence از پایتون 3.14 منسوخ شده است.

  • logging:

    پشتیبانی از هندلرهای سفارشی گزارش‌گیری با آرگومان strm منسوخ شده و برای حذف در پایتون 3.16 برنامه‌ریزی شده است. به جای آن، هندلرها را با آرگومان stream تعریف کنید. (مشارکت Mariusz Felisiak در gh-115032.)

  • mimetypes:

    • پسوندهای معتبر برای mimetypes.MimeTypes.add_type() با '.' شروع می‌شوند یا خالی هستند. پسوندهای بدون نقطه منسوخ شده‌اند و در پایتون 3.16 استثنای ValueError ایجاد خواهند کرد. (با مشارکت هوگو ون کمناده در gh-75223.)

  • shutil:

    • استثنای ExecError از پایتون 3.14 منسوخ شده است. از پایتون 3.4 به بعد، هیچ تابعی در shutil از آن استفاده نکرده است و اکنون نام مستعاری برای RuntimeError است.

  • symtable:

  • sys:

  • sysconfig:

    • تابع sysconfig.expand_makefile_vars() از پایتون 3.14 منسوخ شده است. به جای آن، از آرگومان vars در sysconfig.get_paths() استفاده کنید.

  • tarfile:

    • ویژگی مستندنشده و استفاده‌نشده‌ی TarFile.tarfile از پایتون 3.13 منسوخ شده است.

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

  • collections.abc:

    • collections.abc.ByteString برای حذف در پایتون 3.17 برنامه‌ریزی شده است.

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

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

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

  • typing:

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

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

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

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

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

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

  • decimal:

    • مشخص‌کننده قالب 'N' در Decimal که غیراستاندارد و مستندسازی‌نشده است و فقط در پیاده‌سازی C ماژول decimal پشتیبانی می‌شود، از پایتون 3.13 منسوخ شده است. (مشارکت‌شده توسط Serhiy Storchaka در gh-89902.)

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

  • ctypes:

    • تغییر ضمنی به چیدمان ساختار سازگار با MSVC با تنظیم _pack_ اما بدون تنظیم _layout_ روی پلتفرم‌های غیر ویندوزی.

در انتظار حذف در نسخه‌های آینده

APIهای زیر در آینده حذف خواهند شد، اگرچه در حال حاضر تاریخی برای حذف آن‌ها برنامه‌ریزی نشده است.

  • argparse:

    • تودرتو کردن گروه‌های آرگومان و تودرتو کردن گروه‌های انحصاری متقابل منسوخ شده‌اند.

    • گذراندن آرگومان کلیدواژه‌ای مستندنشده‌ی prefix_chars به add_argument_group() اکنون منسوخ شده است.

    • مبدل نوع argparse.FileType منسوخ شده است.

  • builtins:

    • تولیدگرها: امضای throw(type, exc, tb) و athrow(type, exc, tb) منسوخ شده است؛ به جای آن از throw(exc) و athrow(exc) استفاده کنید — امضای تک‌آرگومانی.

    • در حال حاضر پایتون مقادیر لفظی عددی را می‌پذیرد که بلافاصله کلیدواژه‌ای پس از آن‌ها می‌آید، برای مثال 0in x، 1or x، 0if 1else 2. این اجازه می‌دهد عبارت‌های گیج‌کننده و مبهمی مانند [0x1for x in y] نوشته شوند (که می‌توان آن را به صورت [0x1 for x in y] یا [0x1f or x in y] تفسیر کرد). اگر مقدار لفظی عددی بلافاصله با یکی از کلیدواژه‌های and، else، for، if، in، is و or دنبال شود، یک هشدار سینتکس اکسپورت می‌شود. در یک نسخه‌ی آینده این مورد به یک خطای سینتکس تبدیل خواهد شد. (gh-87999)

    • پشتیبانی از بازگرداندن نوعی غیر از int توسط متد‌های __index__() و __int__(): این متدها ملزم خواهند شد که نمونه‌ای از یک زیرکلاس محضِ int را بازگردانند.

    • پشتیبانی از متد __float__() که زیرکلاس اکیدی از float را برمی‌گرداند: این متدها ملزم خواهند شد که نمونه‌ای از float را بازگردانند.

    • پشتیبانی از متد __complex__() که زیرکلاس اکیدِ complex را برمی‌گرداند: این متدها ملزم خواهند شد که نمونه‌ای از complex را برگردانند.

    • گذراندن یک عدد مختلط به‌عنوان آرگومان real یا imag در سازنده‌ی complex() اکنون منسوخ شده است؛ این عدد باید فقط به‌صورت یک آرگومان جایگاهی واحد ارسال شود. (مشارکت Serhiy Storchaka در gh-109218.)

  • calendar: ثابت‌های calendar.January و calendar.February منسوخ شده‌اند و با calendar.JANUARY و calendar.FEBRUARY جایگزین شده‌اند. (مشارکت‌شده توسط Prince Roshan در gh-103636.)

  • codecs: به‌جای codecs.open() از open() استفاده کنید. (gh-133038)

  • codeobject.co_lnotab: به جای آن از متد codeobject.co_lines() استفاده کنید.

  • datetime:

    • utcnow(): از datetime.datetime.now(tz=datetime.UTC) استفاده کنید.

    • utcfromtimestamp(): از datetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC) استفاده کنید.

  • gettext: مقدار جمع باید یک عدد صحیح باشد.

  • importlib:

    • پارامتر debug_override در cache_from_source() منسوخ شده است: به جای آن از پارامتر optimization استفاده کنید.

  • importlib.metadata:

    • رابط تاپلیِ EntryPoints.

    • None ضمنی در مقادیر بازگشتی.

  • logging: متد warn() از پایتون 3.3 به بعد منسوخ شده است؛ به جای آن از warning() استفاده کنید.

  • mailbox: استفاده از ورودی StringIO و حالت متنی منسوخ شده است؛ به‌جای آن از BytesIO و حالت دودویی استفاده کنید.

  • os: فراخوانی os.register_at_fork() در فرایند چندنخی.

  • pydoc.ErrorDuringImport: مقدار تاپل برای پارامتر exc_info منسوخ شده است؛ از یک نمونه استثنا استفاده کنید.

  • re: اکنون قواعد سخت‌گیرانه‌تری برای ارجاع‌های عددی گروه و نام گروه‌ها در عبارت‌های باقاعده اعمال می‌شود. اکنون فقط دنباله‌ای از ارقام اسکی به‌عنوان ارجاع عددی پذیرفته می‌شود. نام گروه در الگوهای بایتی و رشته‌های جایگزین اکنون فقط می‌تواند شامل حروف و ارقام اسکی و زیرخط باشد. (مشارکت‌شده توسط Serhiy Storchaka در gh-91760.)

  • ماژول‌های sre_compile، sre_constants و sre_parse.

  • shutil: پارامتر onerror در rmtree() در پایتون 3.12 منسوخ شده است؛ به‌جای آن از پارامتر onexc استفاده کنید.

  • گزینه‌ها و پروتکل‌های ssl:

    • ssl.SSLContext بدون آرگومان پروتکل، منسوخ شده است.

    • ssl.SSLContext: متدهای set_npn_protocols() و selected_npn_protocol() منسوخ شده‌اند: به‌جای آن‌ها از ALPN استفاده کنید.

    • گزینه‌های ssl.OP_NO_SSL*

    • گزینه‌های ssl.OP_NO_TLS*

    • ssl.PROTOCOL_SSLv3

    • ssl.PROTOCOL_TLS

    • ssl.PROTOCOL_TLSv1

    • ssl.PROTOCOL_TLSv1_1

    • ssl.PROTOCOL_TLSv1_2

    • ssl.TLSVersion.SSLv3

    • ssl.TLSVersion.TLSv1

    • ssl.TLSVersion.TLSv1_1

  • متدهای threading:

  • typing.Text (gh-92332).

  • کلاس داخلی typing._UnionGenericAlias دیگر برای پیاده‌سازی typing.Union استفاده نمی‌شود. برای حفظ سازگاری با کاربرانی که از این کلاس خصوصی استفاده می‌کنند، یک لایه‌ی سازگاری (shim) تا دست‌کم Python 3.17 ارائه خواهد شد. (مشارکت‌شده توسط Jelle Zijlstra در gh-105499.)

  • unittest.IsolatedAsyncioTestCase: برگرداندن مقداری غیر از None از یک مورد آزمون منسوخ شده است.

  • توابع منسوخ urllib.parse: به‌جای آن‌ها urlparse()

    • splitattr()

    • splithost()

    • splitnport()

    • splitpasswd()

    • splitport()

    • splitquery()

    • splittag()

    • splittype()

    • splituser()

    • splitvalue()

    • to_bytes()

  • wsgiref: SimpleHandler.stdout.write() نباید نوشتن جزئی (partial write) انجام دهد.

  • xml.etree.ElementTree: آزمودن مقدار درستی یک Element منسوخ شده است. در نسخه‌ای در آینده، همیشه True بازگردانده خواهد شد. به جای آن، آزمون‌های صریح len(elem) یا elem is not None را ترجیح دهید.

  • sys._clear_type_cache() منسوخ شده است: به جای آن از sys._clear_internal_caches() استفاده کنید.

منسوخ‌شده‌های C API

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

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

در انتظار حذف در نسخه‌های آینده

API‌های زیر منسوخ شده‌اند و حذف خواهند شد، اگرچه در حال حاضر هیچ تاریخی برای حذف آن‌ها تعیین نشده است.