@@ -127,12 +127,6 @@ def test_NPY_NO_EXPORT():
127127 "array_api" ,
128128 "array_api.linalg" ,
129129 "ctypeslib" ,
130- "distutils" ,
131- "distutils.cpuinfo" ,
132- "distutils.exec_command" ,
133- "distutils.misc_util" ,
134- "distutils.log" ,
135- "distutils.system_info" ,
136130 "doc" ,
137131 "doc.constants" ,
138132 "doc.ufuncs" ,
@@ -165,6 +159,18 @@ def test_NPY_NO_EXPORT():
165159 "typing.mypy_plugin" ,
166160 "version" ,
167161]]
162+ if sys .version_info < (3 , 12 ):
163+ PUBLIC_MODULES += [
164+ 'numpy.' + s for s in [
165+ "distutils" ,
166+ "distutils.cpuinfo" ,
167+ "distutils.exec_command" ,
168+ "distutils.misc_util" ,
169+ "distutils.log" ,
170+ "distutils.system_info" ,
171+ ]
172+ ]
173+
168174
169175
170176PUBLIC_ALIASED_MODULES = [
@@ -193,62 +199,6 @@ def test_NPY_NO_EXPORT():
193199 "core.records" ,
194200 "core.shape_base" ,
195201 "core.umath" ,
196- "core.umath_tests" ,
197- "distutils.armccompiler" ,
198- "distutils.fujitsuccompiler" ,
199- "distutils.ccompiler" ,
200- 'distutils.ccompiler_opt' ,
201- "distutils.command" ,
202- "distutils.command.autodist" ,
203- "distutils.command.bdist_rpm" ,
204- "distutils.command.build" ,
205- "distutils.command.build_clib" ,
206- "distutils.command.build_ext" ,
207- "distutils.command.build_py" ,
208- "distutils.command.build_scripts" ,
209- "distutils.command.build_src" ,
210- "distutils.command.config" ,
211- "distutils.command.config_compiler" ,
212- "distutils.command.develop" ,
213- "distutils.command.egg_info" ,
214- "distutils.command.install" ,
215- "distutils.command.install_clib" ,
216- "distutils.command.install_data" ,
217- "distutils.command.install_headers" ,
218- "distutils.command.sdist" ,
219- "distutils.conv_template" ,
220- "distutils.core" ,
221- "distutils.extension" ,
222- "distutils.fcompiler" ,
223- "distutils.fcompiler.absoft" ,
224- "distutils.fcompiler.arm" ,
225- "distutils.fcompiler.compaq" ,
226- "distutils.fcompiler.environment" ,
227- "distutils.fcompiler.g95" ,
228- "distutils.fcompiler.gnu" ,
229- "distutils.fcompiler.hpux" ,
230- "distutils.fcompiler.ibm" ,
231- "distutils.fcompiler.intel" ,
232- "distutils.fcompiler.lahey" ,
233- "distutils.fcompiler.mips" ,
234- "distutils.fcompiler.nag" ,
235- "distutils.fcompiler.none" ,
236- "distutils.fcompiler.pathf95" ,
237- "distutils.fcompiler.pg" ,
238- "distutils.fcompiler.nv" ,
239- "distutils.fcompiler.sun" ,
240- "distutils.fcompiler.vast" ,
241- "distutils.fcompiler.fujitsu" ,
242- "distutils.from_template" ,
243- "distutils.intelccompiler" ,
244- "distutils.lib2def" ,
245- "distutils.line_endings" ,
246- "distutils.mingw32ccompiler" ,
247- "distutils.msvccompiler" ,
248- "distutils.npy_pkg_config" ,
249- "distutils.numpy_distribution" ,
250- "distutils.pathccompiler" ,
251- "distutils.unixccompiler" ,
252202 "f2py.auxfuncs" ,
253203 "f2py.capi_maps" ,
254204 "f2py.cb_rules" ,
@@ -290,6 +240,66 @@ def test_NPY_NO_EXPORT():
290240 "random.bit_generator" ,
291241 "testing.print_coercion_tables" ,
292242]]
243+ if sys .version_info < (3 , 12 ):
244+ PRIVATE_BUT_PRESENT_MODULES += [
245+ 'numpy.' + s for s in [
246+ "distutils.armccompiler" ,
247+ "distutils.fujitsuccompiler" ,
248+ "distutils.ccompiler" ,
249+ 'distutils.ccompiler_opt' ,
250+ "distutils.command" ,
251+ "distutils.command.autodist" ,
252+ "distutils.command.bdist_rpm" ,
253+ "distutils.command.build" ,
254+ "distutils.command.build_clib" ,
255+ "distutils.command.build_ext" ,
256+ "distutils.command.build_py" ,
257+ "distutils.command.build_scripts" ,
258+ "distutils.command.build_src" ,
259+ "distutils.command.config" ,
260+ "distutils.command.config_compiler" ,
261+ "distutils.command.develop" ,
262+ "distutils.command.egg_info" ,
263+ "distutils.command.install" ,
264+ "distutils.command.install_clib" ,
265+ "distutils.command.install_data" ,
266+ "distutils.command.install_headers" ,
267+ "distutils.command.sdist" ,
268+ "distutils.conv_template" ,
269+ "distutils.core" ,
270+ "distutils.extension" ,
271+ "distutils.fcompiler" ,
272+ "distutils.fcompiler.absoft" ,
273+ "distutils.fcompiler.arm" ,
274+ "distutils.fcompiler.compaq" ,
275+ "distutils.fcompiler.environment" ,
276+ "distutils.fcompiler.g95" ,
277+ "distutils.fcompiler.gnu" ,
278+ "distutils.fcompiler.hpux" ,
279+ "distutils.fcompiler.ibm" ,
280+ "distutils.fcompiler.intel" ,
281+ "distutils.fcompiler.lahey" ,
282+ "distutils.fcompiler.mips" ,
283+ "distutils.fcompiler.nag" ,
284+ "distutils.fcompiler.none" ,
285+ "distutils.fcompiler.pathf95" ,
286+ "distutils.fcompiler.pg" ,
287+ "distutils.fcompiler.nv" ,
288+ "distutils.fcompiler.sun" ,
289+ "distutils.fcompiler.vast" ,
290+ "distutils.fcompiler.fujitsu" ,
291+ "distutils.from_template" ,
292+ "distutils.intelccompiler" ,
293+ "distutils.lib2def" ,
294+ "distutils.line_endings" ,
295+ "distutils.mingw32ccompiler" ,
296+ "distutils.msvccompiler" ,
297+ "distutils.npy_pkg_config" ,
298+ "distutils.numpy_distribution" ,
299+ "distutils.pathccompiler" ,
300+ "distutils.unixccompiler" ,
301+ ]
302+ ]
293303
294304
295305def is_unexpected (name ):
@@ -323,10 +333,14 @@ def is_unexpected(name):
323333 "numpy.core.code_generators.verify_c_api_version" ,
324334 "numpy.core.cversions" ,
325335 "numpy.core.generate_numpy_api" ,
326- "numpy.distutils.msvc9compiler " ,
336+ "numpy.core.umath_tests " ,
327337]
338+ if sys .version_info < (3 , 12 ):
339+ SKIP_LIST += ["numpy.distutils.msvc9compiler" ]
328340
329341
342+ # suppressing warnings from deprecated modules
343+ @pytest .mark .filterwarnings ("ignore:.*np.compat.*:DeprecationWarning" )
330344def test_all_modules_are_expected ():
331345 """
332346 Test that we don't add anything that looks like a new public module by
@@ -351,9 +365,6 @@ def test_all_modules_are_expected():
351365# below
352366SKIP_LIST_2 = [
353367 'numpy.math' ,
354- 'numpy.distutils.log.sys' ,
355- 'numpy.distutils.log.logging' ,
356- 'numpy.distutils.log.warnings' ,
357368 'numpy.doc.constants.re' ,
358369 'numpy.doc.constants.textwrap' ,
359370 'numpy.lib.emath' ,
@@ -369,6 +380,12 @@ def test_all_modules_are_expected():
369380 'numpy.matlib.ctypeslib' ,
370381 'numpy.matlib.ma' ,
371382]
383+ if sys .version_info < (3 , 12 ):
384+ SKIP_LIST_2 += [
385+ 'numpy.distutils.log.sys' ,
386+ 'numpy.distutils.log.logging' ,
387+ 'numpy.distutils.log.warnings' ,
388+ ]
372389
373390
374391def test_all_modules_are_expected_2 ():
@@ -472,11 +489,7 @@ def check_importable(module_name):
472489
473490
474491@pytest .mark .xfail (
475- hasattr (np .__config__ , "_built_with_meson" ),
476- reason = "Meson does not yet support entry points via pyproject.toml" ,
477- )
478- @pytest .mark .xfail (
479- sysconfig .get_config_var ("Py_DEBUG" ) is not None ,
492+ sysconfig .get_config_var ("Py_DEBUG" ) not in (None , 0 , "0" ),
480493 reason = (
481494 "NumPy possibly built with `USE_DEBUG=True ./tools/travis-test.sh`, "
482495 "which does not expose the `array_api` entry point. "
@@ -488,6 +501,11 @@ def test_array_api_entry_point():
488501 Entry point for Array API implementation can be found with importlib and
489502 returns the numpy.array_api namespace.
490503 """
504+ # For a development install that did not go through meson-python,
505+ # the entrypoint will not have been installed. So ensure this test fails
506+ # only if numpy is inside site-packages.
507+ numpy_in_sitepackages = sysconfig .get_path ('platlib' ) in np .__file__
508+
491509 eps = importlib .metadata .entry_points ()
492510 try :
493511 xp_eps = eps .select (group = "array_api" )
@@ -497,12 +515,19 @@ def test_array_api_entry_point():
497515 # Array API entry points so that running this test in <=3.9 will
498516 # still work - see https://github.com/numpy/numpy/pull/19800.
499517 xp_eps = eps .get ("array_api" , [])
500- assert len (xp_eps ) > 0 , "No entry points for 'array_api' found"
518+ if len (xp_eps ) == 0 :
519+ if numpy_in_sitepackages :
520+ msg = "No entry points for 'array_api' found"
521+ raise AssertionError (msg ) from None
522+ return
501523
502524 try :
503525 ep = next (ep for ep in xp_eps if ep .name == "numpy" )
504526 except StopIteration :
505- raise AssertionError ("'numpy' not in array_api entry points" ) from None
527+ if numpy_in_sitepackages :
528+ msg = "'numpy' not in array_api entry points"
529+ raise AssertionError (msg ) from None
530+ return
506531
507532 xp = ep .load ()
508533 msg = (
0 commit comments