Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
e59e2bab
Commit
e59e2bab
authored
21 years ago
by
Martin v. Löwis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Patch #711902: Cause pydoc to show data descriptor __doc__ strings.
parent
e86a59af
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
43 additions
and
2 deletions
+43
-2
Doc/lib/libinspect.tex
Doc/lib/libinspect.tex
+25
-0
Lib/inspect.py
Lib/inspect.py
+10
-0
Lib/pydoc.py
Lib/pydoc.py
+2
-2
Lib/test/test_inspect.py
Lib/test/test_inspect.py
+3
-0
Misc/NEWS
Misc/NEWS
+3
-0
No files found.
Doc/lib/libinspect.tex
View file @
e59e2bab
...
...
@@ -161,6 +161,31 @@ Note:
Return true if the object is a user-defined or built-in function or method.
\end{funcdesc}
\begin{funcdesc}
{
ismethoddescriptor
}{
object
}
Return true if the object is a method descriptor, but not if ismethod() or
isclass() or isfunction() are true.
This is new as of Python 2.2, and, for example, is true of int.
__
add
__
.
An object passing this test has a
__
get
__
attribute but not a
__
set
__
attribute, but beyond that the set of attributes varies.
__
name
__
is
usually sensible, and
__
doc
__
often is.
Methods implemented via descriptors that also pass one of the other
tests return false from the ismethoddescriptor() test, simply because
the other tests promise more -- you can, e.g., count on having the
im
_
func attribute (etc) when an object passes ismethod().
\end{funcdesc}
\begin{funcdesc}
{
isdatadescriptor
}{
object
}
Return true if the object is a data descriptor.
Data descriptors have both a
__
get
__
and a
__
set
__
attribute. Examples are
properties (defined in Python) and getsets and members (defined in C).
Typically, data descriptors will also have
__
name
__
and
__
doc
__
attributes
(properties, getsets, and members have both of these attributes), but this
is not guaranteed.
\end{funcdesc}
\subsection
{
Retrieving source code
\label
{
inspect-source
}}
...
...
This diff is collapsed.
Click to expand it.
Lib/inspect.py
View file @
e59e2bab
...
...
@@ -78,6 +78,16 @@ def ismethoddescriptor(object):
and
not
isfunction
(
object
)
and
not
isclass
(
object
))
def
isdatadescriptor
(
object
):
"""Return true if the object is a data descriptor.
Data descriptors have both a __get__ and a __set__ attribute. Examples are
properties (defined in Python) and getsets and members (defined in C).
Typically, data descriptors will also have __name__ and __doc__ attributes
(properties, getsets, and members have both of these attributes), but this
is not guaranteed."""
return
(
hasattr
(
object
,
"__set__"
)
and
hasattr
(
object
,
"__get__"
))
def
isfunction
(
object
):
"""Return true if the object is a user-defined function.
...
...
This diff is collapsed.
Click to expand it.
Lib/pydoc.py
View file @
e59e2bab
...
...
@@ -686,7 +686,7 @@ class HTMLDoc(Doc):
push
(
msg
)
for
name
,
kind
,
homecls
,
value
in
ok
:
base
=
self
.
docother
(
getattr
(
object
,
name
),
name
,
mod
)
if
callable
(
value
):
if
callable
(
value
)
or
inspect
.
isdatadescriptor
(
value
)
:
doc
=
getattr
(
value
,
"__doc__"
,
None
)
else
:
doc
=
None
...
...
@@ -1087,7 +1087,7 @@ class TextDoc(Doc):
hr
.
maybe
()
push
(
msg
)
for
name
,
kind
,
homecls
,
value
in
ok
:
if
callable
(
value
):
if
callable
(
value
)
or
inspect
.
isdatadescriptor
(
value
)
:
doc
=
getattr
(
value
,
"__doc__"
,
None
)
else
:
doc
=
None
...
...
This diff is collapsed.
Click to expand it.
Lib/test/test_inspect.py
View file @
e59e2bab
...
...
@@ -61,6 +61,7 @@ class FesteringGob(MalodorousPervert, ParrotDroppings):
# isbuiltin, isroutine, getmembers, getdoc, getfile, getmodule,
# getsourcefile, getcomments, getsource, getclasstree, getargspec,
# getargvalues, formatargspec, formatargvalues, currentframe, stack, trace
# isdatadescriptor
from
test.test_support
import
TestFailed
,
TESTFN
import
sys
,
imp
,
os
,
string
...
...
@@ -104,6 +105,8 @@ istest(inspect.ismethod, 'mod.StupidGit.abuse')
istest
(
inspect
.
ismethod
,
'git.argue'
)
istest
(
inspect
.
ismodule
,
'mod'
)
istest
(
inspect
.
istraceback
,
'tb'
)
istest
(
inspect
.
isdatadescriptor
,
'__builtins__.file.closed'
)
istest
(
inspect
.
isdatadescriptor
,
'__builtins__.file.softspace'
)
test
(
inspect
.
isroutine
(
mod
.
spam
),
'isroutine(mod.spam)'
)
test
(
inspect
.
isroutine
([].
count
),
'isroutine([].count)'
)
...
...
This diff is collapsed.
Click to expand it.
Misc/NEWS
View file @
e59e2bab
...
...
@@ -21,6 +21,9 @@ Extension modules
Library
-------
- inspect.is{method|data}descriptor was added, to allow pydoc display
__doc__ of data descriptors.
- Fixed socket speed loss caused by use of the _socketobject wrapper class
in socket.py.
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment