Skip to content

gh-133644: remove deprecated Python initialization getter functions #133661

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

picnixz
Copy link
Member

@picnixz picnixz commented May 8, 2025

For now, I'm only removing the getters. The setters will be removed in a separate PR (it's a bit tricky to remove them in this PR as PyConfig_Get requires the GIL to be held)


📚 Documentation preview 📚: https://cpython-previews--133661.org.readthedocs.build/

@vstinner
Copy link
Member

vstinner commented May 8, 2025

The 2 following projects refer to these removed getter functions:

  • Nuitka (2.6)
  • pythonnet (3.0.5)
Nuitka-2.6.tar.gz: Nuitka-2.6/nuitka/build/static_src/MainProgram.c: // NUITKA_PRINTF_TRACE("Final Py_GetPath is '%ls'.\n", Py_GetPath());
Nuitka-2.6.tar.gz: Nuitka-2.6/nuitka/build/static_src/MainProgram.c: Py_GetPath();

pythonnet-3.0.5.tar.gz: pythonnet-3.0.5/src/runtime/Native/CustomMarshaler.cs: /// Ex. Py_GetPythonHome
pythonnet-3.0.5.tar.gz: pythonnet-3.0.5/src/runtime/PythonEngine.cs: IntPtr p = Runtime.TryUsingDll(() => Runtime.Py_GetProgramName());
pythonnet-3.0.5.tar.gz: pythonnet-3.0.5/src/runtime/PythonEngine.cs: IntPtr p = Runtime.TryUsingDll(() => Runtime.Py_GetPythonHome());
pythonnet-3.0.5.tar.gz: pythonnet-3.0.5/src/runtime/PythonEngine.cs: IntPtr p = Runtime.TryUsingDll(() => Runtime.Py_GetPath());
pythonnet-3.0.5.tar.gz: pythonnet-3.0.5/src/runtime/Runtime.Delegates.cs: Py_GetProgramName = (delegate* unmanaged[Cdecl]<IntPtr>)GetFunctionByName(nameof(Py_GetProgramName), GetUnmanagedDll(_PythonDll));
pythonnet-3.0.5.tar.gz: pythonnet-3.0.5/src/runtime/Runtime.Delegates.cs: Py_GetPythonHome = (delegate* unmanaged[Cdecl]<IntPtr>)GetFunctionByName(nameof(Py_GetPythonHome), GetUnmanagedDll(_PythonDll));
pythonnet-3.0.5.tar.gz: pythonnet-3.0.5/src/runtime/Runtime.Delegates.cs: Py_GetPath = (delegate* unmanaged[Cdecl]<IntPtr>)GetFunctionByName(nameof(Py_GetPath), GetUnmanagedDll(_PythonDll));
pythonnet-3.0.5.tar.gz: pythonnet-3.0.5/src/runtime/Runtime.Delegates.cs: internal static delegate* unmanaged[Cdecl]<IntPtr> Py_GetProgramName { get; }
pythonnet-3.0.5.tar.gz: pythonnet-3.0.5/src/runtime/Runtime.Delegates.cs: internal static delegate* unmanaged[Cdecl]<IntPtr> Py_GetPythonHome { get; }
pythonnet-3.0.5.tar.gz: pythonnet-3.0.5/src/runtime/Runtime.Delegates.cs: internal static delegate* unmanaged[Cdecl]<IntPtr> Py_GetPath { get; }
pythonnet-3.0.5.tar.gz: pythonnet-3.0.5/src/runtime/Runtime.cs: internal static IntPtr Py_GetProgramName() => Delegates.Py_GetProgramName();
pythonnet-3.0.5.tar.gz: pythonnet-3.0.5/src/runtime/Runtime.cs: internal static IntPtr Py_GetPythonHome() => Delegates.Py_GetPythonHome();
pythonnet-3.0.5.tar.gz: pythonnet-3.0.5/src/runtime/Runtime.cs: internal static IntPtr Py_GetPath() => Delegates.Py_GetPath();

Copy link
Member

@vstinner vstinner left a comment

Choose a reason for hiding this comment

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

LGTM

@picnixz
Copy link
Member Author

picnixz commented May 9, 2025

The 2 following projects refer to these removed getter functions:

Should we actually open issues out there? (I can do it)

@vstinner
Copy link
Member

vstinner commented May 9, 2025

Should we actually open issues out there? (I can do it)

You can open an issue in the upstream projects:

Or even propose a fix :-)

@vstinner vstinner closed this May 9, 2025
@vstinner vstinner reopened this May 9, 2025
@vstinner
Copy link
Member

vstinner commented May 9, 2025

The CI was sick on this PR, so I tried to close/reopen the issue to repair the CI.

@picnixz
Copy link
Member Author

picnixz commented May 9, 2025

Or even propose a fix :-)

Let's do that :) (just finishing up my reviews elsewhere)

@vstinner vstinner enabled auto-merge (squash) May 9, 2025 11:33
@vstinner vstinner merged commit 5044e85 into python:main May 9, 2025
43 checks passed
@picnixz
Copy link
Member Author

picnixz commented May 9, 2025

Oh, for Nuitka the usage is fine (https://github.com/Nuitka/Nuitka/blob/4feeaf96be22b38993b7872f4e2df816fd206c27/nuitka/build/static_src/MainProgram.c#L194-L198):

#elif PYTHON_VERSION < 0x370
    PySys_SetPath(getBinaryDirectoryWideChars(true));
    Py_SetPath(getBinaryDirectoryWideChars(true));
    // NUITKA_PRINTF_TRACE("Final Py_GetPath is '%ls'.\n", Py_GetPath());
#endif

It's only being used in Python 3.7 and before (well, they are directly accessing the structure members otherwise...).

@picnixz picnixz deleted the cleanup/315/process-wide-parameters-133644 branch May 9, 2025 11:42
@vstinner
Copy link
Member

vstinner commented May 9, 2025

_NUITKA_EXPERIMENTAL_DUMP_PY_PATH_CONFIG can be updated to use PyConfig_Get() and PySys_FormatStdout().

@vstinner
Copy link
Member

vstinner commented May 9, 2025

Merged, thank you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants