#!/usr/bin/env python3 ”' functions that handle the global dictionary ”' import json as _json import os as _os import HasyUtils import tango import json environment = None class PersistEnv( dict): """ create a persistent environment based on the environment attribute of the blueskyServer device Usage: env = PersistEnv() env[ 'someKey'] = 12 Needed: BlueskyServer device """ def __init__(self): lst = HasyUtils.getDeviceNamesByClass( "BlueskyServer") if len( lst) != 1: print( "env.PersistEnv: too many BlueskyServer, %s" % repr( lst)) return try: self.proxyBlueskyServer = tango.DeviceProxy( lst[0]) except Exception as e: print( "env.PersistEnv: caught an exceptionm %s" % repr( e)) return self._load() return def update( self, hsh): for k, v in hsh.items(): self[k] = v self._dump() def _load(self): hsh = json.loads( self.proxyBlueskyServer.read_attribute( 'Environment').w_value) self.update( hsh) def _dump(self): self.proxyBlueskyServer.Environment = _json.dumps( self) def __getitem__(self, key): return dict.__getitem__(self, key) def __setitem__(self, key, val): dict.__setitem__(self, key, val) self._dump() def __repr__(self): dictrepr = dict.__repr__(self) return '%s(%s)' % (type(self).__name__, dictrepr)