On Thu, Jan 16, 2014 at 01:08:47PM -0800, Ryan Smith-Roberts wrote: > socket.getservbyname(servicename[, protocolname]) > > This is not an inspectable signature, since pure Python does not support > bracketed arguments. To make it inspectable, we must give protocolname a > (valid Python) default value: > > socket.getservbyname(servicename, protocolname=None) > > Unfortunately, while useful and inspectable, this signature is not correct. > For a pure Python function, passing None for protocolname is the same as > omitting it. However, if you pass None to getservbyname(), it raises a > TypeError. So, we have these three options: > > 1) Don't give getservbyname() an inspectable signature. > 2) Lie to the user about the acceptability of None. > 3) Alter the semantics of getservbyname() to treat None as equivalent to > omitting protocolname. > > Obviously #2 is out. My question: is #3 ever acceptable? It's a real > change, as it breaks any code that relies on the TypeError exception.
The answer seems straightforward to me: it should be treated as any other change of behaviour, and judged on a case-by-case basis. I think the bug tracker is the right place to ask. Since it's not a bug fix, it may be able to be changed, but not lightly, and not in a bug-fix release. The fact that the motivation for the behaviour change is Argument Clinic should not change the decision, as far as I can see. Would a feature request "Allow None as default protocolname" be accepted? -- Steven _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com