Dima Tisnek <dim...@gmail.com> added the comment:

Wow, very curious.

Yes, it's very much like `socket.TCP_KEEPCNT` in that respect, though, 
admittedly I don't have a very old Mac to test this right now. I think there 
were VMs for that maybe? 🤔



I wonder, what failure would be best for a naive code below, a NameError or 
OSError(errno=42)?

sock.setsockopt(socket.SOL_TCP, socket.TCP_NOTSENT_LOWAT, 42)

I guess the question is, at what level should the users catch exceptions...
After all, we don't delete this constant on Linux, and surely someone somewhere 
runs a very old kernel...



Oddly according to 
https://github.com/search?l=Python&q=%22socket.TCP_NOTSENT_LOWAT%22&type=Code 
none (in the OSS community) appears to be using this feature yet?

The search without `socket.` prefix yields a bunch of vendored mypy pyi's, but 
no actual code either.

And some even work around the constant being optional: 
https://github.com/python-trio/trio/blob/5b91edb2a860d024ab057e2be55fb34f311bf8ed/trio/socket.py#L170-L178



So, would this be a "not a regression" if none appears to use this constant yet?

Or do we take "don't break existing code" so seriously, that in this case too, 
we ought to assume that there's someone out there who has private code like 
below which we must not break?:

if code := getattr(socket, "TCP_NOTSENT_LOWAT", None):
    sock.setsockopt(socket.SOL_TCP, code, 42)



P.S.
If someone wants to take https://github.com/python/cpython/pull/19402 forward, 
by all means :)
Or I can try to hack up delete-at-runtime...

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue40060>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to