mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-01-22 12:43:48 +01:00
9.2.0.rc (#1232)
Some checks failed
Native CMake Build / Configure and build using cmake (push) Failing after 3s
Some checks failed
Native CMake Build / Configure and build using cmake (push) Failing after 3s
* Python module is now built using scikit-build-core: Dev/scikitbuild #1164 * slsdet is available on PyPI from this release onwards * Fixed broken import in typecaster.h #1181 * Dev/automate version number #1193 * Dev/automate version part2 #1209 * 9111: added expat to host section to fix conda #1216 * fix for gotthard.py to import slsdet properly * added slsFramesynchronizer to conda copy_lib.sh * version of release * update version of client * removed cmake <=3.28 that was added in 9.1.11 (main_library in meta.yaml in conda-recipes) * added slsFrameSynchronizer binary to conda * added numpy dependency to toml * added documentation for pip in installation Detailed Commits: * skeleton pyproject.toml * moved compiled extension into slsdet * WIP * WI{ * separated the recipes * restored comments, cleanup * cleaned meta yaml * added back some python versions * conda build of main library * fixed typo * removed conda build pin * added zlib * added workflow for python lib * patching libzmq and cleaned up cmake * removed compiler version * switched patch tool * reverted to scikit-build in pyproject.toml * added sls_detector bin * added sync, renamed action * update cmake<=3.28 in conda build requirements * Fixed broken import in typecaster.h (#1181) - Fixed the broken import _slsdet --> slsdet._slsdet caused by a previous upgrade - added tests that exercises the conversion from python to C++ and from C++ to python - Python unit tests now run in CI (!) * removed 3.28 restriction on cmake in meta.yaml * from #1216 to 9.1.1.rc that got lost in merge from develoepr, added expat to host section to fix conda build * back with the cmake restriction * fixing gotthard1 import * version number automated for python build * mistakenly set version back to 0.0.0 * updated github workflow scripts to support automatic version numbering with environment variable * managed to load VERSION file in yaml file - simplifies things * saving changes in git workflow failed * got typo in github workflow * updatet regex pattern to support postfix * normalized version to PEP 440 specification in update_version.py * bug did not support version 0.0.0 * added regex pattern matching to version in toml file * version now supports . before postfix * updates api version based on version file & converted shell script files to python * updated all makefiles * adresses review comments * updated release version and the api lib version * raise an exception if the pull socket python script had errors at startup (for eg if pyzmq was not installed) * cmake<=3.28 not required anymore * updated documentation for pip installation as well * 920/add numpy (#1226) * added numpy dependency * aded build specifications for python version and platform * release notes --------- Co-authored-by: froejdh_e <erik.frojdh@psi.ch> Co-authored-by: Fröjd Lars Erik <froejdh_e@pcmoench03.psi.ch> Co-authored-by: Erik Fröjdh <erik.frojdh@gmail.com> Co-authored-by: mazzol_a <mazzol_a@pc17378.psi.ch> Co-authored-by: AliceMazzoleni99 <alice.mazzoleni@psi.ch>
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
#include <chrono>
|
||||
#include "py_headers.h"
|
||||
|
||||
#include "DurationWrapper.h"
|
||||
@@ -19,4 +20,25 @@ void init_duration(py::module &m) {
|
||||
<< " count: " << self.count() << ")";
|
||||
return ss.str();
|
||||
});
|
||||
|
||||
m.def(
|
||||
"test_return_DurationWrapper",
|
||||
[]() {
|
||||
DurationWrapper t(1.3);
|
||||
return t;
|
||||
},
|
||||
R"(
|
||||
Test function to return a DurationWrapper object. Ensures that the automatic conversion in typecaster.h works.
|
||||
)");
|
||||
|
||||
m.def(
|
||||
"test_duration_to_ns",
|
||||
[](const std::chrono::nanoseconds t) {
|
||||
//Duration wrapper is used to be able to convert from time in python to chrono::nanoseconds
|
||||
//return count to have something to test
|
||||
return t.count();
|
||||
},
|
||||
R"(
|
||||
Test function convert DurationWrapper or number to chrono::ns. Ensures that the automatic conversion in typecaster.h works.
|
||||
)"); // default value to test the default constructor
|
||||
}
|
||||
|
||||
@@ -54,11 +54,16 @@ template <> struct type_caster<std::chrono::nanoseconds> {
|
||||
value = duration_cast<nanoseconds>(duration<double>(PyFloat_AsDouble(src.ptr())));
|
||||
return true;
|
||||
}
|
||||
// If invoked with an int we assume it is nanoseconds and convert, same as in chrono.h
|
||||
if (PyLong_Check(src.ptr())) {
|
||||
value = duration_cast<nanoseconds>(duration<int64_t>(PyLong_AsLongLong(src.ptr())));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// Lastly if we were actually called with a DurationWrapper object we get
|
||||
// the number of nanoseconds and create a std::chrono::nanoseconds from it
|
||||
py::object py_cls = py::module::import("_slsdet").attr("DurationWrapper");
|
||||
py::object py_cls = py::module::import("slsdet._slsdet").attr("DurationWrapper");
|
||||
if (py::isinstance(src, py_cls)){
|
||||
sls::DurationWrapper *cls = src.cast<sls::DurationWrapper *>();
|
||||
value = nanoseconds(cls->count());
|
||||
@@ -77,7 +82,7 @@ template <> struct type_caster<std::chrono::nanoseconds> {
|
||||
* set the count from chrono::nanoseconds and return
|
||||
*/
|
||||
static handle cast(std::chrono::nanoseconds src, return_value_policy /* policy */, handle /* parent */) {
|
||||
py::object py_cls = py::module::import("_slsdet").attr("DurationWrapper");
|
||||
py::object py_cls = py::module::import("slsdet._slsdet").attr("DurationWrapper");
|
||||
py::object* obj = new py::object;
|
||||
*obj = py_cls();
|
||||
sls::DurationWrapper *dur = obj->cast<sls::DurationWrapper *>();
|
||||
|
||||
Reference in New Issue
Block a user