persistent dictionary, Tango attribute

#!/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)