...
This commit is contained in:
77
_archive/osis/doc.py
Normal file
77
_archive/osis/doc.py
Normal file
@@ -0,0 +1,77 @@
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
def should_document(file_name):
|
||||
"""
|
||||
Determine if a file should be documented based on its name.
|
||||
|
||||
Args:
|
||||
file_name (str): The name of the file.
|
||||
|
||||
Returns:
|
||||
bool: True if the file should be documented, False otherwise.
|
||||
"""
|
||||
lower_name = file_name.lower()
|
||||
return (
|
||||
file_name.endswith('.py') and
|
||||
'example' not in lower_name and
|
||||
'_generate' not in lower_name
|
||||
)
|
||||
|
||||
def generate_pydoc(start_dir):
|
||||
"""
|
||||
Generate pydoc documentation for Python modules in the given directory.
|
||||
|
||||
Args:
|
||||
start_dir (str): The directory to start searching for Python modules.
|
||||
|
||||
Returns:
|
||||
None
|
||||
"""
|
||||
# Create the docs directory
|
||||
docs_dir = os.path.join(start_dir, 'docs')
|
||||
os.makedirs(docs_dir, exist_ok=True)
|
||||
|
||||
# Walk through the directory
|
||||
for root, dirs, files in os.walk(start_dir):
|
||||
for file in files:
|
||||
if should_document(file):
|
||||
module_name = os.path.splitext(file)[0]
|
||||
module_path = os.path.relpath(os.path.join(root, file), start_dir)
|
||||
module_path = os.path.splitext(module_path)[0].replace(os.path.sep, '.')
|
||||
|
||||
# Skip the script itself
|
||||
if module_name == os.path.splitext(os.path.basename(__file__))[0]:
|
||||
continue
|
||||
|
||||
output_file = os.path.join(docs_dir, f'{module_name}.txt')
|
||||
|
||||
try:
|
||||
# Run pydoc and capture the output
|
||||
result = subprocess.run(
|
||||
[sys.executable, '-m', 'pydoc', module_path],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=True
|
||||
)
|
||||
|
||||
# Write the output to a file
|
||||
with open(output_file, 'w') as f:
|
||||
f.write(result.stdout)
|
||||
|
||||
print(f"Generated documentation for {module_path} in {output_file}")
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"Error generating documentation for {module_path}: {e}")
|
||||
except Exception as e:
|
||||
print(f"Unexpected error for {module_path}: {e}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Get the directory of the script
|
||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
# Generate documentation
|
||||
generate_pydoc(script_dir)
|
||||
|
||||
print(f"Documentation generation complete. Output is in {os.path.join(script_dir, 'docs')}")
|
Reference in New Issue
Block a user