Source code for schrodinger.utils.install_scripts
"""
Python code used in the Maestro Install Scripts panel. Note that the panel
itself is in C++.
Copyright Schrodinger, LLC. All rights reserved.
"""
import ast
[docs]def get_module_docstring(filepath, default=""):
"""
Get the docstring for a given module
:param filepath: The path where the module is located
:type filepath: str
:param default: The docstring to use if the file cannot be parsed or does
not contain a docstring.
:type default: str
:return: The docstring
:rtype: str
"""
try:
with open(filepath) as fh:
file_contents = fh.read()
except OSError:
return default
# Use AST parsing to get docstring to avoid having dependencies
# for import. Also, faster for builds.
try:
module_ast = ast.parse(file_contents)
docstring = ast.get_docstring(module_ast)
except (SyntaxError, ValueError):
# If we can't parse the file for any reason, return the default
# docstring
return default
if docstring:
return docstring
else:
return default