diff --git a/bob/ip/flandmark/__init__.py b/bob/ip/flandmark/__init__.py index c632bd4bca6402bd4b317b4e95318a2cb1d4b2ec..2e175b0bfdc512dd50ef29eebeef7144caddcd00 100644 --- a/bob/ip/flandmark/__init__.py +++ b/bob/ip/flandmark/__init__.py @@ -9,20 +9,9 @@ def get_config(): """Returns a string containing the configuration information. """ - import pkg_resources - from .version import externals + import bob.extension + return bob.extension.get_config(__name__, version.externals) - packages = pkg_resources.require(__name__) - this = packages[0] - deps = packages[1:] - - retval = "%s: %s (%s)\n" % (this.key, this.version, this.location) - retval += " - c/c++ dependencies:\n" - for k in sorted(externals): retval += " - %s: %s\n" % (k, externals[k]) - retval += " - python dependencies:\n" - for d in deps: retval += " - %s: %s (%s)\n" % (d.key, d.version, d.location) - - return retval.strip() # gets sphinx autodoc done right - don't remove it __all__ = [_ for _ in dir() if not _.startswith('_')] @@ -31,6 +20,5 @@ __all__ = [_ for _ in dir() if not _.startswith('_')] from pkg_resources import resource_filename import os.path from ._library import __set_default_model__ -__set_default_model__(resource_filename(__name__, - os.path.join('data', 'flandmark_model.dat'))) +__set_default_model__(resource_filename(__name__, os.path.join('data', 'flandmark_model.dat'))) del resource_filename, __set_default_model__, os diff --git a/bob/ip/flandmark/main.cpp b/bob/ip/flandmark/main.cpp index 80faf17db715a08daa1819531d60d465eb7fa7b7..9ae20061fbe1d336943e4495223c6ff289bc1090 100644 --- a/bob/ip/flandmark/main.cpp +++ b/bob/ip/flandmark/main.cpp @@ -10,6 +10,7 @@ #endif #include <bob.blitz/capi.h> #include <bob.blitz/cleanup.h> +#include <bob.core/api.h> #include <bob.io.base/api.h> #include <bob.extension/documentation.h> @@ -74,29 +75,16 @@ static PyObject* create_module (void) { if (!m) return 0; auto m_ = make_safe(m); ///< protects against early returns - if (PyModule_AddStringConstant(m, "__version__", BOB_EXT_MODULE_VERSION) < 0) - return 0; - /* register the types to python */ Py_INCREF(&PyBobIpFlandmark_Type); if (PyModule_AddObject(m, "Flandmark", (PyObject *)&PyBobIpFlandmark_Type) < 0) return 0; /* imports dependencies */ - if (import_bob_blitz() < 0) { - PyErr_Print(); - PyErr_Format(PyExc_ImportError, "cannot import `%s'", BOB_EXT_MODULE_NAME); - return 0; - } - - if (import_bob_io_base() < 0) { - PyErr_Print(); - PyErr_Format(PyExc_ImportError, "cannot import `%s'", BOB_EXT_MODULE_NAME); - return 0; - } - - Py_INCREF(m); - return m; + if (import_bob_blitz() < 0) return 0; + if (import_bob_core_logging() < 0) return 0; + if (import_bob_io_base() < 0) return 0; + return Py_BuildValue("O", m); } PyMODINIT_FUNC BOB_EXT_ENTRY_NAME (void) { diff --git a/bob/ip/flandmark/version.cpp b/bob/ip/flandmark/version.cpp index 8eda9a3f4c5af3a7ba4966c4128cb54971d16dc5..3374623eee3948b5da87c6652bc83cede1530e9e 100644 --- a/bob/ip/flandmark/version.cpp +++ b/bob/ip/flandmark/version.cpp @@ -5,102 +5,15 @@ * @brief Binds configuration information available from bob */ -#include <Python.h> - -#include <string> -#include <cstdlib> -#include <blitz/blitz.h> -#include <boost/preprocessor/stringize.hpp> -#include <boost/version.hpp> -#include <boost/format.hpp> -#include <cv.h> -#ifdef NO_IMPORT_ARRAY -#undef NO_IMPORT_ARRAY -#endif -#include <bob.blitz/capi.h> +#define BOB_IMPORT_VERSION +#include <bob.blitz/config.h> #include <bob.blitz/cleanup.h> +#include <bob.core/config.h> #include <bob.io.base/config.h> -static int dict_set(PyObject* d, const char* key, const char* value) { - PyObject* v = Py_BuildValue("s", value); - if (!v) return 0; - int retval = PyDict_SetItemString(d, key, v); - Py_DECREF(v); - if (retval == 0) return 1; //all good - return 0; //a problem occurred -} - -static int dict_steal(PyObject* d, const char* key, PyObject* value) { - if (!value) return 0; - int retval = PyDict_SetItemString(d, key, value); - Py_DECREF(value); - if (retval == 0) return 1; //all good - return 0; //a problem occurred -} - -/** - * Describes the version of Boost libraries installed - */ -static PyObject* boost_version() { - boost::format f("%d.%d.%d"); - f % (BOOST_VERSION / 100000); - f % (BOOST_VERSION / 100 % 1000); - f % (BOOST_VERSION % 100); - return Py_BuildValue("s", f.str().c_str()); -} - -/** - * Describes the compiler version - */ -static PyObject* compiler_version() { -# if defined(__GNUC__) && !defined(__llvm__) - boost::format f("%s.%s.%s"); - f % BOOST_PP_STRINGIZE(__GNUC__); - f % BOOST_PP_STRINGIZE(__GNUC_MINOR__); - f % BOOST_PP_STRINGIZE(__GNUC_PATCHLEVEL__); - return Py_BuildValue("{ssss}", "name", "gcc", "version", f.str().c_str()); -# elif defined(__llvm__) && !defined(__clang__) - return Py_BuildValue("{ssss}", "name", "llvm-gcc", "version", __VERSION__); -# elif defined(__clang__) - return Py_BuildValue("{ssss}", "name", "clang", "version", __clang_version__); -# else - return Py_BuildValue("{ssss}", "name", "unsupported", "version", "unknown"); -# endif -} - -/** - * Python version with which we compiled the extensions - */ -static PyObject* python_version() { - boost::format f("%s.%s.%s"); - f % BOOST_PP_STRINGIZE(PY_MAJOR_VERSION); - f % BOOST_PP_STRINGIZE(PY_MINOR_VERSION); - f % BOOST_PP_STRINGIZE(PY_MICRO_VERSION); - return Py_BuildValue("s", f.str().c_str()); -} - -/** - * Numpy version - */ -static PyObject* numpy_version() { - return Py_BuildValue("{ssss}", "abi", BOOST_PP_STRINGIZE(NPY_VERSION), - "api", BOOST_PP_STRINGIZE(NPY_API_VERSION)); -} - -/** - * bob.blitz c/c++ api version - */ -static PyObject* bob_blitz_version() { - return Py_BuildValue("{ss}", "api", BOOST_PP_STRINGIZE(BOB_BLITZ_API_VERSION)); -} +#include <cv.h> -/** - * bob.io c/c++ api version - */ -static PyObject* bob_io_base_version() { - return Py_BuildValue("{ss}", "api", BOOST_PP_STRINGIZE(BOB_IO_BASE_API_VERSION)); -} static PyObject* build_version_dictionary() { @@ -108,17 +21,18 @@ static PyObject* build_version_dictionary() { if (!retval) return 0; auto retval_ = make_safe(retval); - if (!dict_set(retval, "OpenCV", CV_VERSION)) return 0; - if (!dict_set(retval, "Blitz++", BZ_VERSION)) return 0; + if (!dict_steal(retval, "OpenCV", Py_BuildValue("s", CV_VERSION))) return 0; + if (!dict_steal(retval, "Blitz++", blitz_version())) return 0; if (!dict_steal(retval, "Boost", boost_version())) return 0; if (!dict_steal(retval, "Compiler", compiler_version())) return 0; if (!dict_steal(retval, "Python", python_version())) return 0; if (!dict_steal(retval, "NumPy", numpy_version())) return 0; + if (!dict_steal(retval, "HDF5", hdf5_version())) return 0; if (!dict_steal(retval, "bob.blitz", bob_blitz_version())) return 0; - if (!dict_steal(retval, "bob.io", bob_io_base_version())) return 0; + if (!dict_steal(retval, "bob.core", bob_core_version())) return 0; + if (!dict_steal(retval, "bob.io.base", bob_io_base_version())) return 0; - Py_INCREF(retval); - return retval; + return Py_BuildValue("O", retval); } static PyMethodDef module_methods[] = { @@ -151,23 +65,13 @@ static PyObject* create_module (void) { auto m_ = make_safe(m); ///< protects against early returns /* register version numbers and constants */ - if (PyModule_AddStringConstant(m, "module", BOB_EXT_MODULE_VERSION) < 0) - return 0; + if (PyModule_AddStringConstant(m, "module", BOB_EXT_MODULE_VERSION) < 0) return 0; PyObject* externals = build_version_dictionary(); if (!externals) return 0; if (PyModule_AddObject(m, "externals", externals) < 0) return 0; - /* imports dependencies */ - if (import_bob_blitz() < 0) { - PyErr_Print(); - PyErr_Format(PyExc_ImportError, "cannot import `%s'", BOB_EXT_MODULE_NAME); - return 0; - } - - Py_INCREF(m); - return m; - + return Py_BuildValue("O", m); } PyMODINIT_FUNC BOB_EXT_ENTRY_NAME (void) {