Yury Selivanov wrote: > Hello, > > The new revision of PEP 362 has been posted: > http://www.python.org/dev/peps/pep-0362/ > > > Summary: > > 1. What was 'Signature.__deepcopy__' is now 'Signature.__copy__'. > __copy__ creates a shallow copy of Signature, shallow copying its > Parameters as well. > > 2. 'Signature.format()' was removed. I think we'll add something > to customize formatting later, in 3.4. Although, Signature still has > its __str__ method. > > 3. Built-in ('C') functions no longer have mutable '__signature__' > attribute, that patch was reverted. In the "Design Considerations" > section we stated clear that we don't support some callables. > > 4. Positions of keyword-only parameters now longer affect equality > testing of Signatures, i.e. 'foo(*, a, b)' is equal to 'foo(*, b, a)' > (Thanks to Jim Jewett for pointing that out) > > > The only question we have now is: when we do equality test between > Signatures, should we account for positional-only, var_positional > and var_keyword arguments names? So that: 'foo(*args)' will > be equal to 'bar(*arguments)', but not to 'spam(*coordinates:int)' > (Again, I think that's a Jim's idea) There are obviously cases where the names should be considered (such as foo(source, dest) and bar(dest, source) ) and cases where it should not be (spam(text, count) and eggs(txt, cnt) )... I think the default implementation should be strict (names are considered) as it is safer to have a false negative than a false positive. However, rather than force everyone who is willing to cope with the possible false positives from rewriting a Signature equality routine that ignores names, perhaps a method can be added to the class that does so? class Signature: . . . def equivalent(self, other): "compares two Signatures for equality (ignores parameter names)" . . . ~Ethan~
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4