--- id: abi3info version: "2025.11.29" license: MIT license_treatment: permissive maintenance: active --- # abi3info — A library for abi3 and other CPython API information License: permissive · Maintenance: active · Downloads: 439.6K/mo ## What it is and what it does abi3info is a reference library that makes CPython's stable ABI (abi3) metadata programmatically accessible. It parses and exposes information about the limited API—the subset of CPython's C API that remains stable across minor versions—as a set of top-level dictionaries mapping symbol names to structured data models. Each dictionary (FUNCTIONS, MACROS, STRUCTS, TYPEDEFS, DATAS, FEATURE_MACROS) holds metadata about the corresponding API element, including when it was added, any preprocessor guards, and whether it's ABI-only. This is useful for developers working with CPython's C extension interface, particularly those building or analyzing tools that depend on the stable ABI. Rather than parsing CPython's source files directly, you can query abi3info to check whether a symbol exists, what Python version introduced it, and what conditions govern its availability. The library is actively maintained and draws its data from CPython's own stable_abi.toml metadata file. Use it for: - Check which stable ABI symbols are available in a target Python version before writing C extension code. - Validate that a C extension only uses symbols from the stable ABI to ensure forward compatibility. - Generate documentation or reports about the stable ABI surface and its evolution across CPython releases. - Analyze feature macros to understand which optional API features are available in a given build. - Inspect symbol metadata (added version, ifdef guards) to determine compatibility constraints for extension projects. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. abi3info exposes CPython's limited API and stable ABI (abi3) metadata as queryable Python dictionaries, letting you look up information about functions, macros, structs, typedefs, and data symbols available in the stable ABI. Yes, if you work with CPython's C API or stable ABI. It eliminates the need to manually parse CPython sources or maintain your own ABI metadata. No runtime dependencies, low friction, permissive license, and actively maintained. Not relevant for pure-Python projects. ## Install pip install abi3info uv add abi3info poetry add abi3info ## Installing abi3info Before you install: Low friction: pure Python wheel with no runtime dependencies. Actively maintained as of 2026-06-10, with production-stable status and consistent release cadence since 2022-09-19. License in practice: MIT license (permissive) with metadata derived from CPython sources under the PSF license. You can use this library freely in commercial or proprietary projects. Quickstart: pip install abi3info from abi3info import FUNCTIONS from abi3info.models import Symbol func = FUNCTIONS[Symbol("_Py_NegativeRefcount")] print(func.symbol, func.added, func.ifdef, func.abi_only) Requires Python 3.10 or later. Verify before relying: - Whether the stable_abi.toml metadata is updated with each CPython release or on a different schedule. - Performance characteristics when iterating over large numbers of symbols or querying frequently. ## Package facts - License: MIT (permissive) - Python support: supports_current - Install friction: low - Maintenance: active - Downloads: 439.6K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags cpython stable abi information, abi3 api metadata lookup, limited api introspection, cpython stable api reference, abi3 function symbol details, cpython-api, stable-abi, c-extension [View on SkillFed](https://skillfed.io/packages/abi3info) · [View on PyPI](https://pypi.org/project/abi3info/)