GitHub Viewer
"""xtensor-python: Python bindings for the xtensor C++ multi-dimensional array library.
This package provides Python bindings and build utilities for xtensor-python,
a header-only C++ library that enables seamless interoperability between
NumPy arrays and xtensor expressions.
Key Features:
- Header-only C++ library for NumPy/xtensor interoperability
- Build helpers for creating C++ extensions
- CMake integration utilities
- Version management and dependency checking
Basic Usage:
>>> import xtensor_python
>>> print(xtensor_python.__version__)
>>> include_dirs = xtensor_python.get_include_dirs()
>>> extension = xtensor_python.create_extension('my_module', ['src/my_module.cpp'])
For CMake projects:
>>> import xtensor_python.cmake_helpers as cmake
>>> cmake.print_cmake_info()
>>> cmake.generate_cmake_config('/path/to/cmake/config')
"""
# Import version information first
try:
from ._version import (
__version__,
__version_info__,
version,
version_info,
get_version_info,
get_version_string,
VersionInfo,
)
except ImportError as e:
# Fallback if version module fails to import
__version__ = "unknown"
__version_info__ = None
version = __version__
version_info = __version_info__
def get_version_info():
raise ImportError(f"Version information unavailable: {e}")
def get_version_string():
return __version__
VersionInfo = None
# Import build helpers
try:
from .build_helpers import (
get_include_dirs,
get_compiler_flags,
get_numpy_flags,
get_link_flags,
get_define_macros,
create_extension,
BuildExtension,
get_build_requirements,
check_dependencies,
print_build_info,
)
except ImportError as e:
# Create stub functions if build helpers fail to import
def get_include_dirs():
raise ImportError(f"Build helpers unavailable: {e}")
def get_compiler_flags():
raise ImportError(f"Build helpers unavailable: {e}")
def get_numpy_flags():
raise ImportError(f"Build helpers unavailable: {e}")
def get_link_flags():
raise ImportError(f"Build helpers unavailable: {e}")
def get_define_macros():
raise ImportError(f"Build helpers unavailable: {e}")
def create_extension(*args, **kwargs):
raise ImportError(f"Build helpers unavailable: {e}")
BuildExtension = None
def get_build_requirements():
return ["numpy>=2.0", "pybind11>=2.6.1,