Doc/deprecations/c-api-pending-removal-in-3.15.rst
Pending removal in Python 3.15 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The :c:func:!PyImport_ImportModuleNoBlock:
Use :c:func:PyImport_ImportModule instead.
:c:func:!PyWeakref_GetObject and :c:func:!PyWeakref_GET_OBJECT:
Use :c:func:PyWeakref_GetRef instead. The pythoncapi-compat project <https://github.com/python/pythoncapi-compat/>__ can be used to get
:c:func:PyWeakref_GetRef on Python 3.12 and older.
:c:func:!PyUnicode_AsDecodedObject:
Use :c:func:PyCodec_Decode instead.
:c:func:!PyUnicode_AsDecodedUnicode:
Use :c:func:PyCodec_Decode instead; Note that some codecs (for example, "base64")
may return a type other than :class:str, such as :class:bytes.
:c:func:!PyUnicode_AsEncodedObject:
Use :c:func:PyCodec_Encode instead.
:c:func:!PyUnicode_AsEncodedUnicode:
Use :c:func:PyCodec_Encode instead; Note that some codecs (for example, "base64")
may return a type other than :class:bytes, such as :class:str.
Python initialization functions, deprecated in Python 3.13:
!Py_GetPath:
Use :c:func:PyConfig_Get("module_search_paths") <PyConfig_Get>
(:data:sys.path) instead.!Py_GetPrefix:
Use :c:func:PyConfig_Get("base_prefix") <PyConfig_Get>
(:data:sys.base_prefix) instead. Use :c:func:PyConfig_Get("prefix") <PyConfig_Get> (:data:sys.prefix) if :ref:virtual environments <venv-def> need to be handled.!Py_GetExecPrefix:
Use :c:func:PyConfig_Get("base_exec_prefix") <PyConfig_Get>
(:data:sys.base_exec_prefix) instead. Use
:c:func:PyConfig_Get("exec_prefix") <PyConfig_Get>
(:data:sys.exec_prefix) if :ref:virtual environments <venv-def> need to
be handled.!Py_GetProgramFullPath:
Use :c:func:PyConfig_Get("executable") <PyConfig_Get>
(:data:sys.executable) instead.!Py_GetProgramName:
Use :c:func:PyConfig_Get("executable") <PyConfig_Get>
(:data:sys.executable) instead.!Py_GetPythonHome:
Use :c:func:PyConfig_Get("home") <PyConfig_Get> or the
:envvar:PYTHONHOME environment variable instead.The pythoncapi-compat project <https://github.com/python/pythoncapi-compat/>__ can be used to get
:c:func:PyConfig_Get on Python 3.13 and older.
Functions to configure Python's initialization, deprecated in Python 3.11:
!PySys_SetArgvEx():
Set :c:member:PyConfig.argv instead.!PySys_SetArgv():
Set :c:member:PyConfig.argv instead.!Py_SetProgramName():
Set :c:member:PyConfig.program_name instead.!Py_SetPythonHome():
Set :c:member:PyConfig.home instead.!PySys_ResetWarnOptions:
Clear :data:sys.warnoptions and :data:!warnings.filters instead.The :c:func:Py_InitializeFromConfig API should be used with
:c:type:PyConfig instead.
Global configuration variables:
Py_DebugFlag:
Use :c:member:PyConfig.parser_debug or
:c:func:PyConfig_Get("parser_debug") <PyConfig_Get> instead.Py_VerboseFlag:
Use :c:member:PyConfig.verbose or
:c:func:PyConfig_Get("verbose") <PyConfig_Get> instead.Py_QuietFlag:
Use :c:member:PyConfig.quiet or
:c:func:PyConfig_Get("quiet") <PyConfig_Get> instead.Py_InteractiveFlag:
Use :c:member:PyConfig.interactive or
:c:func:PyConfig_Get("interactive") <PyConfig_Get> instead.Py_InspectFlag:
Use :c:member:PyConfig.inspect or
:c:func:PyConfig_Get("inspect") <PyConfig_Get> instead.Py_OptimizeFlag:
Use :c:member:PyConfig.optimization_level or
:c:func:PyConfig_Get("optimization_level") <PyConfig_Get> instead.Py_NoSiteFlag:
Use :c:member:PyConfig.site_import or
:c:func:PyConfig_Get("site_import") <PyConfig_Get> instead.Py_BytesWarningFlag:
Use :c:member:PyConfig.bytes_warning or
:c:func:PyConfig_Get("bytes_warning") <PyConfig_Get> instead.Py_FrozenFlag:
Use :c:member:PyConfig.pathconfig_warnings or
:c:func:PyConfig_Get("pathconfig_warnings") <PyConfig_Get> instead.Py_IgnoreEnvironmentFlag:
Use :c:member:PyConfig.use_environment or
:c:func:PyConfig_Get("use_environment") <PyConfig_Get> instead.Py_DontWriteBytecodeFlag:
Use :c:member:PyConfig.write_bytecode or
:c:func:PyConfig_Get("write_bytecode") <PyConfig_Get> instead.Py_NoUserSiteDirectory:
Use :c:member:PyConfig.user_site_directory or
:c:func:PyConfig_Get("user_site_directory") <PyConfig_Get> instead.Py_UnbufferedStdioFlag:
Use :c:member:PyConfig.buffered_stdio or
:c:func:PyConfig_Get("buffered_stdio") <PyConfig_Get> instead.Py_HashRandomizationFlag:
Use :c:member:PyConfig.use_hash_seed
and :c:member:PyConfig.hash_seed or
:c:func:PyConfig_Get("hash_seed") <PyConfig_Get> instead.Py_IsolatedFlag:
Use :c:member:PyConfig.isolated or
:c:func:PyConfig_Get("isolated") <PyConfig_Get> instead.Py_LegacyWindowsFSEncodingFlag:
Use :c:member:PyPreConfig.legacy_windows_fs_encoding or
:c:func:PyConfig_Get("legacy_windows_fs_encoding") <PyConfig_Get> instead.Py_LegacyWindowsStdioFlag:
Use :c:member:PyConfig.legacy_windows_stdio or
:c:func:PyConfig_Get("legacy_windows_stdio") <PyConfig_Get> instead.!Py_FileSystemDefaultEncoding, :c:var:!Py_HasFileSystemDefaultEncoding:
Use :c:member:PyConfig.filesystem_encoding or
:c:func:PyConfig_Get("filesystem_encoding") <PyConfig_Get> instead.!Py_FileSystemDefaultEncodeErrors:
Use :c:member:PyConfig.filesystem_errors or
:c:func:PyConfig_Get("filesystem_errors") <PyConfig_Get> instead.!Py_UTF8Mode:
Use :c:member:PyPreConfig.utf8_mode or
:c:func:PyConfig_Get("utf8_mode") <PyConfig_Get> instead.
(see :c:func:Py_PreInitialize)The :c:func:Py_InitializeFromConfig API should be used with
:c:type:PyConfig to set these options. Or :c:func:PyConfig_Get can be
used to get these options at runtime.