Skip to content
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

gh-85984: Remove legacy Lib/pty.py code. #92365

Merged
merged 7 commits into from
Feb 9, 2023
Merged

Conversation

8vasu
Copy link
Contributor

@8vasu 8vasu commented May 6, 2022

This follows #29658. This is one in a series of PRs aimed at cleaning-up, fixing bugs in, introducing new features in, and updating the code in "Lib/pty.py".

Signed-off-by: Soumendra Ganguly soumendraganguly@gmail.com

@8vasu 8vasu force-pushed the ptyforkltty branch 2 times, most recently from f09ac12 to fd37005 Compare May 6, 2022 05:05
@8vasu 8vasu changed the title gh-85984: Use os.login_tty() in pty.fork() fallback code. gh-85984: Remove legacy Lib/pty.py code. May 6, 2022
@8vasu
Copy link
Contributor Author

8vasu commented May 6, 2022

@gpshead Please take a look at this when you have time.

Two changes are being made.

  1. Remove code for pty.openpty() that uses the "old SGI method or the manual BSD open-a-pty code" that was marked as deprecated way back in year 2000 by Thomas Wouters; this includes pty.master_open(), pty._open_terminal(), and pty.slave_open(); these are not even in the test_pty.py anymore.

  2. Make the fallback code in pty.fork() use os.login_tty(). Please note that the replacement code in pty.fork() is different from the removed code in the following way.

  • The removed code is using the legacy System V method of open()-ing a tty device to make it a controlling terminal;
  • The replacement code is using os.login_tty(), which uses login_tty(3) if available, or else uses the TIOCSCTTY ioctl(), which even System V derivatives support now: https://marc.info/?l=glibc-help&m=164436296715753&w=3

@asvetlov @ethanfurman @aeros please take a look if you have time as well.

@gpshead gpshead self-assigned this Oct 7, 2022
@gpshead gpshead added the sprint label Oct 7, 2022
@8vasu
Copy link
Contributor Author

8vasu commented Oct 11, 2022

@gpshead thank you for the review.

@kumaraditya303 thank you for the review request.

I have many other improvements planned (and to a large extent ready) for this module for which I will make pull requests once this is merged (after December since I am busy applying for postdocs now).

@smontanaro
Copy link
Contributor

(I'm working my way through some PRs which have been approved and are labeled "awaiting merge", hence my seemingly bolt from the blue comment. Why? Read here.)

Maybe this didn't get addressed in the sprint? Is it ready to merge or does it need more work? If it needs more work, maybe the DO-NOT-MERGE label should be added.

@8vasu
Copy link
Contributor Author

8vasu commented Nov 23, 2022

@smontanaro Thank you for the review. This does not need more work unless @gpshead has any suggestions. This is a part of a series of PRs aimed at improving the pty library. A few have been merged before, and if this one gets merged, then I have more to follow, which I will work on right after December (I am still applying for postdocs).

@8vasu
Copy link
Contributor Author

8vasu commented Dec 29, 2022

@gpshead If/when you have time, please let me know if you need me to make any changes to this.

@gpshead gpshead marked this pull request as draft January 22, 2023 08:36
Copy link
Member

@gpshead gpshead left a comment

Choose a reason for hiding this comment

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

While master_open() and slave_open() are ancient and undocumented, even way back in 2.7, with "Deprecated" in the docstrings... they do appear in real code:

https://cs.github.com/?scopeName=All+repos&scope=&q=%2F%28pty.slave_open%7Cpty.master_open%29%2F+language%3Apython

So lets not delete those two in 3.12. Instead have them use warnings.warn(DeprecationWarning, "use os.openpty() instead").
We can remove their implementations in 3.14+.

@bedevere-bot
Copy link

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.

Signed-off-by: Soumendra Ganguly <soumendraganguly@gmail.com>
@8vasu
Copy link
Contributor Author

8vasu commented Feb 5, 2023

I have made the requested changes; please review again.

@bedevere-bot
Copy link

Thanks for making the requested changes!

@gpshead: please review the changes made to this pull request.

@gpshead gpshead marked this pull request as ready for review February 6, 2023 01:17
@gpshead gpshead added stdlib Python modules in the Lib dir 3.12 bugs and security fixes labels Feb 6, 2023
@8vasu
Copy link
Contributor Author

8vasu commented Feb 7, 2023

@gpshead Just realized that I had forgotten to add the deprecation warnings.
Thank you for adding them.

@gpshead
Copy link
Member

gpshead commented Feb 9, 2023

Refactored the implementation of pty.fork to use os.login_tty.

A DeprecationWarning is now raised by pty.master_open() and pty.slave_open(). They were
undocumented and deprecated long long ago in the docstring in favor of pty.openpty.

@gpshead gpshead merged commit 244d4cd into python:main Feb 9, 2023
carljm added a commit to carljm/cpython that referenced this pull request Feb 9, 2023
* main: (82 commits)
  pythongh-101670: typo fix in PyImport_ExtendInittab() (python#101723)
  pythonGH-99293: Document that `Py_TPFLAGS_VALID_VERSION_TAG` shouldn't be used. (#pythonGH-101736)
  no-issue: Add Dong-hee Na as the cjkcodecs codeowner (pythongh-101731)
  pythongh-101678: Merge math_1_to_whatever() and math_1() (python#101730)
  pythongh-101678: refactor the math module to use special functions from c11 (pythonGH-101679)
  pythongh-85984: Remove legacy Lib/pty.py code. (python#92365)
  pythongh-98831: Use opcode metadata for stack_effect() (python#101704)
  pythongh-101283: Version was just released, so should be changed in 3.11.3 (pythonGH-101719)
  pythongh-101283: Fix use of unbound variable (pythonGH-101712)
  pythongh-101283: Improved fallback logic for subprocess with shell=True on Windows (pythonGH-101286)
  pythongh-101277: Port more itertools static types to heap types (python#101304)
  pythongh-98831: Modernize CALL and family (python#101508)
  pythonGH-101696: invalidate type version tag in `_PyStaticType_Dealloc` (python#101697)
  pythongh-100221: Fix creating dirs in `make sharedinstall` (pythonGH-100329)
  pythongh-101670: typo fix in PyImport_AppendInittab() (pythonGH-101672)
  pythongh-101196: Make isdir/isfile/exists faster on Windows (pythonGH-101324)
  pythongh-101614: Don't treat python3_d.dll as a Python DLL when checking extension modules for incompatibility (pythonGH-101615)
  pythongh-100933: Improve `check_element` helper in `test_xml_etree` (python#100934)
  pythonGH-101578: Normalize the current exception (pythonGH-101607)
  pythongh-47937: Note that Popen attributes are read-only (python#93070)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3.12 bugs and security fixes sprint stdlib Python modules in the Lib dir
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants