All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
GaudiTest.TemporaryEnvironment Class Reference

Utility Classes. More...

Public Member Functions

def __init__
 
def __setitem__
 
def __getitem__
 
def __delitem__
 
def keys
 
def items
 
def __contains__
 
def restore
 
def __del__
 
def gen_script
 

Public Attributes

 old_values
 
 env
 

Private Attributes

 _keep_same
 

Detailed Description

Utility Classes.

Class to changes the environment temporarily.

Definition at line 71 of file GaudiTest.py.

Constructor & Destructor Documentation

def GaudiTest.TemporaryEnvironment.__init__ (   self,
  orig = os.environ,
  keep_same = False 
)
Create a temporary environment on top of the one specified
(it can be another TemporaryEnvironment instance).

Definition at line 75 of file GaudiTest.py.

75 
76  def __init__(self, orig = os.environ, keep_same = False):
77  """
78  Create a temporary environment on top of the one specified
79  (it can be another TemporaryEnvironment instance).
80  """
81  #print "New environment"
82  self.old_values = {}
83  self.env = orig
84  self._keep_same = keep_same
def GaudiTest.TemporaryEnvironment.__del__ (   self)
Revert the changes on destruction.

Definition at line 146 of file GaudiTest.py.

147  def __del__(self):
148  """
149  Revert the changes on destruction.
150  """
151  #print "Restoring the environment"
152  self.restore()

Member Function Documentation

def GaudiTest.TemporaryEnvironment.__contains__ (   self,
  key 
)
Operator 'in'.
Needed to provide the same interface as os.environ.

Definition at line 128 of file GaudiTest.py.

129  def __contains__(self,key):
130  """
131  Operator 'in'.
132  Needed to provide the same interface as os.environ.
133  """
134  return key in self.env
def GaudiTest.TemporaryEnvironment.__delitem__ (   self,
  key 
)
Unset an environment variable.
Needed to provide the same interface as os.environ.

Definition at line 104 of file GaudiTest.py.

105  def __delitem__(self,key):
106  """
107  Unset an environment variable.
108  Needed to provide the same interface as os.environ.
109  """
110  if key not in self.env :
111  raise KeyError(key)
112  self.old_values[key] = self.env[key]
113  del self.env[key]
def GaudiTest.TemporaryEnvironment.__getitem__ (   self,
  key 
)
Get an environment variable.
Needed to provide the same interface as os.environ.

Definition at line 97 of file GaudiTest.py.

97 
98  def __getitem__(self,key):
99  """
100  Get an environment variable.
101  Needed to provide the same interface as os.environ.
102  """
103  return self.env[key]
def GaudiTest.TemporaryEnvironment.__setitem__ (   self,
  key,
  value 
)
Set an environment variable recording the previous value.

Definition at line 85 of file GaudiTest.py.

85 
86  def __setitem__(self,key,value):
87  """
88  Set an environment variable recording the previous value.
89  """
90  if key not in self.old_values :
91  if key in self.env :
92  if not self._keep_same or self.env[key] != value:
93  self.old_values[key] = self.env[key]
94  else:
95  self.old_values[key] = None
96  self.env[key] = value
def GaudiTest.TemporaryEnvironment.gen_script (   self,
  shell_type 
)
Generate a shell script to reproduce the changes in the environment.

Definition at line 153 of file GaudiTest.py.

154  def gen_script(self,shell_type):
155  """
156  Generate a shell script to reproduce the changes in the environment.
157  """
158  shells = [ 'csh', 'sh', 'bat' ]
159  if shell_type not in shells:
160  raise RuntimeError("Shell type '%s' unknown. Available: %s"%(shell_type,shells))
161  out = ""
162  for key,value in self.old_values.items():
163  if key not in self.env:
164  # unset variable
165  if shell_type == 'csh':
166  out += 'unsetenv %s\n'%key
167  elif shell_type == 'sh':
168  out += 'unset %s\n'%key
169  elif shell_type == 'bat':
170  out += 'set %s=\n'%key
171  else:
172  # set variable
173  if shell_type == 'csh':
174  out += 'setenv %s "%s"\n'%(key,self.env[key])
175  elif shell_type == 'sh':
176  out += 'export %s="%s"\n'%(key,self.env[key])
177  elif shell_type == 'bat':
178  out += 'set %s=%s\n'%(key,self.env[key])
179  return out
def GaudiTest.TemporaryEnvironment.items (   self)
Return the list of (name,value) pairs for the defined environment variables.
Needed to provide the same interface as os.environ.

Definition at line 121 of file GaudiTest.py.

122  def items(self):
123  """
124  Return the list of (name,value) pairs for the defined environment variables.
125  Needed to provide the same interface as os.environ.
126  """
127  return self.env.items()
def GaudiTest.TemporaryEnvironment.keys (   self)
Return the list of defined environment variables.
Needed to provide the same interface as os.environ.

Definition at line 114 of file GaudiTest.py.

115  def keys(self):
116  """
117  Return the list of defined environment variables.
118  Needed to provide the same interface as os.environ.
119  """
120  return self.env.keys()
def GaudiTest.TemporaryEnvironment.restore (   self)
Revert all the changes done to the original environment.

Definition at line 135 of file GaudiTest.py.

136  def restore(self):
137  """
138  Revert all the changes done to the original environment.
139  """
140  for key,value in self.old_values.items():
141  if value is None:
142  del self.env[key]
143  else:
144  self.env[key] = value
145  self.old_values = {}

Member Data Documentation

GaudiTest.TemporaryEnvironment._keep_same
private

Definition at line 83 of file GaudiTest.py.

GaudiTest.TemporaryEnvironment.env

Definition at line 82 of file GaudiTest.py.

GaudiTest.TemporaryEnvironment.old_values

Definition at line 81 of file GaudiTest.py.


The documentation for this class was generated from the following file: