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

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

  • datetime:

    • strptime() calls using a format string containing %e (day of month) without a year. This has been deprecated since Python 3.15. (Contributed by Stan Ulbrych in gh-70647.)

  • 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.)

  • encodings:

  • profile:

    • The profile module is deprecated and will be removed in Python 3.17. Use profiling.tracing instead, which provides a compatible API. See PEP 799 for details. (Contributed by Pablo Galindo and László Kiss Kollár in gh-138122.)

  • webbrowser:

    • webbrowser.MacOSXOSAScript is deprecated in favour of webbrowser.MacOS. (gh-137586)

  • 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.)

  • tkinter:

    • The tkinter.Variable methods trace_variable(), trace() (an alias of trace_variable()), trace_vdelete() and trace_vinfo(), deprecated since Python 3.14, are scheduled for removal in Python 3.17. Use trace_add(), trace_remove() and trace_info() instead. (Contributed by Serhiy Storchaka in gh-120220.)

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

  • No longer accept a boolean value when a file descriptor is expected. (Contributed by Serhiy Storchaka in gh-82626.)

  • decimal:

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

  • Deprecations defined by PEP 829:

    • import lines in name.pth files are silently ignored.

    (Contributed by Barry Warsaw in gh-148641.)

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

  • ctypes:

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

  • hashlib:

    • In hash function constructors such as new() or the direct hash-named constructors such as md5() and sha256(), their optional initial data parameter could also be passed a keyword argument named data= or string= in various hashlib implementations.

      Support for the string keyword argument name is now deprecated and slated for removal in Python 3.19.

      Before Python 3.13, the string keyword parameter was not correctly supported depending on the backend implementation of hash functions. Prefer passing the initial data as a positional argument for maximum backwards compatibility.

  • http.cookies:

  • imaplib:

    • Altering IMAP4.file is now deprecated and slated for removal in Python 3.19. This property is now unused and changing its value does not automatically close the current file.

      Before Python 3.14, this property was used to implement the corresponding read() and readline() methods for IMAP4 but this is no longer the case since then.

  • tkinter:

Pending removal in Python 3.20

Pending removal in Python 3.21

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

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: use the codeobject.co_lines() method instead.

  • 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: Calling os.register_at_fork() in a multi-threaded process.

  • os.path: os.path.commonprefix() is deprecated, use os.path.commonpath() for path prefixes. The os.path.commonprefix() function is being deprecated due to having a misleading name and module. The function is not safe to use for path prefixes despite being included in a module about path manipulation, meaning it is easy to accidentally introduce path traversal vulnerabilities into Python programs by using this function.

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

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

  • 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() استفاده کنید.

Soft deprecations

There are no plans to remove soft deprecated APIs.

  • re.match() and re.Pattern.match() are now soft deprecated in favor of the new re.prefixmatch() and re.Pattern.prefixmatch() APIs, which have been added as alternate, more explicit names. These are intended to be used to alleviate confusion around what match means by following the Zen of Python's "Explicit is better than implicit" mantra. Most other language regular expression libraries use an API named match to mean what Python has always called search.

    We do not plan to remove the older match() name, as it has been used in code for over 30 years. Code supporting older versions of Python should continue to use match(), while new code should prefer prefixmatch(). See prefixmatch() vs. match().

    (Contributed by Gregory P. Smith in gh-86519 and Hugo van Kemenade in gh-148100.)

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

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

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

  • PEP 456 embedders support for the string hashing scheme definition.

Pending removal in Python 3.20

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

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