bundle.pybind.extension¶
extension.py
Provides: - make_extension: an async helper to turn a ModuleResolved into a setuptools.Extension - BuildExtension: custom build_ext command for per-extension temp dirs on non-Windows
and safe in-place copying on Windows.
Attributes¶
Classes¶
Describes a single extension module. |
Module Contents¶
- bundle.pybind.extension.log¶
- class bundle.pybind.extension.ExtensionSpec(name: str, sources: collections.abc.Iterable[setuptools._path.StrPath], *args, py_limited_api: bool = False, **kw)[source]¶
Bases:
setuptools.ExtensionDescribes a single extension module.
This means that all source files will be compiled into a single binary file
<module path>.<suffix>(with<module path>derived fromnameand<suffix>defined by one of the values inimportlib.machinery.EXTENSION_SUFFIXES).In the case
.pyxfiles are passed assources andCythonis not installed in the build environment,setuptoolsmay also try to look for the equivalent.cppor.cfiles.- Parameters:
name (str) – the full name of the extension, including any packages – ie. not a filename or pathname, but Python dotted name
sources (Iterable[str | os.PathLike[str]]) – iterable of source filenames, (except strings, which could be misinterpreted as a single filename), relative to the distribution root (where the setup script lives), in Unix form (slash-separated) for portability. Source files may be C, C++, SWIG (.i), platform-specific resource files, or whatever else is recognized by the “build_ext” command as source for a Python extension.
- Keyword Arguments:
include_dirs (list[str]) – list of directories to search for C/C++ header files (in Unix form for portability)
define_macros (list[tuple[str, str|None]]) – list of macros to define; each macro is defined using a 2-tuple: the first item corresponding to the name of the macro and the second item either a string with its value or None to define it without a particular value (equivalent of “#define FOO” in source or -DFOO on Unix C compiler command line)
undef_macros (list[str]) – list of macros to undefine explicitly
library_dirs (list[str]) – list of directories to search for C/C++ libraries at link time
libraries (list[str]) – list of library names (not filenames or paths) to link against
runtime_library_dirs (list[str]) – list of directories to search for C/C++ libraries at run time (for shared extensions, this is when the extension is loaded). Setting this will cause an exception during build on Windows platforms.
extra_objects (list[str]) – list of extra files to link with (eg. object files not implied by ‘sources’, static library that must be explicitly specified, binary resource files, etc.)
extra_compile_args (list[str]) – any extra platform- and compiler-specific information to use when compiling the source files in ‘sources’. For platforms and compilers where “command line” makes sense, this is typically a list of command-line arguments, but for other platforms it could be anything.
extra_link_args (list[str]) – any extra platform- and compiler-specific information to use when linking object files together to create the extension (or to create a new static Python interpreter). Similar interpretation as for ‘extra_compile_args’.
export_symbols (list[str]) – list of symbols to be exported from a shared extension. Not used on all platforms, and not generally necessary for Python extensions, which typically export exactly one symbol: “init” + extension_name.
swig_opts (list[str]) – any extra options to pass to SWIG if a source file has the .i extension.
depends (list[str]) – list of files that the extension depends on
language (str) – extension language (i.e. “c”, “c++”, “objc”). Will be detected from the source extensions if not provided.
optional (bool) – specifies that a build failure in the extension should not abort the build process, but simply not install the failing extension.
py_limited_api (bool) – opt-in flag for the usage of Python’s limited API.
- Raises:
setuptools.errors.PlatformError – if
runtime_library_dirsis specified on Windows. (since v63)
- classmethod from_module_resolved(module: bundle.pybind.resolved.project.ModuleResolved) ExtensionSpec[source]¶
- Async:
Create a setuptools.Extension from a resolved module.
- Parameters:
module – The ModuleResolved object containing spec + pkgconfig info.
- Returns:
Configured setuptools.Extension.