What’s New in Karabo 2.3.4

The middlelayer framework table element recasts the values sent by the gui client. This is required as the client does send strings for any type of value.

Detailed Merge-Log

  • MDL: Safety cast on table values !3214

What’s New in Karabo 2.3.2

An enhancement in the middlelayer proxy generation to enable the DeviceClone (multi topic communication).

Detailed Merge-Log

  • MDL: Proxy factory fits documentation !3166

What’s New in Karabo 2.3.1

The GUI Client is made forward compatible with a new feature of the GUI server. In future versions the GUI server will send the host and port information to the client for display.

Detailed Merge-Log

  • GUI: Forward compatibility for init info from gui server !3140

What’s New in Karabo 2.3.0

The most relevant improvements and fixes are:

  • GUI: The Graphical user interface becomes quicker and more user-friendly, e.g. device-provided scenes can be retrieved via double-click from the navigation- and project panel.
  • GUI: The scene toolbars of the SA1, SA2 and SA3 topics are coloured
  • GUI: Trendlines can be derived by double-click on a supported property widget in the scene or a property in the configurator
  • GUI: The Karabo Cinema allows to quickly load a scene from command line
  • GUI: First steps of configuration retrieval from the dataloggers (Only works with online devices)
  • GUI: Mandatory check on Nodes for configurator visualization !3121
  • ikarabo: Gets a Macro API with functions like showAlarms and showInterlocks to show the respective alarm service information.
  • ikarabo: Devices can have interfaces and can be found via listMotors, listCameras, listMultiAxisMotors, listTriggers and listProcessors
  • findDevices and findServers are added and accept a matchPattern (string) to look for in the systemtopology
  • ikarabo: The overview of clients can be viewed with getClients
  • ikarabo: getConfigurationFromPast and getSchemaFromPast have been added to retrieve old configuration and schemas by providing a timepoint
  • ikarabo: The systemTopology can be provided with getTopology and the global devices was removed
  • MDL: The middlelayer API is significantly enhanced and uses now declared data types (casted as numpy data types)
  • MDL: The middle layer servers receive broadcasting messages only once, giving them a big performance and stability boost
  • MDL: The error messages (logs) have been adjusted so that e.g. the Python error stacktrace will be visible in the GUI
  • MDL: An important bug when overwriting properties was fixed (if a setter function was used in a decorator)
  • MDL: The new asynchronous Python 3.6.6 syntax is officially supported
  • MDL: Several improvements to pipelining proxies including reconnect
  • MDL: Standard functions provided to load and save to XML (saveToFile, loadFromFile)
  • MDL: Much faster access to entries of the karabo data container Hash: up to a factor of 100
  • MDL: The DeviceNode can accept a timeout parameter timeout to throw an error message if the proxy cannot be established within this time frame
  • C++/bound: In the bound/C++ framework the way to establish pipeline connections has been refactored to avoid situations where a connection could not be established
  • C++/bound: Ensure message ordering by chaining message execution. This means even more than in the past that slot calls must not take long!
  • C++: It is recommended to use the DeviceClient for pipeline management

Note

The Python version has been finally updated to 3.6.6!

Note

The getConfigurationFromPast in ikarabo only returns a configuration!

Detailed Merge-Log

bound/cpp core

  • bound/cpp: Fix setNewOptions with hierarchical key !2871
  • Fix pipeline with empty NDArray !2937
  • FIX ImageData and GUI for detector images (stack of GRAY images) !2906
  • Feature: add flip and rotation to ImageData !2900
  • Add units to NDARRAY_ELEMENT !2888
  • Add code coverage measurement for Python !2837
  • Modification of the bind_weak function to allow to use it with methods returning a value !2933
  • Add getDeviceSchemaNoWait to bound !2936
  • Fix cpp/bound pipeline tests !2951 !2966 !2883 !2958
  • Consistently send vector<BufferSet> through pipe, even for EOS !2954
  • C++: Give and id to input channels created by DeviceClient !2981
  • Remove un-implemented operator + for Hash !2975
  • Add interfaces in instanceInfo Hash !2962
  • C++/bound: Hash::paths() add path to empty VectorHash !3009
  • C++: Add missing mutex to and clean-up of OutputChannel !2984
  • C++: Check max key length on binary serialization !3047
  • C++: Report success of InputChannel::connect by adding a handler !2985
  • Add processor interface to framework !3044
  • More safety in python server when killed before really being alive. !2986
  • cpp/bound: More detailed exception message in NDArray::getData !2957
  • C++/bound: Ensure message ordering by chaining message execution !2974
  • C++: Refactor connecting InputChannels !3043
  • C++: DeviceClient now uses new SignalSlotable:asyncConnectInputChannel !3056
  • Common: Add timeit decorator !3069
  • C++/bound: message order per sender - One Strand is used per sender !3091
  • FIX: Add logging support for table and vector of string1.4x format is not supported anymore !3049
  • Fix C++ integration test on device locking !3059
  • Refactor bound python server to ensure it shuts down !3102
  • Possible fix for DataLogger disconnecting procedure

core Devices

  • Make _RunConfigurator sources reconfigurable !2893
  • Move “image” in node “data” for CameraInterface. !2914
  • GUIServer: More information on failures in projectDB !2922
  • C++: Give GuiServerDevice a state: INIT, ON and ERROR !2953
  • Clean CentralLogging device- Give the device meaningful states INIT => ON (=> ERROR) !2955
  • Give the project manager State.ON, State.INIT, State.ERROR !2959
  • FEAT: Project Database manager restricts domains !2952
  • FIX: DataLoggerManager clear queue on server death !2967
  • Add missing import to project manager !3003
  • Gui server handles pipeline data via DeviceClient !3007
  • ProjectDB: use direct import !3008
  • Read project db directly for items (Cinema capability) !2929
  • Slow down DataLoggers instantiation !2935
  • GUI Server: Provide GUI clients access to getConfigurationFromPast !3014
  • Add camera interface to abstract camera !3099
  • add interfaces to camerafsm !3104
  • Remove variables for local storage from CameraInterface !3107

Dependencies and deployment

  • DEPS: Fix small karabo develop bug !2872
  • ‘karabo-gterm’ and ‘karabo-xterm’ return abort message if required terminal is not installed. !2938
  • Upgrade for cppunit !2879
  • Update pyzmq to version 17.0.0 !2863
  • Upgrade for log4cpp !2880
  • Add CodeCoverage configuration to Karabo build system. !2836
  • Add coverage 4.5.1 to karabo dependencies !2884
  • Python library for the Docker Engine API !2864
  • Fix RTD’s requirements in templates !2651
  • Upgrade Python to 3.6.6 !2804

Middlelayer core

  • Common: Validate args decorator according to annotations !3073
  • MDL: Update device template to Python 3.6 syntax !3068
  • MDL: Remove not required vector attr check !3063
  • MDL: finding devices and servers is case insensitive !3093
  • MDL: Change iscoroutinefunction import !3116
  • MDL: Pipelining proxies reconnect properly !3092
  • MDL: Remove not required code !3098
  • MDL: Only announce new schema if required in DeviceNode !3095
  • MDL: Don’t crack an output proxy without schema !3057
  • MDL: Fix output channel with different port settings !3072
  • MDL: prevent time.sleep usage in macros !3074 !3124
  • MDL: Make sure the pipeline reconnect is done correctly !3079
  • MDL: Middlelayer server can shutdown gracefully !3080
  • MDL: Little refactor in pipeline !2868
  • MDL: Provide possiblity to explicitly close outputchannel !2874
  • MDL: Fix device node timestamp handling !2878
  • MDL: Reconnect device server to timeServer !2877
  • MDL: Always allow State UNKNOWN for state property in descriptor !2882
  • MDL: Clean middlelayer_api: remove guiserver and do proper import !2887
  • MDL: error check in call-once-alive added !2894
  • MDL: Fix getDescriptors, filterByTags on proxies. Ignore ListOfNodes !2897
  • MDL: Set default outputchannel policy to drop !2908
  • MDL: Fix race condition in outputchannel !2889
  • MDL: Fix pipeline case wait & copy !2909
  • MDL: Add remote device to imports !2912
  • MDL: Add unit to NDArray for proxies !2915
  • FW: Add displayTypes constants !2891
  • MDL: Fix schema cross test !2918
  • MDL: Add save to and load from XML files !2921
  • MDL: print MDL stack trace for real !2793
  • MDL: Add Injectable to MDL imports !2940
  • MDL: Fix Overwrite when using with setters !2961
  • MDL: Temporarily increase alarm timeout !2970
  • MDL: Fix attribute type description in schema !2963
  • MDL: Fix current hash setting in DeviceNode !2989
  • MDL: Make sure a new timestamp is attached to not compress events !2988
  • MDL: Fix device client information in MDL !2990
  • MDL: Use UInt64 for trainId, secs and fracs !3005
  • MDL: IPython device align info and doNotCompressEvents timestamp !2994
  • MDL: Fix device node being MANDATORY !3011
  • MDL: Provide possilibity to set data and endofstream handler to pipeline proxies !3018
  • MDL: Provide traceback as a single string and not as list of strings !3021
  • MDL: Use declared data types !3033
  • MDL: Added missing ArchivePolicy attribute !3054
  • MDL: Support new syntax !3050
  • MDL: Middlelayer servers receive broadcast messages only once !2907
  • MDL: Port in output channel in middle layer API
  • MDL: Give DeviceNodes an optional timeout parameter !3031
  • MDL: Make firstCompleted and allCompleted take into account karaboValues !3026
  • MDL: Proxies reconnect their pipelines !3017
  • MDL: fix saveToFile in current directory !3042
  • MDL: Introduce attribute casting for vectors !3052

Graphical user interface

  • GUI: Enable backward compatibility for tool widgets !3135
  • GUI: Fast forward in configuration view !3120
  • GUI: Add additional case to listedit validator !3088
  • GUI: Mandatory check on Nodes for configurator visualization !3121
  • GUI: Check for binding in configuration retrieval !3065
  • GUI: Remove a few flake8 complains !3067
  • GUI: Add an extra QModelIndex protection to scene retrieval !3061
  • GUI: Change documentation link to global docu !3062
  • GUI: Provide option to cancel editing scenelink label !3090
  • GUI: Do the macro sleep check in run_macro !3096
  • GUI: Restrict subprojects to domain and not topic !3108
  • GUI: Rework label model editing with TextEdit !3094
  • GUI: Provide project names when having duplicated uuids !3101
  • GUI: Compare online and offline configurations in the configurator !3103
  • GUI: Make tool actions exclusive (checkable) !3112
  • GUI: Check for uuid in project walking !3110
  • GUI: Only allow offline configurations to be checked in the project !3105
  • GUI: Refactor the LinkWidgets !3109
  • GUI: fix configurationFromPast !3076
  • GUI: Protect trendlines against -np.inf and np.inf !2870
  • GUI: Open device scene links when maximized !2881
  • GUI: Apply default configuration correctly to device, e.g. optional UNDEFINED values.!2711
  • GUI: Add feature to edit the properties of the SceneLink
  • GUI: Fix about dialog documentation link !2904
  • GUI: Rework QActions for non controller widgets. Change Scenelink !2903
  • GUI: Establish session with project database when device comes up after connect !2910
  • GUI: Gracefully close everything on closeEvent !2917
  • GUI: Fix vector dialog with min and max Sizes !2920
  • GUI: Bail out in saving project !2919
  • GUI: Show device locked in configurator with color !2901
  • GUI: Blindly copy old scene link target if unknown scene uuid !2924
  • GUI: Add uuid tooltip to project !2926
  • GUI: Restrict domain selection for subprojects !2927
  • GUI: Show trashed project in project panel !2923
  • GUI: Correct focus on edits in configurator !2928
  • GUI: ProjectView gets uuid selection clipboard !2949
  • GUI: Sanitize macro scene widgets in save as !2942
  • GUI: Fix list edit validator !2943
  • GUI: Make trashed projects loadable !2946
  • GUI: Remove trashing option from Load Project dialog !2945
  • GUI: Remove ‘Save as’ for projects … !2944
  • FEAT: GUI server can refuse old GUI clients !2947
  • GUI: Protect plots from awkwardly high or low values !2964
  • FIX: typo in Version unit tests !2965
  • GUI: The cinema !2956
  • GUI: load topic’s group by default if available using KaraboSettings !2934
  • GUI: Do not allow users to use spaces in project’s objects names !2925
  • GUI: Project dialog fix column size !2979
  • GUI: Feature replace scene content !2972
  • GUI: Declare trash !2982
  • GUI: Introduce configuration singleton !2968
  • GUI: Delete KaraboSettings from GUI !2993
  • GUI: Modify GUI message when connection is closed !3001
  • GUI: Make readOnly parameters visible before instantiation !3000
  • GUI sparkline: Protect against division by zero !2987
  • GUI: Show a better message when the scene was not found in the project !3010
  • GUI: Implement processing delay lamp !3002
  • GUI: Retrieve scenes via double click on project and topology view !2992
  • GUI: Be more cautious when getting scene from navigation panel !3016
  • GUI: Groups and names in configuration singleton !2997
  • GUI: Show additional logging info in the log panel !3022
  • GUI: Check for device type in navigation panel on scene request !3023
  • GUI: Enable double-click on LogPanel item for instance lookup !3020
  • GUI: Move db token to configuration singleton !3024
  • GUI: Implement toolbar coloring in scenes according to SASE’s !2999
  • GUI: Fix table element bug in INITONLY with options !3025
  • GUI: close all scenes on disconnect !3032
  • GUI: getConfigurationFromPast !3015
  • GUI: Change state color widget feature of showing text !3006
  • GUI: Provide trendline on double click for controllers !3040
  • GUI: Provide trendline on double click in configurator !3041
  • GUI: Simplify trashed message when opening or trashing a project !3045
  • GUI: Add image scene to generic scenes !3048
  • GUI: IPython appears as device !3051
  • GUI: Set the tooltip according to value in colorbool widget !3058

ikarabo & Macro API

  • ikarabo: findServers by matchPattern !2978
  • ikarabo: Correct jupyter client information !2996
  • ikarabo: Remove ‘devices’ and provide getTopology !2991
  • ikarabo: add getConfigurationFromPast and getSchemaFromPast !3013
  • ikarabo: findDevices in ikarabo !2977
  • ikarabo: refactor findDevices !2983
  • ikarabo: getClients feature !2980
  • Macro API: showAlarms from Alarm service !2960
  • Macro API: showInterlocks !2971
  • Macro API: Add device interfaces !2973
  • Macro API: Split MultiAxisMotors and Motors in topology listing !3030
  • Macro API: Add listProcessor !3046
  • More tests in Macro API !2995