منسوخشدهها¶
در انتظار حذف در پایتون 3.16¶
سیستم ایمپورت:
تنظیم
__loader__روی یک ماژول بدون تنظیم__spec__.loaderمنسوخ شده است. در پایتون 3.16،__loader__دیگر توسط سیستم ایمپورت یا کتابخانه استاندارد تنظیم یا در نظر گرفته نخواهد شد.
-
کد قالب
'u'(wchar_t) در مستندات از پایتون 3.3 و در رانتایم از پایتون 3.13 منسوخ شده است. به جای آن، برای نویسههای یونیکد از کد قالب'w'(Py_UCS4) استفاده کنید.
-
asyncio.iscoroutinefunction()منسوخ شده است و در Python 3.16 حذف خواهد شد؛ بهجای آن ازinspect.iscoroutinefunction()استفاده کنید. (با مشارکت Jiahao Li و Kumar Aditya در gh-122875.)سامانه سیاستهای
asyncioمنسوخ شده است و در پایتون 3.16 حذف خواهد شد. بهویژه، کلاسها و توابع زیر منسوخ شدهاند:کاربران باید برای استفاده از پیادهسازی حلقه رویداد مطلوب، از
asyncio.run()یاasyncio.Runnerبه همراه loop_factory استفاده کنند.به عنوان مثال، برای استفاده از
asyncio.SelectorEventLoopدر ویندوز:import asyncio async def main(): ... asyncio.run(main(), loop_factory=asyncio.SelectorEventLoop)
(مشارکتشده توسط Kumar Aditya در gh-127949.)
-
وارونسازی بیتی روی نوعهای بولی، یعنی
~Trueیا~False، از پایتون 3.12 منسوخ شده است، زیرا نتایج غیرمنتظره و غیرشهودی تولید میکند (-2و-1). برای نقیض منطقی یک مقدار بولی، بهجای آن ازnot xاستفاده کنید. در موارد نادر که به وارونسازی بیتی عدد صحیح زیرین نیاز دارید، آن را بهطور صریح بهintتبدیل کنید (~int(x)).
-
فراخوانی پیادهسازی پایتونی
functools.reduce()با آرگومانهای کلیدواژهای function یا sequence از پایتون 3.14 منسوخ شده است.
-
پشتیبانی از هندلرهای سفارشی گزارشگیری با آرگومان strm منسوخ شده و برای حذف در پایتون 3.16 برنامهریزی شده است. به جای آن، هندلرها را با آرگومان stream تعریف کنید. (مشارکت Mariusz Felisiak در gh-115032.)
-
پسوندهای معتبر برای
mimetypes.MimeTypes.add_type()با '.' شروع میشوند یا خالی هستند. پسوندهای بدون نقطه منسوخ شدهاند و در پایتون 3.16 استثنایValueErrorایجاد خواهند کرد. (با مشارکت هوگو ون کمناده در gh-75223.)
-
استثنای
ExecErrorاز پایتون 3.14 منسوخ شده است. از پایتون 3.4 به بعد، هیچ تابعی درshutilاز آن استفاده نکرده است و اکنون نام مستعاری برایRuntimeErrorاست.
-
متد
Class.get_methodsاز پایتون 3.14 منسوخ شده است.
sys:تابع
_enablelegacywindowsfsencoding()از پایتون 3.13 منسوخ شده است. به جای آن از متغیر محیطیPYTHONLEGACYWINDOWSFSENCODINGاستفاده کنید.
-
تابع
sysconfig.expand_makefile_vars()از پایتون 3.14 منسوخ شده است. به جای آن، از آرگومانvarsدرsysconfig.get_paths()استفاده کنید.
-
ویژگی مستندنشده و استفادهنشدهی
TarFile.tarfileاز پایتون 3.13 منسوخ شده است.
در انتظار حذف در پایتون 3.17¶
-
فراخوانیهای
strptime()که از یک رشتهی قالب حاوی%e(روز ماه) بدون سال استفاده میکنند. این مورد از پایتون ۳.۱۵ منسوخ شده است. (مشارکتی از Stan Ulbrych در gh-70647.)
-
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.)
-
ارسال نامهای encoding غیر اسکی به
encodings.normalize_encoding()منسوخ شده است و طبق برنامه در پایتون ۳.۱۷ حذف خواهد شد. (مشارکتی از Stan Ulbrych در gh-136702.)
-
ماژول
profileمنسوخ شده است و در پایتون ۳.۱۷ حذف خواهد شد. بهجای آن ازprofiling.tracingاستفاده کنید که یک API سازگار فراهم میکند. برای جزئیات بیشتر PEP 799 را ببینید. (مشارکتی از Pablo Galindo و László Kiss Kollár در gh-138122.)
-
کلاس
webbrowser.MacOSXOSAScriptبه نفع کلاسwebbrowser.MacOSمنسوخ شده است. (gh-137586)
-
پیش از پایتون 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.Variableیعنیtrace_variable()،trace()(یک نام مستعار برایtrace_variable())،trace_vdelete()وtrace_vinfo()که از پایتون ۳.۱۴ منسوخ شدهاند، طبق برنامه در پایتون ۳.۱۷ حذف خواهند شد. بهجای آنها ازtrace_add()،trace_remove()وtrace_info()استفاده کنید. (مشارکتی از Serhiy Storchaka در gh-120220.)
در انتظار حذف در پایتون 3.18¶
در انتظار حذف در پایتون 3.19¶
-
در سازندههای توابع هش مانند
new()یا سازندههای مستقیم با نام هش مانندmd5()وsha256()، در پیادهسازیهای مختلفhashlibمیتوانید پارامتر دادهی اولیه اختیاری را به صورت آرگومان کلیدواژهای با نامdata=یاstring=نیز ارسال کنید.پشتیبانی از نام آرگومان کلیدواژهای
stringاکنون منسوخ شده است و در پایتون ۳.۱۹ حذف خواهد شد.پیش از نسخهی ۳.۱۳ پایتون، پارامتر کلیدواژهای
stringبسته به پیادهسازی بکاند توابع هش بهدرستی پشتیبانی نمیشد. برای حداکثر سازگاری با نسخههای قبلی، ترجیح دهید دادهی اولیه را به عنوان یک آرگومان جایگاهی ارسال کنید.
-
http.cookies.Morsel.js_output()منسوخ شده است و در نسخهی ۳.۱۹ پایتون حذف خواهد شد.http.cookies.BaseCookie.js_output()منسوخ شده است و در نسخهی ۳.۱۹ پایتون حذف خواهد شد.
-
تغییر دادن
IMAP4.fileاکنون منسوخ شده است و برای حذف در نسخهی ۳.۱۹ پایتون در نظر گرفته شده است. این ویژگی اکنون استفاده نمیشود و تغییر دادن مقدار آن پروندهی جاری را بهطور خودکار نمیبندد.پیش از نسخهی ۳.۱۴ پایتون، از این ویژگی برای پیادهسازی متدهای متناظر
read()وreadline()برایIMAP4استفاده میشد اما از آن زمان به بعد دیگر اینطور نیست.
در نسخهی ۳.۲۰ پایتون حذف خواهد شد¶
فراخوانی متد
__new__()ازstruct.Structبدون آرگومان format منسوخ شده است و در نسخهی ۳.۲۰ پایتون حذف خواهد شد. فراخوانی متد__init__()روی اشیاء مقداردهیشدهیStructمنسوخ شده است و در نسخهی ۳.۲۰ پایتون حذف خواهد شد.(مشارکتکرده توسط Sergey B Kirpichev و Serhiy Storchaka در gh-143715.)
ویژگیهای
__version__،versionوVERSIONدر این ماژولهای کتابخانهی استاندارد منسوخ شدهاند و در نسخهی ۳.۲۰ پایتون حذف خواهند شد. بهجای آنها ازsys.version_infoاستفاده کنید.ctypes.macholibdecimal(بهجای آن ازdecimal.SPEC_VERSIONاستفاده کنید)logging(__date__نیز منسوخ شده است)xml.sax.expatreader
(تهیهشده توسط Hugo van Kemenade و Stan Ulbrych در gh-76007.)
موارد منسوخ تعریفشده توسط PEP 829:
برای خطهای
importیافتشده در پروندههایname.pthاخطاردهی میشود.پروندههای
name.pthدیگر بهطور پیشفرض با کدگذاری locale رمزگشایی نمیشوند. آنها باید با کدگذاریutf-8-sigرمزگذاری شوند.
(تهیهشده توسط Barry Warsaw در gh-148641.)
ast:ایجاد نمونههایی از گرههای درخت نحوی انتزاعی (AST) (مانند
ast.ASTیاast.expr) منسوخ شده است و در نسخهی ۳.۲۰ پایتون خطایی را ایجاد خواهد کرد.
-
فراخوانی بررسیهای
isinstance()وissubclass()روی کلاسهای پروتکلی که صراحتاً باruntime_checkable()تزئین نشدهاند اما از یک کلاس پروتکل با قابلیت بررسی در زمان اجرا (runtime-checkable) ارثبری میکنند، منسوخ شده است. این کار در نسخهی ۳.۲۰ پایتون یک خطایTypeErrorایجاد خواهد کرد.(تهیهشده توسط Bartosz Sławecki در gh-132604.)
در انتظار حذف در نسخههای آینده¶
APIهای زیر در آینده حذف خواهند شد، اگرچه در حال حاضر تاریخی برای حذف آنها برنامهریزی نشده است.
-
تودرتو کردن گروههای آرگومان و تودرتو کردن گروههای انحصاری متقابل منسوخ شدهاند.
گذراندن آرگومان کلیدواژهای مستندنشدهی prefix_chars به
add_argument_group()اکنون منسوخ شده است.مبدل نوع
argparse.FileTypeمنسوخ شده است.
-
تولیدگرها: امضای
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()استفاده کنید.-
utcnow(): ازdatetime.datetime.now(tz=datetime.UTC)استفاده کنید.utcfromtimestamp(): ازdatetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC)استفاده کنید.
gettext: مقدار جمع باید یک عدد صحیح باشد.-
پارامتر debug_override در
cache_from_source()منسوخ شده است: به جای آن از پارامتر optimization استفاده کنید.
-
رابط تاپلیِ
EntryPoints.Noneضمنی در مقادیر بازگشتی.
logging: متدwarn()از پایتون 3.3 به بعد منسوخ شده است؛ به جای آن ازwarning()استفاده کنید.mailbox: استفاده از ورودی StringIO و حالت متنی منسوخ شده است؛ بهجای آن از BytesIO و حالت دودویی استفاده کنید.os: فراخوانیos.register_at_fork()در یک فرایند چندنخی.os.path: تابعos.path.commonprefix()منسوخ شده است؛ برای پیشوندهای مسیر ازos.path.commonpath()استفاده کنید. تابعos.path.commonprefix()به دلیل داشتن نام و ماژول گمراهکننده در حال منسوخ شدن است. این تابع با وجود اینکه در ماژولی مربوط به دستکاری مسیر قرار دارد، برای استفاده با پیشوندهای مسیر ایمن نیست؛ یعنی با استفاده از این تابع میتوان بهطور تصادفی آسیبپذیریهای پیمایش مسیر را وارد برنامههای پایتون کرد.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_SSLv3ssl.PROTOCOL_TLSssl.PROTOCOL_TLSv1ssl.PROTOCOL_TLSv1_1ssl.PROTOCOL_TLSv1_2ssl.TLSVersion.SSLv3ssl.TLSVersion.TLSv1ssl.TLSVersion.TLSv1_1
متدهای
threading:threading.Condition.notifyAll(): ازnotify_all()استفاده کنید.threading.Event.isSet(): ازis_set()استفاده کنید.threading.Thread.isDaemon()،threading.Thread.setDaemon(): از ویژگیthreading.Thread.daemonاستفاده کنید.threading.Thread.getName()،threading.Thread.setName(): از ویژگیthreading.Thread.nameاستفاده کنید.threading.currentThread(): ازthreading.current_thread()استفاده کنید.threading.activeCount(): ازthreading.active_count()استفاده کنید.
کلاس داخلی
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()استفاده کنید.
منسوخسازیهای نرم¶
هیچ برنامهای برای حذف مشتراکناپذیر APIها وجود ندارد.
re.match()وre.Pattern.match()اکنون به نفع APIهای جدیدre.prefixmatch()وre.Pattern.prefixmatch()که به عنوان نامهای جایگزین و صریحتر اضافه شدهاند، مشتراکناپذیر میشوند. این تغییرات به این منظور در نظر گرفته شدهاند تا با پیروی از شعار ذن پایتون یعنی «صریح بودن بهتر از ضمنی بودن است»، سردرگمیها پیرامون معنای match را کاهش دهند. بیشتر کتابخانههای عبارت باقاعده در زبانهای دیگر از APIای به نام match استفاده میکنند که منظور پایتون از آن چیزی است که همیشه search نامیده است.ما هیچ برنامهای برای حذف نام قدیمیتر
match()نداریم، زیرا این نام بیش از ۳۰ سال است که در کدها استفاده میشود. کدهایی که از نسخههای قدیمیتر پایتون پشتیبانی میکنند باید همچنان ازmatch()استفاده کنند، در حالی که کدهای جدید بایدprefixmatch()را ترجیح دهند. توابع prefixmatch() در برابر match() را ببینید.(مشارکتکرده توسط Gregory P. Smith در gh-86519 و Hugo van Kemenade در gh-148100.)
استفاده از کدهای نوع فرمت
'F'و'D'در ماژولstructاکنون به نفع فرمهای دوحرفی'Zf'و'Zd'مشتراکناپذیر شدهاند. (مشارکتکرده توسط Sergey B Kirpichev در gh-121249.)
منسوخشدههای C API¶
در انتظار حذف در پایتون 3.15¶
PyImport_ImportModuleNoBlock(): بهجای آن ازPyImport_ImportModule()استفاده کنید.PyWeakref_GetObject()وPyWeakref_GET_OBJECT(): بهجای آن ازPyWeakref_GetRef()استفاده کنید. پروژهی pythoncapi-compat project را میتوان برای دریافتPyWeakref_GetRef()روی پایتون ۳.۱۲ و نسخههای قدیمیتر استفاده کرد.PyUnicode_AsDecodedObject(): به جای آن ازPyCodec_Decode()استفاده کنید.PyUnicode_AsDecodedUnicode(): بهجای آن ازPyCodec_Decode()استفاده کنید؛ توجه داشته باشید که برخی کدکها (برای مثال، "base64") ممکن است نوعی غیر ازstrمانندbytesبرگردانند.PyUnicode_AsEncodedObject(): بهجای آن ازPyCodec_Encode()استفاده کنید.PyUnicode_AsEncodedUnicode(): بهجای آن ازPyCodec_Encode()استفاده کنید؛ توجه داشته باشید که برخی کدکها (برای مثال، "base64") ممکن است نوعی غیر ازbytes، مانندstrبرگردانند.توابع مقداردهی اولیه پایتون، منسوخشده در پایتون 3.13:
Py_GetPath(): بهجای آن ازPyConfig_Get("module_search_paths")(sys.path) استفاده کنید.Py_GetPrefix(): بهجای آن ازPyConfig_Get("base_prefix")(sys.base_prefix) استفاده کنید. اگر نیاز است محیطهای مجازی مدیریت شوند، ازPyConfig_Get("prefix")(sys.prefix) استفاده کنید.Py_GetExecPrefix(): بهجای آن ازPyConfig_Get("base_exec_prefix")(sys.base_exec_prefix) استفاده کنید. اگر نیاز است محیطهای مجازی مدیریت شوند، ازPyConfig_Get("exec_prefix")(sys.exec_prefix) استفاده کنید.Py_GetProgramFullPath(): بهجای آن ازPyConfig_Get("executable")(sys.executable) استفاده کنید.Py_GetProgramName(): بهجای آن ازPyConfig_Get("executable")(sys.executable) استفاده کنید.Py_GetPythonHome(): بهجای آن ازPyConfig_Get("home")یا متغیر محیطیPYTHONHOMEاستفاده کنید.
میتوان از پروژهی pythoncapi-compat برای به دست آوردن
PyConfig_Get()در پایتون 3.13 و نسخههای قدیمیتر استفاده کرد.توابعی برای پیکربندی راهاندازی پایتون، که در پایتون 3.11 منسوخ شدهاند:
PySys_SetArgvEx(): به جای آن،PyConfig.argvرا تنظیم کنید.PySys_SetArgv(): به جای آنPyConfig.argvرا تنظیم کنید.Py_SetProgramName(): بهجای آنPyConfig.program_nameرا تنظیم کنید.Py_SetPythonHome(): به جای آنPyConfig.homeرا تنظیم کنید.PySys_ResetWarnOptions(): بهجای آنsys.warnoptionsوwarnings.filtersرا پاک کنید.
بهجای آن، باید از API
Py_InitializeFromConfig()به همراهPyConfigاستفاده شود.متغیرهای پیکربندی سراسری:
Py_DebugFlag: بهجای آن ازPyConfig.parser_debugیاPyConfig_Get("parser_debug")استفاده کنید.Py_VerboseFlag: به جای آن ازPyConfig.verboseیاPyConfig_Get("verbose")استفاده کنید.Py_QuietFlag: بهجای آن ازPyConfig.quietیاPyConfig_Get("quiet")استفاده کنید.Py_InteractiveFlag: به جای آن ازPyConfig.interactiveیاPyConfig_Get("interactive")استفاده کنید.Py_InspectFlag: بهجای آن ازPyConfig.inspectیاPyConfig_Get("inspect")استفاده کنید.Py_OptimizeFlag: به جای آن ازPyConfig.optimization_levelیاPyConfig_Get("optimization_level")استفاده کنید.Py_NoSiteFlag: بهجای آن ازPyConfig.site_importیاPyConfig_Get("site_import")استفاده کنید.Py_BytesWarningFlag: بهجای آن ازPyConfig.bytes_warningیاPyConfig_Get("bytes_warning")استفاده کنید.Py_FrozenFlag: بهجای آن ازPyConfig.pathconfig_warningsیاPyConfig_Get("pathconfig_warnings")استفاده کنید.Py_IgnoreEnvironmentFlag: بهجای آن ازPyConfig.use_environmentیاPyConfig_Get("use_environment")استفاده کنید.Py_DontWriteBytecodeFlag: بهجای آن ازPyConfig.write_bytecodeیاPyConfig_Get("write_bytecode")استفاده کنید.Py_NoUserSiteDirectory: بهجای آن ازPyConfig.user_site_directoryیاPyConfig_Get("user_site_directory")استفاده کنید.Py_UnbufferedStdioFlag: به جای آن ازPyConfig.buffered_stdioیاPyConfig_Get("buffered_stdio")استفاده کنید.Py_HashRandomizationFlag: بهجای آن ازPyConfig.use_hash_seedوPyConfig.hash_seedیاPyConfig_Get("hash_seed")استفاده کنید.Py_IsolatedFlag: به جای آن ازPyConfig.isolatedیاPyConfig_Get("isolated")استفاده کنید.Py_LegacyWindowsFSEncodingFlag: به جای آن ازPyPreConfig.legacy_windows_fs_encodingیاPyConfig_Get("legacy_windows_fs_encoding")استفاده کنید.Py_LegacyWindowsStdioFlag: بهجای آن ازPyConfig.legacy_windows_stdioیاPyConfig_Get("legacy_windows_stdio")استفاده کنید.Py_FileSystemDefaultEncoding،Py_HasFileSystemDefaultEncoding: بهجای آنها ازPyConfig.filesystem_encodingیاPyConfig_Get("filesystem_encoding")استفاده کنید.Py_FileSystemDefaultEncodeErrors: به جای آن ازPyConfig.filesystem_errorsیاPyConfig_Get("filesystem_errors")استفاده کنید.Py_UTF8Mode: به جای آن ازPyPreConfig.utf8_modeیاPyConfig_Get("utf8_mode")استفاده کنید. (بهPy_PreInitialize()مراجعه کنید)
برای تنظیم این گزینهها باید از API
Py_InitializeFromConfig()به همراهPyConfigاستفاده شود. یا میتوان ازPyConfig_Get()برای دریافت این گزینهها در زمان اجرا استفاده کرد.
در انتظار حذف در پایتون 3.16¶
نسخهی بستهبندیشدهی
libmpdec.
در انتظار حذف در پایتون 3.18¶
توابع خصوصی زیر منسوخ شدهاند و حذف آنها در پایتون 3.18 برنامهریزی شده است:
_PyBytes_Join(): ازPyBytes_Join()استفاده کنید._PyDict_GetItemStringWithError(): ازPyDict_GetItemStringRef()استفاده کنید._PyDict_Pop(): ازPyDict_Pop()استفاده کنید._PyLong_Sign(): ازPyLong_GetSign()استفاده کنید._PyLong_FromDigits()و_PyLong_New(): ازPyLongWriter_Create()استفاده کنید._PyThreadState_UncheckedGet(): ازPyThreadState_GetUnchecked()استفاده کنید._PyUnicode_AsString(): ازPyUnicode_AsUTF8()استفاده کنید._PyUnicodeWriter_Init():_PyUnicodeWriter_Init(&writer)را باwriter = PyUnicodeWriter_Create(0)جایگزین کنید._PyUnicodeWriter_Finish(): عبارت_PyUnicodeWriter_Finish(&writer)را باPyUnicodeWriter_Finish(writer)جایگزین کنید._PyUnicodeWriter_Dealloc():_PyUnicodeWriter_Dealloc(&writer)را باPyUnicodeWriter_Discard(writer)جایگزین کنید._PyUnicodeWriter_WriteChar():_PyUnicodeWriter_WriteChar(&writer, ch)را باPyUnicodeWriter_WriteChar(writer, ch)جایگزین کنید._PyUnicodeWriter_WriteStr():_PyUnicodeWriter_WriteStr(&writer, str)را باPyUnicodeWriter_WriteStr(writer, str)جایگزین کنید._PyUnicodeWriter_WriteSubstring(): عبارت_PyUnicodeWriter_WriteSubstring(&writer, str, start, end)را باPyUnicodeWriter_WriteSubstring(writer, str, start, end)جایگزین کنید._PyUnicodeWriter_WriteASCIIString():_PyUnicodeWriter_WriteASCIIString(&writer, str)را باPyUnicodeWriter_WriteASCII(writer, str)جایگزین کنید._PyUnicodeWriter_WriteLatin1String():_PyUnicodeWriter_WriteLatin1String(&writer, str)را باPyUnicodeWriter_WriteUTF8(writer, str)جایگزین کنید._PyUnicodeWriter_Prepare(): (بدون جایگزین)._PyUnicodeWriter_PrepareKind(): (بدون جایگزین)._Py_HashPointer(): ازPy_HashPointer()استفاده کنید._Py_fopen_obj(): ازPy_fopen()استفاده کنید.
میتوان از پروژهی pythoncapi-compat برای به دست آوردن این توابع عمومی جدید در پایتون 3.13 و نسخههای قدیمیتر استفاده کرد. (مشارکتشده توسط Victor Stinner در gh-128863.)
در انتظار حذف در پایتون 3.19¶
پشتیبانی تعبیهکنندگان PEP 456 از تعریف طرحوارهی هش کردن رشته.
در نسخهی ۳.۲۰ پایتون حذف خواهد شد¶
توابع
_PyObject_CallMethodId()،_PyObject_GetAttrId()و_PyUnicode_FromId()از نسخهی 3.15 منسوخ شدهاند و در نسخهی 3.20 حذف خواهند شد. به جای آنها، ازPyUnicode_InternFromString()استفاده کنید و نتیجه را در وضعیت ماژول نهانگاه کنید، سپسPyObject_CallMethod()یاPyObject_GetAttr()را فراخوانی کنید. (مشارکتکرده توسط Victor Stinner در gh-141049.)فیلد
cvalدرPyComplexObject(gh-128813). برای تبدیل یک عدد مختلط پایتون به/از نمایش C آن یعنیPy_complex، ازPyComplex_AsCComplex()وPyComplex_FromCComplex()استفاده کنید.ماکروهای
Py_MATH_PIlوPy_MATH_El.
در انتظار حذف در نسخههای آینده¶
APIهای زیر منسوخ شدهاند و حذف خواهند شد، اگرچه در حال حاضر هیچ تاریخی برای حذف آنها تعیین نشده است.
Py_TPFLAGS_HAVE_FINALIZE: از پایتون 3.8 به بعد مورد نیاز نیست.PyErr_Fetch(): بهجای آن ازPyErr_GetRaisedException()استفاده کنید.PyErr_NormalizeException(): به جای آن ازPyErr_GetRaisedException()استفاده کنید.PyErr_Restore(): بهجای آن ازPyErr_SetRaisedException()استفاده کنید.PyModule_GetFilename(): بهجای آن ازPyModule_GetFilenameObject()استفاده کنید.PyOS_AfterFork(): بهجای آن ازPyOS_AfterFork_Child()استفاده کنید.PySlice_GetIndicesEx(): بهجای آن ازPySlice_Unpack()وPySlice_AdjustIndices()استفاده کنید.PyUnicode_READY(): از پایتون 3.12 به بعد نیازی به آن نیستPyErr_Display(): بهجای آن ازPyErr_DisplayException()استفاده کنید._PyErr_ChainExceptions(): بهجای آن از_PyErr_ChainExceptions1()استفاده کنید.عضو
PyBytesObject.ob_shash: به جای آنPyObject_Hash()را فراخوانی کنید.API ذخیرهسازی محلی نخ (TLS):
PyThread_create_key(): بهجای آن ازPyThread_tss_alloc()استفاده کنید.PyThread_delete_key(): بهجای آن ازPyThread_tss_free()استفاده کنید.PyThread_set_key_value(): بهجای آن ازPyThread_tss_set()استفاده کنید.PyThread_get_key_value(): بهجای آن ازPyThread_tss_get()استفاده کنید.PyThread_delete_key_value(): به جای آن ازPyThread_tss_delete()استفاده کنید.PyThread_ReInitTLS(): از پایتون 3.7 به بعد لازم نیست.