On 2012-06-14, at 12:03 PM, Ethan Furman wrote: > Yury Selivanov wrote: >> Hello, >> The new revision of PEP 362 has been posted: >> http://www.python.org/dev/peps/pep-0362/ >> It's possible to test Signatures for equality. Two signatures >> are equal when they have equal parameters and return annotations. > > Possibly a dumb question, but do the parameter names have to be the same to compare equal? If yes, is there an easy way to compare two signatures by annotations alone? Yes, parameter names have be the same. You need to write a custom compare function for Parameters, that will check that two have (or both don't) equal annotations and *kinds*, and then write a compare function for Signatures, that will test return_annotations and 'parameters' collections. All in all, shouldn't be longer than 10-15 lines of code. Another "solution" to the problem could be adding a new 'annotations' read-only dynamic property to the Signature, that would iterate through parameters and produce a single dict. But this solution has a serious flaw, as signature of: def foo(a:int, *, b:int) -> float is not equal to the signature of: def bar(a:int, b:int) -> float and certainly not the signature of: def spam(*args:int, **kwargs:int) -> float So the most correct approach here is the one I described in the first place. Thanks, - Yury
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