Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 0 additions & 79 deletions Doc/c-api/init.rst
Original file line number Diff line number Diff line change
Expand Up @@ -658,85 +658,6 @@ Process-wide parameters
``sys.version``.


.. c:function:: void PySys_SetArgvEx(int argc, wchar_t **argv, int updatepath)

.. index::
single: main()
single: Py_FatalError()
single: argv (in module sys)

This API is kept for backward compatibility: setting
:c:member:`PyConfig.argv`, :c:member:`PyConfig.parse_argv` and
:c:member:`PyConfig.safe_path` should be used instead, see :ref:`Python
Initialization Configuration <init-config>`.

Set :data:`sys.argv` based on *argc* and *argv*. These parameters are
similar to those passed to the program's :c:func:`main` function with the
difference that the first entry should refer to the script file to be
executed rather than the executable hosting the Python interpreter. If there
isn't a script that will be run, the first entry in *argv* can be an empty
string. If this function fails to initialize :data:`sys.argv`, a fatal
condition is signalled using :c:func:`Py_FatalError`.

If *updatepath* is zero, this is all the function does. If *updatepath*
is non-zero, the function also modifies :data:`sys.path` according to the
following algorithm:

- If the name of an existing script is passed in ``argv[0]``, the absolute
path of the directory where the script is located is prepended to
:data:`sys.path`.
- Otherwise (that is, if *argc* is ``0`` or ``argv[0]`` doesn't point
to an existing file name), an empty string is prepended to
:data:`sys.path`, which is the same as prepending the current working
directory (``"."``).

Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
:c:expr:`wchar_t*` string.

See also :c:member:`PyConfig.orig_argv` and :c:member:`PyConfig.argv`
members of the :ref:`Python Initialization Configuration <init-config>`.

.. note::
It is recommended that applications embedding the Python interpreter
for purposes other than executing a single script pass ``0`` as *updatepath*,
and update :data:`sys.path` themselves if desired.
See :cve:`2008-5983`.

On versions before 3.1.3, you can achieve the same effect by manually
popping the first :data:`sys.path` element after having called
:c:func:`PySys_SetArgv`, for example using::

PyRun_SimpleString("import sys; sys.path.pop(0)\n");

.. versionadded:: 3.1.3

.. XXX impl. doesn't seem consistent in allowing ``0``/``NULL`` for the params;
check w/ Guido.

.. deprecated-removed:: 3.11 3.15


.. c:function:: void PySys_SetArgv(int argc, wchar_t **argv)

This API is kept for backward compatibility: setting
:c:member:`PyConfig.argv` and :c:member:`PyConfig.parse_argv` should be used
instead, see :ref:`Python Initialization Configuration <init-config>`.

This function works like :c:func:`PySys_SetArgvEx` with *updatepath* set
to ``1`` unless the :program:`python` interpreter was started with the
:option:`-I`.

Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
:c:expr:`wchar_t*` string.

See also :c:member:`PyConfig.orig_argv` and :c:member:`PyConfig.argv`
members of the :ref:`Python Initialization Configuration <init-config>`.

.. versionchanged:: 3.4 The *updatepath* value depends on :option:`-I`.

.. deprecated-removed:: 3.11 3.15


.. c:function:: void Py_SetPythonHome(const wchar_t *home)

This API is kept for backward compatibility: setting
Expand Down
9 changes: 0 additions & 9 deletions Doc/data/refcounts.dat
Original file line number Diff line number Diff line change
Expand Up @@ -2242,15 +2242,6 @@ PySys_GetObject:const char*:name::

PySys_GetXOptions:PyObject*::0:

PySys_SetArgv:void:::
PySys_SetArgv:int:argc::
PySys_SetArgv:wchar_t**:argv::

PySys_SetArgvEx:void:::
PySys_SetArgvEx:int:argc::
PySys_SetArgvEx:wchar_t**:argv::
PySys_SetArgvEx:int:updatepath::

PySys_SetObject:int:::
PySys_SetObject:const char*:name::
PySys_SetObject:PyObject*:v:+1:
Expand Down
2 changes: 0 additions & 2 deletions Doc/data/stable_abi.dat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 0 additions & 3 deletions Include/sysmodule.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@ PyAPI_FUNC(int) PySys_GetOptionalAttrString(const char *, PyObject **);
PyAPI_FUNC(PyObject *) PySys_GetObject(const char *);
PyAPI_FUNC(int) PySys_SetObject(const char *, PyObject *);

Py_DEPRECATED(3.11) PyAPI_FUNC(void) PySys_SetArgv(int, wchar_t **);
Py_DEPRECATED(3.11) PyAPI_FUNC(void) PySys_SetArgvEx(int, wchar_t **, int);

PyAPI_FUNC(void) PySys_WriteStdout(const char *format, ...)
Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
PyAPI_FUNC(void) PySys_WriteStderr(const char *format, ...)
Expand Down
2 changes: 0 additions & 2 deletions Lib/test/test_stable_abi_ctypes.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions Misc/NEWS.d/3.13.0b1.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1625,8 +1625,8 @@ Restore functions removed in Python 3.13 alpha 1:

* :c:func:`Py_SetPythonHome`
* :c:func:`Py_SetProgramName`
* :c:func:`PySys_SetArgvEx`
* :c:func:`PySys_SetArgv`
* :c:func:`!PySys_SetArgvEx`
* :c:func:`!PySys_SetArgv`

Patch by Victor Stinner.

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Remove deprecated function :c:func:`!PySys_SetArgv` and
:c:func:`!PySys_SetArgvEx`. Set Set :c:member:`PyConfig.argv` instead.
4 changes: 0 additions & 4 deletions Misc/stable_abi.toml
Original file line number Diff line number Diff line change
Expand Up @@ -1335,10 +1335,6 @@
abi_only = true
[function.PySys_ResetWarnOptions]
added = '3.2'
[function.PySys_SetArgv]
added = '3.2'
[function.PySys_SetArgvEx]
added = '3.2'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We shouldn't remove the entry here, we should just mark them as abi_only = true.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which will preserve them in python3dll.c, which is the actual breaking change (or at least the one that can be easily seen in a source diff).

Arguably they should stay in the header files as well, possibly only when Py_LIMITED_API is set. The functionality can change if it needs to, though ideally wouldn't break every existing user.

[function.PySys_SetObject]
added = '3.2'
[function.PySys_SetPath]
Expand Down
2 changes: 0 additions & 2 deletions PC/python3dll.c

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions Python/sysmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -4235,7 +4235,8 @@ make_sys_argv(int argc, wchar_t * const * argv)
return list;
}

void
/* removed in 3.15, but kept for stable ABI compatibility */
PyAPI_FUNC(void)
PySys_SetArgvEx(int argc, wchar_t **argv, int updatepath)
{
wchar_t* empty_argv[1] = {L""};
Expand Down Expand Up @@ -4282,7 +4283,8 @@ PySys_SetArgvEx(int argc, wchar_t **argv, int updatepath)
}
}

void
/* removed in 3.15, but kept for stable ABI compatibility */
PyAPI_FUNC(void)
PySys_SetArgv(int argc, wchar_t **argv)
{
_Py_COMP_DIAG_PUSH
Expand Down
Loading