# SPDX-License-Identifier: GPL-2.0-or-later # SCRIPT_HELP_MSG = """ API dump in RST files --------------------- Run this script from Blender's root path once you have compiled Blender blender --background --factory-startup -noaudio --python doc/python_api/sphinx_doc_gen.py This will generate python files in doc/python_api/sphinx-in/ providing ./blender is or links to the blender executable To choose sphinx-in directory: blender --background --factory-startup --python doc/python_api/sphinx_doc_gen.py -- --output ../python_api For quick builds: blender --background --factory-startup --python doc/python_api/sphinx_doc_gen.py -- --partial bmesh.* Sphinx: HTML generation ----------------------- After you have built doc/python_api/sphinx-in (see above), generate html docs by running: sphinx-build doc/python_api/sphinx-in doc/python_api/sphinx-out Sphinx: PDF generation ---------------------- After you have built doc/python_api/sphinx-in (see above), generate the pdf doc by running: sphinx-build -b latex doc/python_api/sphinx-in doc/python_api/sphinx-out cd doc/python_api/sphinx-out make """ try: import bpy # Blender module except ImportError: print("\nERROR: this script must run from inside Blender") print(SCRIPT_HELP_MSG) import sys sys.exit() import rna_info # Blender module def rna_info_BuildRNAInfo_cache(): if rna_info_BuildRNAInfo_cache.ret is None: rna_info_BuildRNAInfo_cache.ret = rna_info.BuildRNAInfo() return rna_info_BuildRNAInfo_cache.ret rna_info_BuildRNAInfo_cache.ret = None # --- end rna_info cache import os import sys import inspect import shutil import time import logging import warnings from textwrap import indent from platform import platform PLATFORM = platform().split('-')[0].lower() # 'linux', 'darwin', 'windows' SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__)) # For now, ignore add-ons and internal subclasses of 'bpy.types.PropertyGroup'. # # Besides disabling this line, the main change will be to add a # 'toctree' to 'write_rst_index' which contains the generated rst files. # This 'toctree' can be generated automatically. # # See: D6261 for reference. USE_ONLY_BUILTIN_RNA_TYPES = True def handle_args(): ''' Parse the args passed to Blender after "--", ignored by Blender ''' import argparse # When --help is given, print the usage text parser = argparse.ArgumentParser( formatter_class=argparse.RawTextHelpFormatter, usage=SCRIPT_HELP_MSG ) # optional arguments parser.add_argument("-p", "--partial", dest="partial", type=str, default="", help="Use a wildcard to only build specific module(s)\n" "Example: --partial bmesh*\n", required=False) parser.add_argument("-f", "--fullrebuild", dest="full_rebuild", default=False, action='store_true', help="Rewrite all rst files in sphinx-in/ " "(default=False)", required=False) parser.add_argument("-b", "--bpy", dest="bpy", default=False, action='store_true', help="Write the rst file of the bpy module " "(default=False)", required=False) parser.add_argument("-o", "--output", dest="output_dir", type=str, default=SCRIPT_DIR, help="Path of the API docs (default=