◐ Shell
clean mode source ↗

bpo-35537: Change subprocess to use posix_spawnp instead of posix_spawn by nanjekyejoannah · Pull Request #11917 · python/cpython

@nanjekyejoannah nanjekyejoannah changed the title change subprocess to use posix_spawnp instead of posix_spawn bpo-35537: Change subprocess to use posix_spawnp instead of posix_spawn

Feb 18, 2019

vstinner

Choose a reason for hiding this comment

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

The whole purpose of the change is to remove "and os.path.dirname(executable)" but you kept the test... Please remove it!

vstinner

Choose a reason for hiding this comment

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

You can enhance the entry using better formatting, and please avoid ".py" when you mention a module. User use "import subprocess", they don't access directly to subprocess.py. NEWS entries are for end users.

subprocess.py now uses posix_spawnp instead of posix_spawn.
The :mod:`subprocess` now uses :func:`os.posix_spawnp` instead of :func:`os.posix_spawn`.

vstinner

Choose a reason for hiding this comment

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

Ah, one last thing: your PR makes the following doc outdated:
https://docs.python.org/dev/whatsnew/3.8.html#optimizations

Please update: "The subprocess module can now use the os.posix_spawn() function...": it's now posix_spawnp. Moreover, "the executable path contains a directory." condition can now be removed. Well, update the doc :-)

@bedevere-bot

A Python core developer has requested some changes be made to your pull request before we can consider merging it. If you could please address their requests along with any other requests in other reviews from core developers that would be appreciated.

Once you have made the requested changes, please leave a comment on this pull request containing the phrase I have made the requested changes; please review again. I will then notify any core developers who have left a review that you're ready for them to take another look at this pull request.

@izbyshev

The previous attempt was reverted because of semantic differences between posix_spawnp and the existing behavior of subprocess. What has changed since that attempt? Is there any discussion I could follow to understand that?

vstinner


* *close_fds* is false;
* *preexec_fn*, *pass_fds*, *cwd* and *start_new_session* parameters
are not set;

Choose a reason for hiding this comment

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

typo: "are not set;" should become "are not set."

vstinner

and not start_new_session):
self._posix_spawn(args, executable, env, restore_signals,
self._posix_spawnp(args, executable, env, restore_signals,
p2cread, p2cwrite,

Choose a reason for hiding this comment

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

Please fix the indentation: p2cread must be indentation with args.

@vstinner

The previous attempt was reverted because of semantic differences between posix_spawnp and the existing behavior of subprocess. What has changed since that attempt? Is there any discussion I could follow to understand that?

Oh.... It was last month but I already completely forgot my own previous attempt :-(

@vstinner

@nanjekyejoannah: Sorry, but I forgot that I made exactly the same change last month but we had to revert it... See @izbyshev's comment:
"The previous attempt was reverted because of semantic differences between posix_spawnp and the existing behavior of subprocess. What has changed since that attempt? Is there any discussion I could follow to understand that?"

I close your PR.

@nanjekyejoannah