Files
basis_universal/python/README.md
Rich Geldreich 1bb4811ec2 Update README with future goals for Python support
Added information about future goals for Python Wheels and examples.
2026-01-24 21:27:57 -05:00

2.1 KiB

Python support is still new and coming online, but is entirely functional. The library's pure C (WASM friendly) API's are completely exposed to Python. Our next goal is to work on official Wheels, once the API is settled and more examples are written.

The Python integration first tries to use native .so's in the basisu_py directory. If they don't exist, it tries the slower and single threaded WASM fallbacks under basisu_py/wasm, which requires wasmtime for Python to be installed. Some tests require an input.ktx2 or test.ktx2 to be in the current directory.

Building:

Under the repo's root directory - build the native SO's:

mkdir build_python
cd build_python
cmake -DBASISU_BUILD_PYTHON=ON ..
make

Build the WASM modules (see README_WASI.md file for instructions on how to install the WASI SDK, which is required):

mkdir build_wasm_st
cd build_wasm_st
cmake .. -DCMAKE_TOOLCHAIN_FILE=$WASI_SDK_PATH/share/cmake/wasi-sdk.cmake -DCMAKE_BUILD_TYPE=Release -DBASISU_WASM_THREADING=OFF
make

Running Tests

The tests assume the current directory is "python". Under Windows we've tested with Python v3.12.10, and under Linux v3.12.13.

Higher-level tests:

  • python3 -m tests.test_backend_loading
  • python3 -m tests.test_basic_wasm_selection
  • python3 -m tests.test_basic_backend_selection
  • python3 -m tests.test_basic_decode
  • python3 -m tests.test_basic_transcode
  • python3 -m tests.test_compress_swirl
  • python3 -m tests.test_compress_swirl_hdr
  • python3 -m tests.test_transcoder_astc
  • python3 -m tests.test_transcoder_backend_loading
  • python3 -m tests.test_transcoder_end_to_end
  • python3 -m tests.test_transcoder_end_to_end_hdr
  • python3 -m tests.test_transcoder_helpers

Low-level tests (used while bringing up the codec):

  • python3 -m lowlevel_test_native.basic_test
  • python3 -m lowlevel_test_native.test_transcoder_basic
  • python3 -m lowlevel_test_native.example_capi_python
  • python3 -m lowlevel_test_wasm.basic_test
  • python3 -m lowlevel_test_wasm.compress_test
  • python3 -m lowlevel_test_wasm.compress_test_float