zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
U
G=®d)ã@s.dZddlZddlZGdd„dƒZdd„ZdS)zmdistutils.extension
 
Provides the Extension class, used to describe C/C++ extension
modules in setup scripts.éNc@s"eZdZdZddd„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 : [string]
        list of source filenames, 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.
      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.
    NcKst|tƒstdƒ‚t|tƒr.tdd„|Dƒƒs6tdƒ‚||_||_|pHg|_|pRg|_|p\g|_    |pfg|_
|ppg|_ |pzg|_ |    p„g|_ |
pŽg|_| p˜g|_| p¢g|_| p¬g|_|p¶g|_||_||_t|ƒdkrdd„|Dƒ}d t|ƒ¡}d    |}t |¡dS)
Nz'name' must be a stringcss|]}t|tƒVqdS)N)Ú
isinstanceÚstr)Ú.0Úv©rúVD:\z\workplace\VsCode\pyvenv\venv\Lib\site-packages\setuptools/_distutils/extension.pyÚ    <genexpr>jsz%Extension.__init__.<locals>.<genexpr>z#'sources' must be a list of stringsrcSsg|] }t|ƒ‘qSr)Úrepr)rÚoptionrrrÚ
<listcomp>€sz&Extension.__init__.<locals>.<listcomp>z, zUnknown Extension options: %s)rrÚAssertionErrorÚlistÚallÚ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ÚoptionalÚlenÚjoinÚsortedÚwarningsÚwarn)ÚselfrrrrrrrrrrrrrrrrÚkwÚoptionsÚmsgrrrÚ__init__Vs6
 
ÿ
 
 
 
 
 
 
 
 
 
 
 
zExtension.__init__cCsd|jj|jj|jt|ƒfS)Nz<%s.%s(%r) at %#x>)Ú    __class__Ú
__module__Ú __qualname__rÚid)r%rrrÚ__repr__…s üzExtension.__repr__)NNNNNNNNNNNNNN)Ú__name__r+r,Ú__doc__r)r.rrrrrs"Cò
/rcCs¸ddlm}m}m}ddlm}ddlm}||ƒ}||dddddd}z^g}|     ¡}    |    dkrdq¦| 
|    ¡rpqP|    d|    dkrŒd    kr nn|  d
|    ¡qP||    |ƒ}    ||    ƒ}
|
d} t | gƒ} d} |
dd…D]Â}| dk    rò|   |¡d} qÔtj |¡d}|dd …}|d d…}|d kr2| j  |¡qÔ|d krJ| j  |¡qÔ|dkr | d¡}|dkrz| j  |df¡n$| j  |d|…||d d…f¡qÔ|dkr¸| j  |¡qÔ|dkrÐ| j  |¡qÔ|dkrè| j  |¡qÔ|dkr| j  |¡qÔ|dkr| j  |¡qÔ|dkr*| j} qÔ|dkr<| j} qÔ|dkrN| j} qÔ|dkrr| j  |¡|s˜| j} qÔ|dkrŠ| j  |¡qÔ|  d|¡qÔ|  | ¡qPW5| ¡X|S)z3Reads a Setup file and returns Extension instances.r)Úparse_makefileÚexpand_makefile_varsÚ _variable_rx)ÚTextFile)Ú split_quotedé)Ústrip_commentsÚ skip_blanksÚ
join_linesÚ    lstrip_wsÚ    rstrip_wsNéÿÿÿÿÚ*z'%s' lines not handled yeté)z.cz.ccz.cppz.cxxz.c++z.mz.mmz-Iz-Dú=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz
-Xcompilerz-u)z.az.soz.slz.oz.dylibzunrecognized argument '%s')Údistutils.sysconfigr1r2r3Údistutils.text_filer4Údistutils.utilr5ÚcloseÚreadlineÚmatchr$rÚappendÚosÚpathÚsplitextrrÚfindrrrrrrrr)Úfilenamer1r2r3r4r5ÚvarsÚfileÚ
extensionsÚlineÚwordsÚmoduleÚextÚappend_next_wordÚwordÚsuffixÚswitchÚvalueÚequalsrrrÚread_setup_filesŽ  þ
 
 
 
 
 
 
 
 
ÿ
 
 
 
 
 
 
 
 
 
 
rY)r0rGr#rrYrrrrÚ<module>s z