mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-11 12:27:14 +02:00
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>
42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
|
|
|
|
from . import _slsdet
|
|
gc = _slsdet.slsDetectorDefs.M3_GainCaps
|
|
|
|
|
|
class Mythen3GainCapsWrapper:
|
|
"""Holds M3_GainCaps enums and facilitates printing"""
|
|
# 'M3_C10pre', 'M3_C15pre', 'M3_C15sh', 'M3_C225ACsh', 'M3_C30sh', 'M3_C50sh'
|
|
all_bits = gc.M3_C10pre | gc.M3_C15pre | gc.M3_C15sh | gc.M3_C225ACsh | gc.M3_C30sh | gc.M3_C50sh
|
|
all_caps = (gc.M3_C10pre, gc.M3_C15pre, gc.M3_C15sh, gc.M3_C225ACsh, gc.M3_C30sh, gc.M3_C50sh)
|
|
def __init__(self, value = 0):
|
|
self._validate(value)
|
|
self.value = value
|
|
|
|
|
|
def __eq__(self, other) -> bool:
|
|
if isinstance(other, Mythen3GainCapsWrapper):
|
|
return self.value == other.value
|
|
else:
|
|
return self.value == other
|
|
|
|
|
|
def __ne__(self, other) -> bool:
|
|
return not self.__eq__(other)
|
|
|
|
def __str__(self) -> str:
|
|
s = ', '.join(str(c).rsplit('_', 1)[1] for c in self.all_caps if self.value & c)
|
|
return s
|
|
|
|
def __repr__(self) -> str:
|
|
return self.__str__()
|
|
|
|
def _validate(self, value):
|
|
"""Check that only bits representing real capacitors are set"""
|
|
if isinstance(value, gc):
|
|
return True
|
|
elif isinstance(value, int):
|
|
if value & (~self.all_bits):
|
|
raise ValueError(f"The value: {value} is not allowed for Mythen3GainCapsWrapper")
|
|
else:
|
|
raise ValueError("GainCaps can only be initialized from int or M3_GainCaps enum") |