Merge branch 'python-modules' into docs-mw

scripts/lib was always a bit of an awkward place for Python libraries; give
them a proper home under tools/lib/python.  Put the modules from
tools/docs/lib there for good measure.

The second patch ties them into a single package namespace.  It would be
more aesthetically pleasing to add a kernel layer, so we could say:

  from kernel.kdoc import kdoc_parser

...and have the kernel-specific stuff clearly marked, but that means adding
an empty directory in the hierarchy, which isn't as pleasing.

There are some other "Python library" directories hidden in the kernel
tree; we may eventually want to encourage them to move as well.
This commit is contained in:
Jonathan Corbet
2025-11-18 09:26:11 -07:00
30 changed files with 48 additions and 39 deletions

View File

@@ -1,2 +1,2 @@
[MASTER]
init-hook='import sys; sys.path += ["scripts/lib/kdoc", "scripts/lib/abi", "tools/docs/lib"]'
init-hook='import sys; sys.path += ["tools/lib/python"]'

View File

@@ -115,6 +115,6 @@ dochelp:
@echo ' make PAPER={a4|letter} Specifies the paper size used for LaTeX/PDF output.'
@echo
@echo ' make FONTS_CONF_DENY_VF={path} sets a deny list to block variable Noto CJK fonts'
@echo ' for PDF build. See tools/docs/lib/latex_fonts.py for more details'
@echo ' for PDF build. See tools/lib/python/kdoc/latex_fonts.py for more details'
@echo
@echo ' Default location for the generated documents is Documentation/output'

View File

@@ -43,9 +43,9 @@ from sphinx.util.docutils import switch_source_input
from sphinx.util import logging
srctree = os.path.abspath(os.environ["srctree"])
sys.path.insert(0, os.path.join(srctree, "scripts/lib/abi"))
sys.path.insert(0, os.path.join(srctree, "tools/lib/python"))
from abi_parser import AbiParser
from abi.abi_parser import AbiParser
__version__ = "1.0"

View File

@@ -97,9 +97,9 @@ from docutils.parsers.rst.directives.body import CodeBlock, NumberLines
from sphinx.util import logging
srctree = os.path.abspath(os.environ["srctree"])
sys.path.insert(0, os.path.join(srctree, "tools/docs/lib"))
sys.path.insert(0, os.path.join(srctree, "tools/lib/python"))
from parse_data_structs import ParseDataStructs
from kdoc.parse_data_structs import ParseDataStructs
__version__ = "1.0"
logger = logging.getLogger(__name__)

View File

@@ -42,10 +42,10 @@ from sphinx.util import logging
from pprint import pformat
srctree = os.path.abspath(os.environ["srctree"])
sys.path.insert(0, os.path.join(srctree, "scripts/lib/kdoc"))
sys.path.insert(0, os.path.join(srctree, "tools/lib/python"))
from kdoc_files import KernelFiles
from kdoc_output import RestFormat
from kdoc.kdoc_files import KernelFiles
from kdoc.kdoc_output import RestFormat
__version__ = '1.0'
kfiles = None

View File

@@ -7412,8 +7412,7 @@ P: Documentation/doc-guide/maintainer-profile.rst
T: git git://git.lwn.net/linux.git docs-next
F: Documentation/
F: scripts/kernel-doc*
F: scripts/lib/abi/*
F: scripts/lib/kdoc/*
F: tools/lib/python/*
F: tools/docs/
F: tools/net/ynl/pyynl/lib/doc_generator.py
X: Documentation/ABI/

View File

@@ -13,7 +13,7 @@ See:
import os
import sys
LIB_DIR = "lib"
LIB_DIR = "../tools/lib/python"
SRC_DIR = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, os.path.join(SRC_DIR, LIB_DIR))

View File

@@ -111,7 +111,7 @@ import sys
# Import Python modules
LIB_DIR = "lib/kdoc"
LIB_DIR = "../tools/lib/python"
SRC_DIR = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, os.path.join(SRC_DIR, LIB_DIR))
@@ -292,8 +292,8 @@ def main():
logger.warning("Python 3.7 or later is required for correct results")
# Import kernel-doc libraries only after checking Python version
from kdoc_files import KernelFiles # pylint: disable=C0415
from kdoc_output import RestFormat, ManFormat # pylint: disable=C0415
from kdoc.kdoc_files import KernelFiles # pylint: disable=C0415
from kdoc.kdoc_output import RestFormat, ManFormat # pylint: disable=C0415
if args.man:
out_style = ManFormat(modulename=args.modulename)

View File

@@ -9,13 +9,17 @@
"""
Detect problematic Noto CJK variable fonts.
or more details, see lib/latex_fonts.py.
or more details, see .../tools/lib/python/kdoc/latex_fonts.py.
"""
import argparse
import sys
import os.path
from lib.latex_fonts import LatexFontChecker
src_dir = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, os.path.join(src_dir, '../lib/python'))
from kdoc.latex_fonts import LatexFontChecker
checker = LatexFontChecker()

View File

@@ -14,15 +14,15 @@ import sys
# Import Python modules
LIB_DIR = "../../scripts/lib/abi"
LIB_DIR = "../lib/python"
SRC_DIR = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, os.path.join(SRC_DIR, LIB_DIR))
from abi_parser import AbiParser # pylint: disable=C0413
from abi_regex import AbiRegex # pylint: disable=C0413
from helpers import ABI_DIR, DEBUG_HELP # pylint: disable=C0413
from system_symbols import SystemSymbols # pylint: disable=C0413
from abi.abi_parser import AbiParser # pylint: disable=C0413
from abi.abi_regex import AbiRegex # pylint: disable=C0413
from abi.helpers import ABI_DIR, DEBUG_HELP # pylint: disable=C0413
from abi.system_symbols import SystemSymbols # pylint: disable=C0413
# Command line classes

View File

@@ -24,10 +24,13 @@ The optional ``FILE_RULES`` contains a set of rules like:
replace define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ :c:type:`v4l2_event_motion_det`
"""
import argparse
import argparse, sys
import os.path
from lib.parse_data_structs import ParseDataStructs
from lib.enrich_formatter import EnrichFormatter
src_dir = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, os.path.join(src_dir, '../lib/python'))
from kdoc.parse_data_structs import ParseDataStructs
from kdoc.enrich_formatter import EnrichFormatter
def main():
"""Main function"""

View File

@@ -56,14 +56,14 @@ import sys
from concurrent import futures
from glob import glob
from lib.python_version import PythonVersion
from lib.latex_fonts import LatexFontChecker
LIB_DIR = "../../scripts/lib"
LIB_DIR = "../lib/python"
SRC_DIR = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, os.path.join(SRC_DIR, LIB_DIR))
from kdoc.python_version import PythonVersion
from kdoc.latex_fonts import LatexFontChecker
from jobserver import JobserverExec # pylint: disable=C0413,C0411,E0401
#

View File

@@ -32,8 +32,11 @@ import re
import subprocess
import sys
from glob import glob
import os.path
from lib.python_version import PythonVersion
src_dir = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, os.path.join(src_dir, '../lib/python'))
from kdoc.python_version import PythonVersion
RECOMMENDED_VERSION = PythonVersion("3.4.3").version
MIN_PYTHON_VERSION = PythonVersion("3.7").version

View File

View File

@@ -17,7 +17,7 @@ from random import randrange, seed
# Import Python modules
from helpers import AbiDebug, ABI_DIR
from abi.helpers import AbiDebug, ABI_DIR
class AbiParser:

View File

@@ -12,8 +12,8 @@ import sys
from pprint import pformat
from abi_parser import AbiParser
from helpers import AbiDebug
from abi.abi_parser import AbiParser
from abi.helpers import AbiDebug
class AbiRegex(AbiParser):
"""Extends AbiParser to search ABI nodes with regular expressions"""

View File

@@ -15,7 +15,7 @@ from concurrent import futures
from datetime import datetime
from random import shuffle
from helpers import AbiDebug
from abi.helpers import AbiDebug
class SystemSymbols:
"""Stores arguments for the class and initialize class vars"""

View File

View File

@@ -13,8 +13,8 @@ import logging
import os
import re
from kdoc_parser import KernelDoc
from kdoc_output import OutputFormat
from kdoc.kdoc_parser import KernelDoc
from kdoc.kdoc_output import OutputFormat
class GlobSourceFiles:

View File

@@ -19,8 +19,8 @@ import os
import re
from datetime import datetime
from kdoc_parser import KernelDoc, type_param
from kdoc_re import KernRe
from kdoc.kdoc_parser import KernelDoc, type_param
from kdoc.kdoc_re import KernRe
function_pointer = KernRe(r"([^\(]*\(\*)\s*\)\s*\(([^\)]*)\)", cache=False)

View File

@@ -16,8 +16,8 @@ import sys
import re
from pprint import pformat
from kdoc_re import NestedMatch, KernRe
from kdoc_item import KdocItem
from kdoc.kdoc_re import NestedMatch, KernRe
from kdoc.kdoc_item import KdocItem
#
# Regular expressions used to parse kernel-doc markups at KernelDoc class.