def _get_valuedoc(value):
"""
If a C{ValueDoc} for the given value exists in the valuedoc
cache, then return it; otherwise, create a new C{ValueDoc},
add it to the cache, and return it. When possible, the new
C{ValueDoc}'s C{pyval}, C{repr}, and C{canonical_name}
attributes will be set appropriately.
"""
pyid = id(value)
val_doc = _valuedoc_cache.get(pyid)
if val_doc is None:
try: canonical_name = get_canonical_name(value, strict=True)
except DottedName.InvalidDottedName: canonical_name = UNKNOWN
val_doc = ValueDoc(pyval=value, canonical_name = canonical_name,
docs_extracted_by='introspecter')
_valuedoc_cache[pyid] = val_doc
# If it's a module, then do some preliminary introspection.
# Otherwise, check what the containing module is (used e.g.
# to decide what markup language should be used for docstrings)
if inspect.ismodule(value):
introspect_module(value, val_doc, preliminary=True)
val_doc.defining_module = val_doc
else:
module_name = str(get_containing_module(value))
module = sys.modules.get(module_name)
if module is not None and inspect.ismodule(module):
val_doc.defining_module = _get_valuedoc(module)
return val_doc
#////////////////////////////////////////////////////////////
# Module Introspection
#////////////////////////////////////////////////////////////
#: A list of module variables that should not be included in a
#: module's API documentation.
评论列表
文章目录