cpython: 3b974b61e74d (original) (raw)

--- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -2239,14 +2239,7 @@ class Parameter: id(self), self) def hash(self):

-

-

def eq(self, other): return (issubclass(other.class, Parameter) and @@ -2541,41 +2534,23 @@ class Signature: return type(self)(parameters, return_annotation=return_annotation)

+

+

+ def hash(self):

def eq(self, other):

-

-

-

def ne(self, other): return not self.eq(other)

--- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -2535,43 +2535,67 @@ class TestSignatureObject(unittest.TestC def bar(a, *, b:int) -> float: pass self.assertEqual(inspect.signature(foo), inspect.signature(bar))

def bar(a, *, b:int) -> int: pass self.assertNotEqual(inspect.signature(foo), inspect.signature(bar))

def bar(a, *, b:int): pass self.assertNotEqual(inspect.signature(foo), inspect.signature(bar))

def bar(a, *, b:int=42) -> float: pass self.assertNotEqual(inspect.signature(foo), inspect.signature(bar))

def bar(a, *, c) -> float: pass self.assertNotEqual(inspect.signature(foo), inspect.signature(bar))

def bar(a, b:int) -> float: pass self.assertNotEqual(inspect.signature(foo), inspect.signature(bar))

def foo(, a, b, c): pass def bar(, c, b, a): pass self.assertEqual(inspect.signature(foo), inspect.signature(bar))

def foo(, a=1, b, c): pass def bar(, c, b, a=1): pass self.assertEqual(inspect.signature(foo), inspect.signature(bar))

def foo(pos, *, a=1, b, c): pass def bar(pos, *, c, b, a=1): pass self.assertEqual(inspect.signature(foo), inspect.signature(bar))

def foo(pos, *, a, b, c): pass def bar(pos, *, c, b, a=1): pass self.assertNotEqual(inspect.signature(foo), inspect.signature(bar))

def foo(pos, *args, a=42, b, c, **kwargs:int): pass def bar(pos, *args, c, b, a=42, **kwargs:int): pass self.assertEqual(inspect.signature(foo), inspect.signature(bar))

def test_signature_hashable(self): S = inspect.Signature

--- a/Misc/NEWS +++ b/Misc/NEWS @@ -814,6 +814,7 @@ Library keyword-only.