-
-
Notifications
You must be signed in to change notification settings - Fork 30.4k
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
bpo-41818: Add termios.tcgetwinsize(), termios.tcsetwinsize(). Update docs. #23686
Conversation
Signed-off-by: Soumendra Ganguly <soumendraganguly@gmail.com>
Signed-off-by: Soumendra Ganguly <soumendraganguly@gmail.com>
@ethanfurman @aeros @gpshead @asvetlov Update1: These functions perform Update2: Added Update3: Added Update4: minor change: unlike |
Signed-off-by: Soumendra Ganguly <soumendraganguly@gmail.com>
@zoulasc Sir, can you please take a look at the changes that I made to termios.c? |
Signed-off-by: Soumendra Ganguly <soumendraganguly@gmail.com>
Signed-off-by: Soumendra Ganguly <soumendraganguly@gmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
@zoulasc Thank you for your time. |
…etwinsize(). Signed-off-by: Soumendra Ganguly <soumendraganguly@gmail.com>
This PR is stale because it has been open for 30 days with no activity. |
Still waiting for core review. |
This PR is stale because it has been open for 30 days with no activity. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd ordinarily also ask for unittest coverage... but this is termios which doesn't appear to have any and might be challenging to automate given its purpose is more for interactive things (?). if you have ideas on that front, feel free to add the beginnings of a Lib/test/test_termios.py - but none of us are going to block this PR on that happening. :)
some comments to address below. primarily: use two item tuples instead of lists.
Modules/termios.c
Outdated
} | ||
|
||
PyObject *v; | ||
if (!(v = PyList_New(2))) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When returning a constant number of values, it is more typical to use a tuple than a list. PyTuple_New and equivalent item setting calls. also update the docstrings in the comment above and on the next function to mention "two item tuple" and use ().
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@gpshead Sir, thank you for the review. I should mention that I used PyList_New()
instead of PyTuple_New()
because I wanted this function to resemble the other low level function termios.tcgetattr()
, which also returns a list. Do you confirm this change?
Added: I should have been more specific: termios.tcgetattr()
also returns a list of fixed length, and that cannot (?) be changed (backward compatibility?). I was wondering if termios.tcgetwinsize()
should also behave similarly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I ended up making the changes!
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 |
@gpshead Unfortunately, I am very busy with my PhD math research currently, and I apologize in advance for not having the time to write unittests for Fortunately, I had some time to spare during last December, when I had already written unittests for the @ambv please take a look at https://bugs.python.org/issue41818 if you have time :) |
…t two-item tuples instead of lists.
I have made the requested changes; please review again. Thank you for your patience. |
Thanks for making the requested changes! @gpshead: please review the changes made to this pull request. |
…quence, with overflow checking.
@@ -74,6 +74,22 @@ The module defines the following functions: | |||
output, :const:`TCIOFF` to suspend input, or :const:`TCION` to restart input. | |||
|
|||
|
|||
.. function:: tcgetwinsize(fd) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
one follow up PR as I forgot to fix it up here, these need versionadded tags. I'll take care of it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@gpshead Thank you for making the improvements!
Awesome to see this landed 👏🏻👏🏻👏🏻 |
This follows #23536. Also, see #23546, #23740.
tcgetwinsize()
andtcsetwinsize()
are expected to appear in IEEE Std 1003.1 ("POSIX.1") issue 8 [ the upcoming version of POSIX ] as declarations in<termios.h>
; see https://www.austingroupbugs.net/view.php?id=1151#c3856.NetBSD already has them (thanks to user "kre"):
Update: musl libc also has these functions.
Update2: The patches that I had submitted to add tcgetwinsize() and tcsetwinsize() to the FreeBSD libc have been merged. I am still working on getting them included in glibc.
When POSIX.1 issue 8 is released,
termios.tcgetwinsize()
,termios.tcsetwinsize()
can be updated to utilize the native versions.Post #23686, #23546, #23740 goals:
test_winsize()
to "Lib/test/test_pty.py";Signed-off-by: Soumendra Ganguly soumendraganguly@gmail.com
https://bugs.python.org/issue41818