[Python-Dev] Proposal: explicitly disallow function/class mismatches in accelerator modules
Steven D'Aprano
steve at pearwood.info
Sat Jul 9 15:10:05 EDT 2016
On Sat, Jul 09, 2016 at 11:50:59PM +1000, Nick Coghlan wrote:
> I'm in the process of trying to disentangle
> http://bugs.python.org/issue27137 which points out some of the
> behavioural differences that arise when falling back from the original
> C implementation of functools.partial to the pure Python emulation
> that uses a closure.
[...]
> Given that the issues that arose in this case weren't at all obvious
> up front, what do folks think of the idea of updating PEP 399 to
> explicitly prohibit class/function mismatches between accelerator
> modules and their pure Python counterparts?
>
> The rationale for making such a change is that when it comes to true
> drop-in API compatibility, we have reasonable evidence that "they're
> both callables" isn't sufficient once the complexities of real world
> applications enter the picture.
Are these problems common enough, or serious enough, to justify a
blanket ban on mismatches (a "MUST NOT" rather than a "SHOULD NOT" in
RFC 2119 terminology)?
The other side of the issue is that requiring exact correspondence is
considerably more difficult and may be over-kill for some uses.
Hypothetically speaking, if I have an object that only supports pickling
by accident, and I replace it with one that doesn't support pickling,
shouldn't it be my decision whether that counts as a functional
regression (a bug) or a reliance on an undocumented and accidental
implementation detail?
--
Steve
More information about the Python-Dev
mailing list