This repo is part of the tutorial found in https://github.com/ActivisionGameScience/ags_conda_recipes.git
It contains a single python module, ags_py_blosc_wrapper, that
is a wrapper around the C++ library ags_blosc_wrapper (see
https://github.com/ActivisionGameScience/ags_example_cpp_lib.git).
The purpose of this module is to demonstrate some techniques:
- How to manage external dependencies using
conda - How to call a C binary from python using
cffi
We purposefully exposed both a C and C++ API in ags_blosc_wrapper
to ease binding to other languages. In our opinion this is always
the method to use. We recommend
against trying to bind to C++ directly.
Either cffi or cython can be used for the C binding (we
prefer cffi slightly).
The conda build recipe is located in
https://github.com/ActivisionGameScience/ags_conda_recipes.git.
You can use it to build, publish, and install
the conda way.
However, you can also build and install this module by hand.
Assuming that ags_blosc_wrapper is installed in the following location:
/some/path/lib/libags_blosc_wrapper.so
and PYTHONPATH points into a subdirectory:
/some/path/lib/python2.7/site-packages
you can build and install with the following commands:
git clone https://github.com/ActivisionGameScience/ags_example_py_wrapper.git cd ags_example_py_wrapper python setup.py install
The only reason that the module needs to be installed underneath the
same lib directory is that the
binary loading logic is dumb (it climbs the directory tree until it
finds the file).
Here is an example of how to import and use the module:
from ags_py_blosc_wrapper import BloscWrapper b = BloscWrapper() # initialize data however you want data = np.array(..., dtype=float32) # can be an arbitrary numpy array, not just floats # compress data data_compressed = b.compress(data) del data # do stuff # decompress data = b.decompress(data_compressed).view(np.float32) del data_compressed print(data) # should be the same as it was originally
All files are licensed under the BSD 3-Clause License as follows: