Source code for tesfdmtools.utils.tesfdm_defaults

#/usr/bin/env python3
#
"""                                                                                              
.. module:: tesfdm_defaults                                                             
   :synopsis: define program-wide global defaults, stored in ${HOME}/.tesfdm_defaults 
.. moduleauthor:: Cor de Vries <c.p.de.vries@sron.nl>
"""

import os

import __main__

[docs]class Tesfdm_Defaults: ''' Define program-wide global defaults, stored in ${HOME}/.tesfdm_defaults The defaults values are store in the `__main__` namespace, as global values. This means that the default values will be identical for any Tesfdm_Defaults object within a script and its underlying modules. ''' def __init__(self): self.deffile=os.environ['HOME']+'/.tesfdm_defaults' try: self.defs=__main__.tesfdm_def except: __main__.tesfdm_def={} self.defs=__main__.tesfdm_def if os.path.exists(self.deffile): dfile=open(self.deffile,'r') for line in dfile.readlines(): dds=line.strip(' \n').split('=') self.defs[dds[0].strip()]=dds[1].strip() dfile.close()
[docs] def setdef(self,key,value): ''' Set a default value for an item, and rewrite the defaults file store. Args: * `key` = item name * `value` = item value ''' self.defs[key]=value self.wdef()
[docs] def getdef(self,key): ''' Get a defaults item value Args: * `key` = item name ''' if key in self.defs: return self.defs[key] else: return None
[docs] def wdef(self): ''' Write defaults to hidden file (only used internally within this class) ''' dfile=open(self.deffile,'w') for key in self.defs: dfile.write("%s=%s\n" % (key,self.defs[key])) dfile.close()
[docs] def get_filepath(self,ftype=''): ''' Get the **filepath** defaults value Kwargs: * `ftype` = filetype for which the defaultpath must be found ''' pp=self.getdef('filepath'+'_'+ftype) if pp is None: return '.' else: return pp
[docs] def set_filepath(self,path,ftype=''): ''' Set the **filepath** defaults value. When a regular file is given, the path of the file will be stored as the filepath for the filetype of this file. Args: * `path` = path or file for which the default path will be set Kwargs: * `ftype` = filetype for which the defaultpath must be set. Only used when `path` is not a regular file. ''' if os.path.isfile(path): pp=os.path.dirname(path) if os.path.basename(path).find('.') >= 0: ftype=os.path.basename(path).rsplit('.',1)[1] else: ftype='' self.setdef('filepath'+'_'+ftype,pp) else: self.setdef('filepath'+'_'+ftype,path)