]> granicus.if.org Git - python/commitdiff
inspect: Fix BoundArguments.apply_defaults to handle empty arguments
authorYury Selivanov <yselivanov@sprymix.com>
Wed, 2 Mar 2016 16:07:47 +0000 (11:07 -0500)
committerYury Selivanov <yselivanov@sprymix.com>
Wed, 2 Mar 2016 16:07:47 +0000 (11:07 -0500)
Patch by Frederick Wagner (issue #26347)

Lib/inspect.py
Lib/test/test_inspect.py

index b65bec7adf677e0b7f0c4222f4f4ca7c1f851bb9..e830eb64cad8bd08fa996639c6fd5213ca0a4c4b 100644 (file)
@@ -2591,8 +2591,6 @@ class BoundArguments:
         empty dict.
         """
         arguments = self.arguments
-        if not arguments:
-            return
         new_arguments = []
         for name, param in self._signature.parameters.items():
             try:
index 69ddb514d61e58829fdd45c3e5c6c0319753469f..671e05a7b5b73b988c2d5ec85c44f711bc08ae49 100644 (file)
@@ -3324,6 +3324,13 @@ class TestBoundArguments(unittest.TestCase):
         ba.apply_defaults()
         self.assertEqual(list(ba.arguments.items()), [])
 
+        # Make sure a no-args binding still acquires proper defaults.
+        def foo(a='spam'): pass
+        sig = inspect.signature(foo)
+        ba = sig.bind()
+        ba.apply_defaults()
+        self.assertEqual(list(ba.arguments.items()), [('a', 'spam')])
+
 
 class TestSignaturePrivateHelpers(unittest.TestCase):
     def test_signature_get_bound_param(self):