Skip to content

PyConfig.lazy_imports is missing from the C API configuration docs #155273

Description

@fedonman

Documentation

lazy_imports is a PUBLIC entry in PYCONFIG_SPEC (Python/initconfig.c:127) and a
member of PyConfig (Include/cpython/initconfig.h:194), so it can be read at runtime.
It is the only one of the 25 PUBLIC options with no entry in
Doc/c-api/init_config.rst, neither in the Configuration Options list nor as a
c:member: of PyConfig.

import ctypes

api = ctypes.pythonapi
api.PyConfig_Get.restype = ctypes.py_object
api.PyConfig_Get.argtypes = [ctypes.c_char_p]

for name in (b"lazy_imports", b"inspect", b"int_max_str_digits"):
    print(name.decode(), "->", api.PyConfig_Get(name))
lazy_imports -> -1
inspect -> False
int_max_str_digits -> 4300

grep -c lazy_imports Doc/c-api/init_config.rst returns 0, while the other two names in
that output are both documented there.

PEP 810 (GH-142351) documented the feature elsewhere: -X lazy_imports,
PYTHON_LAZY_IMPORTS and the C functions in Doc/c-api/import.rst all landed with it.
init_config.rst looks like the file it missed.

The value is a tri-state and that is undocumented too. Python/initconfig.c:1092 says
lazy_imports can be -1 (default) or 1 (on), and that 0 is rejected later.

3.15 has the same gap: the spec entry is there and the doc entry is not.

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions