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)