@@ -261,6 +261,7 @@ def is_package_or_sage_namespace_package_dir(path, *, distribution_filter=None):
261
261
262
262
:mod:`sage.cpython` is an ordinary package::
263
263
264
+ sage: # optional - !meson_editable
264
265
sage: from sage.misc.package_dir import is_package_or_sage_namespace_package_dir
265
266
sage: directory = sage.cpython.__path__[0]; directory
266
267
'.../sage/cpython'
@@ -270,24 +271,48 @@ def is_package_or_sage_namespace_package_dir(path, *, distribution_filter=None):
270
271
:mod:`sage.libs.mpfr` only has an ``__init__.pxd`` file, but we consider
271
272
it a package directory for consistency with Cython::
272
273
274
+ sage: # optional - !meson_editable
273
275
sage: directory = os.path.join(sage.libs.__path__[0], 'mpfr'); directory
274
276
'.../sage/libs/mpfr'
275
- sage: is_package_or_sage_namespace_package_dir(directory) # known bug (seen in build.yml)
277
+ sage: is_package_or_sage_namespace_package_dir(directory)
276
278
True
277
279
278
280
:mod:`sage` is designated to become an implicit namespace package::
279
281
282
+ sage: # optional - !meson_editable
280
283
sage: directory = sage.__path__[0]; directory
281
284
'.../sage'
282
- sage: is_package_or_sage_namespace_package_dir(directory) # known bug (seen in build.yml)
285
+ sage: is_package_or_sage_namespace_package_dir(directory)
283
286
True
284
287
285
288
Not a package::
286
289
290
+ sage: # optional - !meson_editable
287
291
sage: directory = os.path.join(sage.symbolic.__path__[0], 'ginac'); directory # needs sage.symbolic
288
292
'.../sage/symbolic/ginac'
289
293
sage: is_package_or_sage_namespace_package_dir(directory) # needs sage.symbolic
290
294
False
295
+
296
+ TESTS::
297
+
298
+ sage: # optional - meson_editable
299
+ sage: from sage.misc.package_dir import is_package_or_sage_namespace_package_dir
300
+ sage: directory = os.path.dirname(sage.cpython.__file__); directory
301
+ '.../sage/cpython'
302
+ sage: is_package_or_sage_namespace_package_dir(directory)
303
+ True
304
+
305
+ sage: # optional - meson_editable
306
+ sage: directory = os.path.join(os.path.dirname(sage.libs.__file__), 'mpfr'); directory
307
+ '.../sage/libs/mpfr'
308
+ sage: is_package_or_sage_namespace_package_dir(directory)
309
+ True
310
+
311
+ sage: # optional - meson_editable, sage.symbolic
312
+ sage: directory = os.path.join(os.path.dirname(sage.symbolic.__file__), 'ginac'); directory
313
+ '.../sage/symbolic/ginac'
314
+ sage: is_package_or_sage_namespace_package_dir(directory)
315
+ False
291
316
"""
292
317
if os .path .exists (os .path .join (path , '__init__.py' )): # ordinary package
293
318
return True
@@ -345,8 +370,15 @@ def walk_packages(path=None, prefix='', onerror=None):
345
370
346
371
EXAMPLES::
347
372
373
+ sage: # optional - !meson_editable
348
374
sage: sorted(sage.misc.package_dir.walk_packages(sage.misc.__path__)) # a namespace package
349
375
[..., ModuleInfo(module_finder=FileFinder('.../sage/misc'), name='package_dir', ispkg=False), ...]
376
+
377
+ TESTS::
378
+
379
+ sage: # optional - meson_editable
380
+ sage: sorted(sage.misc.package_dir.walk_packages(sage.misc.__path__))
381
+ [..., ModuleInfo(module_finder=<...MesonpyPathFinder object...>, name='package_dir', ispkg=False), ...]
350
382
"""
351
383
# Adapted from https://github.com/python/cpython/blob/3.11/Lib/pkgutil.py
352
384
0 commit comments