fixing python version. allowing versions to execute even if no detector connected or in shared memory (#990)

This commit is contained in:
maliakal_d 2024-09-30 17:10:20 +02:00 committed by GitHub
parent 6348ccd05b
commit 7fa5b5d70a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 134 additions and 46 deletions

View File

@ -10,7 +10,14 @@ import sys
from setuptools import setup, find_packages from setuptools import setup, find_packages
from pybind11.setup_helpers import Pybind11Extension, build_ext from pybind11.setup_helpers import Pybind11Extension, build_ext
__version__ = os.environ.get('GIT_DESCRIBE_TAG', 'developer')
import subprocess
def get_git_tag():
try:
return subprocess.check_output(['git', 'describe', '--tags', '--abbrev=0']).strip().decode('utf-8')
except subprocess.CalledProcessError:
return 'developer'
__version__ = get_git_tag()
def get_conda_path(): def get_conda_path():

View File

@ -27,4 +27,14 @@ MacAddr = _slsdet.MacAddr
scanParameters = _slsdet.scanParameters scanParameters = _slsdet.scanParameters
currentSrcParameters = _slsdet.currentSrcParameters currentSrcParameters = _slsdet.currentSrcParameters
DurationWrapper = _slsdet.DurationWrapper DurationWrapper = _slsdet.DurationWrapper
pedestalParameters = _slsdet.pedestalParameters pedestalParameters = _slsdet.pedestalParameters
import subprocess
def get_git_tag():
try:
return subprocess.check_output(['git', 'describe', '--tags', '--abbrev=0']).strip().decode('utf-8')
except subprocess.CalledProcessError:
return 'developer'
__version__ = get_git_tag()

View File

@ -1989,23 +1989,59 @@ class Detector(CppDetectorApi):
@property @property
def versions(self): def versions(self):
version_list = {'type': self.type, type = "Unknown"
'package': self.packageversion, firmware = "Unknown"
'client': self.clientversion} detectorserver = "Unknown"
kernel = "Unknown"
if self.type == detectorType.EIGER: hardware = "Unknown"
version_list ['firmware (Beb)'] = self.firmwareversion receiverversion = "Unknown"
version_list ['firmware(Febl)'] = self.getFrontEndFirmwareVersion(slsDetectorDefs.fpgaPosition.FRONT_LEFT) eiger = False
version_list ['firmware (Febr)'] = self.getFrontEndFirmwareVersion(slsDetectorDefs.fpgaPosition.FRONT_RIGHT) firmware_febl = "Unknown"
firmware_febr = "Unknown"
firmware_beb = "Unknown"
receiver_in_shm = False
release = self.packageversion
client = self.clientversion
if self.nmod != 0:
# shared memory has detectors
type = self.type
eiger = (self.type == detectorType.EIGER)
receiver_in_shm = self.use_receiver
if receiver_in_shm:
# cannot connect to receiver
try:
receiverversion = self.rx_version
except Exception as e:
pass
# cannot connect to Detector
try:
firmware = self.firmwareversion
detectorserver = self.detectorserverversion
kernel = self.kernelversion
hardware = self.hardwareversion
if eiger:
firmware_beb = self.firmwareversion
firmware_febl = self.getFrontEndFirmwareVersion(slsDetectorDefs.fpgaPosition.FRONT_LEFT)
firmware_febr = self.getFrontEndFirmwareVersion(slsDetectorDefs.fpgaPosition.FRONT_RIGHT)
except Exception as e:
pass
version_list = {'type': {type},
'package': {release},
'client': {client}}
if eiger:
version_list ['firmware (Beb)'] = {firmware_beb}
version_list ['firmware(Febl)'] = {firmware_febl}
version_list ['firmware (Febr)'] = {firmware_febr}
else: else:
version_list ['firmware'] = self.firmwareversion version_list ['firmware'] = {firmware}
version_list ['detectorserver'] = {detectorserver}
version_list ['detectorserver'] = self.detectorserverversion version_list ['kernel'] = kernel
version_list ['kernel'] = self.kernelversion version_list ['hardware'] = hardware
version_list ['hardware'] = self.hardwareversion if receiver_in_shm:
version_list ['receiver'] = {receiverversion}
if self.use_receiver:
version_list ['receiver'] = self.rx_version
return version_list return version_list

View File

@ -260,39 +260,74 @@ std::string Caller::versions(int action) {
if (!args.empty()) { if (!args.empty()) {
WrongNumberOfParameters(0); WrongNumberOfParameters(0);
} }
bool eiger = (det->getDetectorType().squash() == defs::EIGER);
auto t = det->getFirmwareVersion(std::vector<int>{det_id});
os << "\nType : " << OutString(det->getDetectorType())
<< "\nRelease : " << det->getPackageVersion() << std::hex
<< "\nClient : " << det->getClientVersion();
std::string vType = "Unknown";
std::string vFirmware = "Unknown";
std::string vServer = "Unknown";
std::string vKernel = "Unknown";
std::string vHardware = "Unknown";
bool eiger = false;
std::string vBebFirmware = "Unknown";
std::string vFeblFirmware = "Unknown";
std::string vFebrFirmware = "Unknown";
bool receiver = false;
std::string vReceiver = "Unknown";
std::string vRelease = det->getPackageVersion();
std::string vClient = det->getClientVersion();
if (det->size() != 0) {
// shared memory has detectors
vType = OutString(det->getDetectorType());
eiger = (det->getDetectorType().squash() == defs::EIGER);
receiver = det->getUseReceiverFlag().squash(false);
if (receiver) {
// cannot connect to receiver
try {
vReceiver = OutString(
det->getReceiverVersion(std::vector<int>{det_id}));
} catch (const std::exception &e) {
}
}
// cannot connect to Detector
try {
auto firmwareVersion =
det->getFirmwareVersion(std::vector<int>{det_id});
vFirmware = OutStringHex(firmwareVersion);
vServer = OutString(
det->getDetectorServerVersion(std::vector<int>{det_id}));
vKernel = OutString(
det->getKernelVersion({std::vector<int>{det_id}}));
vHardware = OutString(
det->getHardwareVersion(std::vector<int>{det_id}));
if (eiger) {
vBebFirmware = OutString(firmwareVersion);
vFeblFirmware = OutString(det->getFrontEndFirmwareVersion(
defs::FRONT_LEFT, std::vector<int>{det_id}));
vFebrFirmware = OutString(det->getFrontEndFirmwareVersion(
defs::FRONT_RIGHT, std::vector<int>{det_id}));
}
} catch (const std::exception &e) {
}
}
os << "\nType : " << vType
<< "\nRelease : " << vRelease
<< "\nClient : " << vClient;
if (eiger) { if (eiger) {
os << "\nFirmware (Beb) : " os << "\nFirmware (Beb) : " << vBebFirmware
<< OutString(det->getFirmwareVersion(std::vector<int>{det_id})); << "\nFirmware (Febl) : " << vFeblFirmware
os << "\nFirmware (Febl) : " << "\nFirmware (Febr) : " << vFebrFirmware;
<< OutString(det->getFrontEndFirmwareVersion(
defs::FRONT_LEFT, std::vector<int>{det_id}));
os << "\nFirmware (Febr) : "
<< OutString(det->getFrontEndFirmwareVersion(
defs::FRONT_RIGHT, std::vector<int>{det_id}));
} else { } else {
os << "\nFirmware : " os << "\nFirmware : " << vFirmware;
<< OutStringHex(
det->getFirmwareVersion(std::vector<int>{det_id}));
}
os << "\nServer : "
<< OutString(det->getDetectorServerVersion(std::vector<int>{det_id}))
<< "\nKernel : "
<< OutString(det->getKernelVersion({std::vector<int>{det_id}}))
<< "\nHardware : "
<< OutString(det->getHardwareVersion(std::vector<int>{det_id}));
if (det->getUseReceiverFlag().squash(true)) {
os << "\nReceiver : "
<< OutString(det->getReceiverVersion(std::vector<int>{det_id}));
} }
os << "\nServer : " << vServer
<< "\nKernel : " << vKernel
<< "\nHardware : " << vHardware;
if (receiver)
os << "\nReceiver : " << vReceiver;
os << std::dec << '\n'; os << std::dec << '\n';
} else if (action == defs::PUT_ACTION) { } else if (action == defs::PUT_ACTION) {
throw RuntimeError("cannot put"); throw RuntimeError("cannot put");
} else { } else {