ruạṛ
a �u:j�+ � @ sF d Z ddlmZ ddlZddlZddlmZ G dd� d�Zdd� ZdS ) zmdistutils.extension Provides the Extension class, used to describe C/C++ extension modules in setup scripts.� )�annotationsN)�Iterablec @ sF e Zd ZdZdddddddddddddddddd �d d�Zdd � ZdS )� Extensiona� Just a collection of attributes that describes an extension module and everything needed to build it (hopefully in a portable way, but there are hooks that let you be as unportable as you need). Instance attributes: name : string the full name of the extension, including any packages -- ie. *not* a filename or pathname, but Python dotted name sources : Iterable[string | os.PathLike] 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. Can be any non-string iterable (list, tuple, set, etc.) containing strings or PathLike objects. 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. include_dirs : [string] list of directories to search for C/C++ header files (in Unix form for portability) define_macros : [(name : string, value : string|None)] list of macros to define; each macro is defined using a 2-tuple, where 'value' is either the string to define it to 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 : [string] list of macros to undefine explicitly library_dirs : [string] list of directories to search for C/C++ libraries at link time libraries : [string] list of library names (not filenames or paths) to link against runtime_library_dirs : [string] list of directories to search for C/C++ libraries at run time (for shared extensions, this is when the extension is loaded) extra_objects : [string] 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 : [string] 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 : [string] 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 : [string] 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 : [string] any extra options to pass to SWIG if a source file has the .i extension. depends : [string] list of files that the extension depends on language : string extension language (i.e. "c", "c++", "objc"). Will be detected from the source extensions if not provided. optional : boolean specifies that a build failure in the extension should not abort the build process, but simply not install the failing extension. N�strz Iterable[str | os.PathLike[str]]zlist[str] | Nonez#list[tuple[str, str | None]] | Nonez str | Nonezbool | None)�name�sources�include_dirs� define_macros�undef_macros�library_dirs� libraries�runtime_library_dirs� extra_objects�extra_compile_args�extra_link_args�export_symbols� swig_opts�depends�language�optionalc K s" t |t�std��t |t�r$td��ztttj|��| _W n tyT td��Y n0 || _|pbg | _ |plg | _ |pvg | _|p�g | _|p�g | _ |p�g | _| p�g | _| p�g | _|p�g | _|p�g | _| p�g | _|p�g | _|| _|| _t|�dk�rdd� |D �}d�t|��}d|� �}t�|� d S ) Nz'name' must be a stringzJ'sources' must be an iterable of strings or PathLike objects, not a stringz<'sources' must be an iterable of strings or PathLike objectsr c S s g | ]}t |��qS � )�repr)�.0�optionr r �R/opt/bart/bart_venv/lib/python3.9/site-packages/setuptools/_distutils/extension.py� <listcomp>� � z&Extension.__init__.<locals>.<listcomp>z, zUnknown Extension options: )� isinstancer � TypeError�list�map�os�fspathr r r r r r r r r r r r r r r r �len�join�sorted�warnings�warn)�selfr r r r r r r r r r r r r r r r �kw�options�msgr r r �__init__\ s@ �� zExtension.__init__c C s. d| j j� d| j j� d| j�dt| �d�d� S )N�<�.�(z) at z#x�>)� __class__� __module__�__qualname__r �id)r( r r r �__repr__� s zExtension.__repr__)NNNNNNNNNNNNNN)�__name__r2 r3 �__doc__r, r5 r r r r r s"