]> granicus.if.org Git - python/commitdiff
bpo-16355: Clarify when inspect.getcomments() returns None (#428) (#690)
authorBerker Peksag <berker.peksag@gmail.com>
Fri, 17 Mar 2017 11:59:16 +0000 (14:59 +0300)
committerGitHub <noreply@github.com>
Fri, 17 Mar 2017 11:59:16 +0000 (14:59 +0300)
Initial patch by Vajrasky Kok.

(cherry picked from commit 3f2155ffe683080f2a1b28408fa48d43ba92f943)

Doc/library/inspect.rst
Lib/test/test_inspect.py

index 3fa44a0c99891cd86a99506e735420fecfe8b2d6..4ff2187b45f8ebf7e0a3b2f2d3ab64f9eeeb29ae 100644 (file)
@@ -442,7 +442,9 @@ Retrieving source code
 
    Return in a single string any lines of comments immediately preceding the
    object's source code (for a class, function, or method), or at the top of the
-   Python source file (if the object is a module).
+   Python source file (if the object is a module).  If the object's source code
+   is unavailable, return ``None``.  This could happen if the object has been
+   defined in C or the interactive shell.
 
 
 .. function:: getfile(object)
index 88eaabe6765ab2b41ea1df98edca1ffa6cf535a3..cfea281c70db11a92dd700d7bc4d16190c11ba87 100644 (file)
@@ -387,6 +387,11 @@ class TestRetrievingSourceCode(GetSourceBase):
     def test_getcomments(self):
         self.assertEqual(inspect.getcomments(mod), '# line 1\n')
         self.assertEqual(inspect.getcomments(mod.StupidGit), '# line 20\n')
+        # If the object source file is not available, return None.
+        co = compile('x=1', '_non_existing_filename.py', 'exec')
+        self.assertIsNone(inspect.getcomments(co))
+        # If the object has been defined in C, return None.
+        self.assertIsNone(inspect.getcomments(list))
 
     def test_getmodule(self):
         # Check actual module