|
|
|
|
|
from enum import Enum |
|
|
|
__all__ = ["show"] |
|
_built_with_meson = True |
|
|
|
|
|
class DisplayModes(Enum): |
|
stdout = "stdout" |
|
dicts = "dicts" |
|
|
|
|
|
def _cleanup(d): |
|
""" |
|
Removes empty values in a `dict` recursively |
|
This ensures we remove values that Meson could not provide to CONFIG |
|
""" |
|
if isinstance(d, dict): |
|
return { k: _cleanup(v) for k, v in d.items() if v != '' and _cleanup(v) != '' } |
|
else: |
|
return d |
|
|
|
|
|
CONFIG = _cleanup( |
|
{ |
|
"Compilers": { |
|
"c": { |
|
"name": "clang", |
|
"linker": r"ld64", |
|
"version": "15.0.0", |
|
"commands": r"cc", |
|
"args": r"", |
|
"linker args": r"", |
|
}, |
|
"cython": { |
|
"name": r"cython", |
|
"linker": r"cython", |
|
"version": r"3.0.12", |
|
"commands": r"cython", |
|
"args": r"", |
|
"linker args": r"", |
|
}, |
|
"c++": { |
|
"name": "clang", |
|
"linker": r"ld64", |
|
"version": "15.0.0", |
|
"commands": r"c++", |
|
"args": r"", |
|
"linker args": r"", |
|
}, |
|
"fortran": { |
|
"name": "gcc", |
|
"linker": r"ld64", |
|
"version": "13.3.0", |
|
"commands": r"gfortran", |
|
"args": r"", |
|
"linker args": r"", |
|
}, |
|
"pythran": { |
|
"version": r"0.17.0", |
|
"include directory": r"../../../../../../private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/pip-build-env-p7gx8hhw/overlay/lib/python3.11/site-packages/pythran" |
|
}, |
|
}, |
|
"Machine Information": { |
|
"host": { |
|
"cpu": r"aarch64", |
|
"family": r"aarch64", |
|
"endian": r"little", |
|
"system": r"darwin", |
|
}, |
|
"build": { |
|
"cpu": r"aarch64", |
|
"family": r"aarch64", |
|
"endian": r"little", |
|
"system": r"darwin", |
|
}, |
|
"cross-compiled": bool("False".lower().replace('false', '')), |
|
}, |
|
"Build Dependencies": { |
|
"blas": { |
|
"name": "Accelerate", |
|
"found": bool("True".lower().replace('false', '')), |
|
"version": "unknown", |
|
"detection method": "extraframeworks", |
|
"include directory": r"unknown", |
|
"lib directory": r"unknown", |
|
"openblas configuration": r"unknown", |
|
"pc file directory": r"unknown", |
|
}, |
|
"lapack": { |
|
"name": "Accelerate", |
|
"found": bool("True".lower().replace('false', '')), |
|
"version": "unknown", |
|
"detection method": "extraframeworks", |
|
"include directory": r"unknown", |
|
"lib directory": r"unknown", |
|
"openblas configuration": r"unknown", |
|
"pc file directory": r"unknown", |
|
}, |
|
"pybind11": { |
|
"name": "pybind11", |
|
"version": "2.13.6", |
|
"detection method": "config-tool", |
|
"include directory": r"unknown", |
|
}, |
|
}, |
|
"Python Information": { |
|
"path": r"/private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/cibw-run-4oaw7jjs/cp311-macosx_arm64/build/venv/bin/python", |
|
"version": "3.11", |
|
}, |
|
} |
|
) |
|
|
|
|
|
def _check_pyyaml(): |
|
import yaml |
|
|
|
return yaml |
|
|
|
|
|
def show(mode=DisplayModes.stdout.value): |
|
""" |
|
Show libraries and system information on which SciPy was built |
|
and is being used |
|
|
|
Parameters |
|
---------- |
|
mode : {`'stdout'`, `'dicts'`}, optional. |
|
Indicates how to display the config information. |
|
`'stdout'` prints to console, `'dicts'` returns a dictionary |
|
of the configuration. |
|
|
|
Returns |
|
------- |
|
out : {`dict`, `None`} |
|
If mode is `'dicts'`, a dict is returned, else None |
|
|
|
Notes |
|
----- |
|
1. The `'stdout'` mode will give more readable |
|
output if ``pyyaml`` is installed |
|
|
|
""" |
|
if mode == DisplayModes.stdout.value: |
|
try: |
|
yaml = _check_pyyaml() |
|
|
|
print(yaml.dump(CONFIG)) |
|
except ModuleNotFoundError: |
|
import warnings |
|
import json |
|
|
|
warnings.warn("Install `pyyaml` for better output", stacklevel=1) |
|
print(json.dumps(CONFIG, indent=2)) |
|
elif mode == DisplayModes.dicts.value: |
|
return CONFIG |
|
else: |
|
raise AttributeError( |
|
f"Invalid `mode`, use one of: {', '.join([e.value for e in DisplayModes])}" |
|
) |
|
|