zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
U
O±dÉ|ã@sRdZddlZddlZddlZddlZddlZddlmZddlm    Z    m
Z
ddl m Z ddl mZmZddlmZddlmZmZmZmZmZdd    lmZdd    lmZd
d „ZGd d „d ejƒZe dej ¡j!Z"e dej ¡j!Z#e dej ¡j!Z$e dej ¡j%Z&e dej ¡j%Z'dd„Z(dd„Z)dd„Z*e dej ¡j!Z+e dej ¡j!Z,dd„Z-dS)z Build swig and f2py sources.
éN)Ú    build_ext)Ú newer_groupÚnewer)Ú get_platform)ÚDistutilsErrorÚDistutilsSetupError)Úlog)Úfortran_ext_matchÚ
appendpathÚ    is_stringÚ is_sequenceÚget_cmd)Ú process_filec Cs„t d¡}t|dƒf}t|dƒP}|D]D}| |¡}|r`| | d| d¡|| d¡¡¡q&| |¡q&W5QRXW5QRXdS)zPSubstitute any occurrence of @foo@ by d['foo'] from source file into
    target.z@([a-zA-Z_]+)@ÚrÚwz@%s@éN)ÚreÚcompileÚopenÚsearchÚwriteÚreplaceÚgroup)ÚtargetÚsourceÚdÚvarÚfsÚftÚlÚm©r!úXd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\numpy/distutils/command/build_src.pyÚ
subst_varss
 
(r#c
@sÒeZdZdZdddddddd    d
d g
Zd d dgZgZdd„Zdd„Zdd„Z    dd„Z
dd„Z dd„Z dd„Z dd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zgfd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5S)6Ú    build_srcz1build sources from SWIG, F2PY files or a function)z
build-src=rzdirectory to "build" sources to)z
f2py-opts=Nz!list of f2py command line options)zswig=Nzpath to the SWIG executable)z
swig-opts=Nz!list of SWIG command line options)zswig-cppNzAmake SWIG create C++ files (default is autodetected from sources))z
f2pyflags=Nz3additional flags to f2py (use --f2py-opts= instead))z
swigflags=Nz3additional flags to swig (use --swig-opts= instead))ÚforceÚfz2forcibly build everything (ignore file timestamps))ÚinplaceÚiziignore build-lib and put compiled extensions into the source directory alongside your pure Python modules)ú verbose-cfgNzJchange logging level from WARN to INFO which will show all compiler outputr%r'r)cCsjd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_    d|_
d|_ d|_ d|_ d|_d|_d|_dS©N)Ú
extensionsÚpackageÚ
py_modulesÚpy_modules_dictr$Ú    build_libÚ
build_baser%r'Ú package_dirÚ    f2pyflagsÚ    f2py_optsÚ    swigflagsÚ    swig_optsÚswig_cppÚswigÚ verbose_cfg©Úselfr!r!r"Úinitialize_options?s"zbuild_src.initialize_optionscCsÈ| dddd¡|jdkr$|jj|_|jj|_|jjp8g|_|jjpFg|_|jjpTg|_|j    dkr”dj
t ƒft j dd…žŽ}tj |jd|¡|_    i|_|jrÀ|jr²t d¡n|j|_d|_|jdkrÒg|_nt |j¡|_|jr|jrút d    ¡n|j|_d|_|jdkrg|_nt |j¡|_| d
¡}|jdkrH|j|_|jdkr\|j|_d D]b}d | d d¡}t||dƒ}|r`t||ƒr¢t d|¡nt  d||f¡t!|||ƒq`dS)NÚbuild)r0r0)r/r/)r%r%z    .{}-{}.{}éÚsrcz0ignoring --f2pyflags as --f2py-opts already usedz0ignoring --swigflags as --swig-opts already usedr)r7Zswig_optz--Ú_ú-z-both build_src and build_ext define %s optionz+using "%s=%s" option from build_ext command)"Úset_undefined_optionsr,Ú distributionÚ ext_packageÚ ext_modulesr+Ú    librariesr-Ú
data_filesr$ÚformatrÚsysÚ version_infoÚosÚpathÚjoinr0r.r2r3rÚwarnÚshlexÚsplitr4r5Úget_finalized_commandr'r6rÚgetattrÚinfoÚsetattr)r:Úplat_specifierrÚcÚoÚvr!r!r"Úfinalize_optionsRsXý
 
 
 
 
 
    zbuild_src.finalize_optionscCs&t d¡|js|jsdS| ¡dS)Nr$)rrRr+rEÚ build_sourcesr9r!r!r"ÚrunŒs
 z build_src.runcCsn|jr| d¡j|_| ¡|jD]}|j|Žq"|jrZ| |j¡|jD]}| |¡qJ|     ¡| 
¡dS)NÚbuild_py) r'rPÚget_package_dirÚbuild_py_modules_sourcesrEÚbuild_library_sourcesr+Zcheck_extensions_listÚbuild_extension_sourcesÚbuild_data_files_sourcesÚbuild_npy_pkg_config)r:Z libname_infoÚextr!r!r"rY’s
ÿ
 
 zbuild_src.build_sourcesc CsJ|js
dSt d¡ddlm}g}|jD]
}t|tƒrF| |¡q*t|tƒr*|\}}|j    rz| 
d  |  t j¡¡¡}nt j  |j|¡}dd„|Dƒ}dd„|Dƒ}|D]b}|jjdkrÄ||ƒ}    n|ƒ}    |    dk    rªt|    tƒrè| |    ¡qªt|    tƒr| |    ¡qªtt|    ƒƒ‚qª|||fƒ}
| ||
f¡q*tt|ƒƒ‚q*||jdd…<dS)    Nzbuilding data_files sourcesr)Úget_data_filesÚ.cSsg|]}t|dƒr|‘qS©Ú__call__©Úhasattr©Ú.0r&r!r!r"Ú
<listcomp>µs
z6build_src.build_data_files_sources.<locals>.<listcomp>cSsg|]}t|dƒs|‘qSrergrir!r!r"rk¶s
r)rFrrRÚnumpy.distutils.misc_utilrcÚ
isinstanceÚstrÚappendÚtupler'r\rLrOrJÚseprKr$Ú__code__Ú co_argcountÚlistÚextendÚ    TypeErrorÚrepr) r:rcZnew_data_filesÚdatarÚfilesÚ    build_dirÚfuncsr&ÚsÚ    filenamesr!r!r"r`¦s:
 
 
 
    z"build_src.build_data_files_sourcesc Csº|\}}}tj |¡}| ¡D]\}}|||<q|jdkrJtj ||¡}    ntj |j||¡}    tj tj |¡d¡}
tj |    |
¡} tj     |    ¡s˜t 
|    ¡t | ||ƒtj ||¡} | | fS)Nrr) rJrKÚdirnameÚitemsr'rLr$ÚbasenameÚsplitextÚexistsÚmakedirsr#) r:rRÚgdÚtemplateÚ install_dirZ
subst_dictZ template_dirÚkrWZ generated_dirÚ    generatedZgenerated_pathZfull_install_dirr!r!r"Ú_build_npy_pkg_configÊs 
 
 
 ÿ 
 zbuild_src._build_npy_pkg_configc CsÌt d¡t tdƒ¡}|jdks*| ¡d}|jdkrBd}d}nt|dƒrV|j}d}|rÈ|j    j
  ¡D]`\}}|j    j |}t j t j |¡|¡}d|i}|D](}    | |    |¡\}
} |j    j |
| gf¡qœqfdS)    Nz(build_src: building npy-pkg config filesÚinstallrFrdTÚinstall_libbaseÚprefix)rrRÚcopyr Ú    finalizedrXr'rhr‹rBZinstalled_pkg_configrr1rJrKrLÚabspathr‰rFro) r:Z install_cmdZ
build_npkgZ
top_prefixÚpkgÚinfosZpkg_pathrŒrrRr†rˆr!r!r"raàs*
 
 
 
 
ÿzbuild_src.build_npy_pkg_configcCsð|js
dSt d¡g}|jD]¾}t|ƒrÒt|ƒdkrÒ|\}}}|jrR| |¡}ntj     |j
tjj    |  d¡Ž¡}t |dƒr”tj     ||d¡}||ƒ}|dkržq|||fg}||j kr¾g|j |<|j ||7<q| |¡q||jdd…<dS)Nzbuilding py_modules sourcesérdrfú.py)r-rrRr Úlenr'r\rJrKrLr$rOrhr.ro)r:Znew_py_modulesrr,Z module_baserzrÚmodulesr!r!r"r]þs.
 
 
 
ÿ
 
 
 z"build_src.build_py_modules_sourcescCstt| dg¡ƒ}|sdSt d|¡| |||f¡}| |||f¡}| |¡\}}|rht d|j|¡||d<dS)NÚsourceszbuilding library "%s" sourcesú#%s - nothing done with h_files = %s)rtÚgetrrRÚgenerate_sourcesÚtemplate_sourcesÚfilter_h_filesr,)r:Zlib_nameÚ
build_infor–Úh_filesr!r!r"r^sÿzbuild_src.build_library_sourcesc Cs&t|jƒ}t d|j¡| |j¡}| d¡}d |dd…¡}|jrT|     |¡|_
|  ||¡}|  ||¡}|  ||¡}| ||¡}| ||¡}| |¡\}}||jkr²g|j|<g}|D],}tj tj |¡¡d}    | ||    |f¡qº|j||7<| |¡\}}
|
rt d||
¡||_dS)Nzbuilding extension "%s" sourcesrdréÿÿÿÿr—)rtr–rrRÚnameZget_ext_fullnamerOrLr'r\Úext_target_dirr™ršÚ swig_sourcesÚ f2py_sourcesÚ pyrex_sourcesÚfilter_py_filesr.rJrKrr€ror›) r:rbr–ÚfullnameÚmodpathr,Úpy_filesr•r&Úmodulerr!r!r"r_0s6
 
 
 
ÿz!build_src.build_extension_sourcesc Csg}g}|D]"}t|ƒr$| |¡q | |¡q |s8|S|jrNt|ƒsN|j}n:t|ƒr`|d}n|j}tjj|j    g| 
d¡dd…Ž}|  |¡|j r t j}nt j}t  |¡}    |D]P}
|
||ƒ}|sÈq´t|ƒrêdd„|Dƒ| |¡q´t  d|f¡| |¡q´t  |    ¡|S)NrrdržcSsg|]}t d|f¡‘qS)ú  adding '%s' to sources.)rrR)rjr|r!r!r"rk~sz.build_src.generate_sources.<locals>.<listcomp>r©)r ror'r r rŸrJrKrLr$rOÚmkpathr8rÚINFOÚWARNÚ set_thresholdrurR) r:r–Ú    extensionÚ new_sourcesZ func_sourcesrrzrŸZ    new_levelZ    old_levelÚfuncr!r!r"r™Xs@  
 ÿ
 
 
 
zbuild_src.generate_sourcescCs| |dg¡S)Nr“©Ú filter_files©r:r–r!r!r"r¤†szbuild_src.filter_py_filescCs| |dddg¡S)Nz.hz.hppz.incr±r³r!r!r"r›‰szbuild_src.filter_h_filescCsHg}g}|D]2}tj |¡\}}||kr4| |¡q | |¡q ||fSr*)rJrKrro)r:r–Úextsr¯ryrÚbaserbr!r!r"r²Œs  zbuild_src.filter_filesc
Csdg}t|ƒr*|d d¡}|d d¡}n |j}|j}|D]"}tj |¡\}}|dkrT|jrntj |¡}    nt    |j
tj |¡ƒ}    |  |    ¡tj  |    tj  |¡¡}
|jsºt|g||
ƒrt|ƒrÚt d|
¡t|ƒ} nt d|
¡t|ƒ} t|
dƒ} |  | ¡W5QRXt|
ƒrHtj |
¡} | |krHt d| ¡| | ¡| |
¡q:| |¡q:|S)    NrÚdependsÚ include_dirsz.srczfrom_template:> %szconv_template:> %srú  adding '%s' to include_dirs.)r r˜r¶r·rJrKrr'r~r
r$rªrLr€r%rÚ_f_pyf_ext_matchrrRÚprocess_f_fileÚprocess_c_filerrÚ_header_ext_matchro)r:r–r®r¯r¶r·rrµrbÚ
target_dirÚ target_fileZoutstrZfidrr!r!r"rš—s<
 
 
 
 
 
 
  zbuild_src.template_sourcesc    Cs`g}|j d¡d}|D]B}tj |¡\}}|dkrP| ||||¡}| |¡q| |¡q|S)z@Pyrex not supported; this remains for Cython support (see below)rdržz.pyx)rŸrOrJrKrÚgenerate_a_pyrex_sourcero)    r:r–r®r¯Úext_namerrµrbr¾r!r!r"r£»sþ  zbuild_src.pyrex_sourcescCsgS)zÄPyrex is not supported, but some projects monkeypatch this method.
 
        That allows compiling Cython code, see gh-6955.
        This method will remain here for compatibility reasons.
        r!)r:rµrÀrr®r!r!r"r¿Êsz!build_src.generate_a_pyrex_sourcecCsg}g}g}i}g}|j d¡d}d}    |D]`}
tj |
¡\} } | dkrn|jr`tj | ¡} nt|jtj | ¡ƒ} tj     |
¡r¶t
|
ƒ}||kr¢t d|
||fƒ‚tj  | |d¡}nt  d|
¡|}d}    tj  | |d¡}tj     |¡sFt  d    ||f¡tj | ¡} tj  | |d¡}tj     |¡s8t d
|fƒ‚t  d |¡| | ¡| |
¡|||
<| |¡q,t| ƒr„| |
¡q,| |
¡q,|s |s |S|D]}| |¡q¤|j|j}|jjrþ|jjD](\}}||jkrÔ| | d g¡¡qÔt  d |¡|r¶t|ƒdkr.t d|fƒ‚|d}
||
}tj |¡pNd} |
g|j}|jsrt||dƒr¦|    s¦t  d|
¡ddl}|j  |d| |
g¡nt  d|
¡nÐt!|ƒrÊ|d}n|j}tjj |jg| d¡dd…Ž} tj  | |d¡}| |¡||j}|js.t||dƒrx|    sxt  d|¡| | ¡ddl}|j  |dd| gd|g|¡nt  d|¡tj     |¡s¢t"d|fƒ‚tj  |j| ¡}tj  |d¡}tj  |d¡}t  d|¡| |¡||j#kr t  d|¡|j# |¡|    sŽddl}tj |jj$¡}tj  |dd¡}tj  |dd¡}t%||ƒsbt%||ƒrÆ| tj |¡¡| &||¡| &||¡n8tj     |¡sªt d|fƒ‚tj     |¡sÆt d|fƒ‚dD]>}tj  | ||¡}tj     |¡rÊt  d|¡| |¡qÊ||S) Nrdržrz.pyfú;mismatch of extension names: %s provides %r but expected %rzmodule.cz.  source %s does not exist: skipping f2py'ing.rzd  target %s does not exist:
   Assuming %smodule.c was generated with "build_src --inplace" command.ú
%r missingú&   Yes! Using %r as up-to-date target.Ú f2py_optionszf2py options: %szConly one .pyf file is allowed per extension module but got more: %rrzf2py: %sz --build-dirz+  skipping '%s' f2py interface (up-to-date)z    f2py:> %sz--lowerz-mz3  skipping f2py fortran files for '%s' (up-to-date)z!f2py target file %r not generatedzfortranobject.czfortranobject.hr©r¸r>zf2py target_c file %r not foundzf2py target_h file %r not found)z-f2pywrappers.fz-f2pywrappers2.f90)'rŸrOrJrKrr'r~r
r$ÚisfileÚget_f2py_modulenamerrLrÚdebugrMrRror    rªrÄr3rBrErur˜r”r¶r%rZ
numpy.f2pyZf2pyÚrun_mainr rr·Ú__file__rÚ    copy_file)r:r–r®r¯r¢Z    f_sourcesZ f2py_targetsÚ target_dirsrÀZ    skip_f2pyrrµrbr½rŸr¾rrÄrœr¶ÚnumpyrzZtarget_cZtarget_hZsource_cZsource_hZname_extÚfilenamer!r!r"r¢Òs
 
 ÿÿÿý ÿ
 
 
 
 ÿÿ ÿÿ
 
 ÿ
 
ÿ
 
ÿþþÿ
   zbuild_src.f2py_sourcesc    CsŠg}g}i}g}g}d}d|jkr8d}    d}
|j d¡n|jrHd}    d}
nd}    d}
d} |j d¡d} |D]} tj | ¡\}}|d    krp|jr¢tj     |¡}|j
}nt |j tj     |¡ƒ}|}tj  | ¡r¤t| ƒ}|| d
d…krútd | || d
d…fƒ‚|    dkrt| ƒ}    |    dk}
nlt| ƒ}|dkr<t d | |    f¡nF|    |kr‚t d |    | |f¡|dkrtt d¡d}
nt d| ¡|
rŒd}tj |d||f¡}nˆt d| ¡| d
d…}d
} t||ƒ}tj  |¡s,t d||f¡tj     |¡}t||ƒ}tj  |¡std|fƒ‚t d|¡| |¡| |¡| tj ||d¡¡| | ¡|d|| <qh| | ¡qh|s†|S| r”||S|D]}| |¡q˜|jp¸| ¡}|dg|j}|
rØ| d¡|jD]}| d|¡qÞ|D]ˆ} || }| g|j}|js&t||dƒrpt dtj |¡|
rBdpDd| f¡| ||jd|d|| g¡nt  d| ¡qø||S) Nú.cz-c++úc++TFrrdržz.irrÁz>source %r does not define swig target, assuming %s swig targetz0expected %r but source %r defines %r swig targetzAresetting swig target to c++ (some targets may have .c extension)z$assuming that %r has c++ swig targetú.cppú    %s_wrap%sz.  source %s does not exist: skipping swig'ing.zi  target %s does not exist:
   Assuming %s_wrap.{c,cpp} was generated with "build_src --inplace" command.rÂrÃr“z-pythonz-Irz%s: %sz++Úz-oz-outdirz+  skipping '%s' swig interface (up-to-date))!r5Úremover6rŸrOrJrKrr'r~r r
r$rÅÚget_swig_modulenamerÚget_swig_targetrrMrLÚ_find_swig_targetrorªr7Z    find_swigr·r¶r%rrRr€ÚspawnrÇ)r:r–r®r¯r¡Z swig_targetsrËr§Z
target_extÚtypZis_cppZ    skip_swigrÀrrµrbr½Z py_target_dirrŸZtyp2r¾rr7Zswig_cmdrr¶r!r!r"r¡\sÒ
 
 
 ÿÿ
 
 
ÿ
ÿ
 
 
ÿÿ 
ý 
ÿ
 
 
 
 
 ÿÿ  ÿÿ
zbuild_src.swig_sourcesN)Ú__name__Ú
__module__Ú __qualname__Ú descriptionÚ user_optionsÚboolean_optionsÚ help_optionsr;rXrZrYr`r‰rar]r^r_r™r¤r›r²ršr£r¿r¢r¡r!r!r!r"r$&sDô
:$(. $ r$z!.*\.(f90|f95|f77|for|ftn|f|pyf)\Zz.*\.(inc|h|hpp)\ZzQ\s*%module\s*(.*\(\s*package\s*=\s*"(?P<package>[\w_]+)".*\)|)\s*(?P<name>[\w_]+)z-\*-\s*c\s*-\*-z-\*-\s*c\+\+\s*-\*-c    Cs>t|dƒ*}d}| ¡}t|ƒr$d}t|ƒr0d}W5QRX|S)NrrÏrU)rÚreadlineÚ_has_cpp_headerÚ _has_c_header)rr&ÚresultÚliner!r!r"rÕ×s rÕc    CsBt|dƒ.}d}|D]}t|ƒ}|r| d¡}q4qW5QRX|S)NrrŸ)rÚ_swig_module_name_matchr)rr&rŸrär r!r!r"rÔás 
rÔcCs4dD]*}tj |d||f¡}tj |¡rq0q|S)N)rÐrÎrÑ)rJrKrLrÅ)r½rŸrbrr!r!r"rÖës
 rÖz%\s*python\s*module\s*(?P<name>[\w_]+)z4\s*python\s*module\s*(?P<name>[\w_]*?__user__[\w_]*)c    CsJd}t|ƒ4}|D](}t|ƒ}|rt|ƒr,q| d¡}q<qW5QRX|S)NrŸ)rÚ_f2py_module_name_matchÚ_f2py_user_module_name_matchr)rrŸr&rär r!r!r"rÆùs
 
rÆ).Ú__doc__rJrrHrNrÚdistutils.commandrÚdistutils.dep_utilrrÚdistutils.utilrÚdistutils.errorsrrZnumpy.distutilsrrlr    r
r r r Znumpy.distutils.from_templaterrºZnumpy.distutils.conv_templater»r#r$rÚIÚmatchr¹r¼rårrârárÕrÔrÖrærçrÆr!r!r!r"Ú<module>sJ      -ÿ
 
    ÿÿ