py: Fix CameraManager.version property

The current CameraManager.version doesn't work at all (raises a
TypeError), as that's not how you use expose C++ static methods as
Python class methods.

Fix it.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Tomi Valkeinen 2023-05-30 15:01:29 +03:00 committed by Laurent Pinchart
parent b9ecd85ed1
commit 9506da142b
2 changed files with 5 additions and 1 deletions

View file

@ -105,7 +105,7 @@ PYBIND11_MODULE(_libcamera, m)
return cm; return cm;
}) })
.def_property_readonly("version", &PyCameraManager::version) .def_property_readonly_static("version", [](py::object /* self */) { return PyCameraManager::version(); })
.def("get", &PyCameraManager::get, py::keep_alive<0, 1>()) .def("get", &PyCameraManager::get, py::keep_alive<0, 1>())
.def_property_readonly("cameras", &PyCameraManager::cameras) .def_property_readonly("cameras", &PyCameraManager::cameras)

View file

@ -68,6 +68,10 @@ class SimpleTestMethods(BaseTestCase):
# I expected EBUSY, but looks like double release works fine # I expected EBUSY, but looks like double release works fine
self.assertZero(ret) self.assertZero(ret)
def test_version(self):
cm = libcam.CameraManager.singleton()
self.assertIsInstance(cm.version, str)
class CameraTesterBase(BaseTestCase): class CameraTesterBase(BaseTestCase):
cm: typing.Any cm: typing.Any