The Gaudi Framework  v30r3 (a5ef0a68)
GaudiTest.TemporaryEnvironment Class Reference

Utility Classes. More...

Public Member Functions

def __init__ (self, orig=os.environ, keep_same=False)
 
def __setitem__ (self, key, value)
 
def __getitem__ (self, key)
 
def __delitem__ (self, key)
 
def keys (self)
 
def items (self)
 
def __contains__ (self, key)
 
def restore (self)
 
def __del__ (self)
 
def gen_script (self, shell_type)
 

Public Attributes

 old_values
 
 env
 

Private Attributes

 _keep_same
 

Detailed Description

Utility Classes.

Class to changes the environment temporarily.

Definition at line 75 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 80 of file GaudiTest.py.

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

Definition at line 151 of file GaudiTest.py.

151  def __del__(self):
152  """
153  Revert the changes on destruction.
154  """
155  # print "Restoring the environment"
156  self.restore()
157 

Member Function Documentation

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

Definition at line 133 of file GaudiTest.py.

133  def __contains__(self, key):
134  """
135  Operator 'in'.
136  Needed to provide the same interface as os.environ.
137  """
138  return key in self.env
139 
def GaudiTest.TemporaryEnvironment.__delitem__ (   self,
  key 
)
Unset an environment variable.
Needed to provide the same interface as os.environ.

Definition at line 109 of file GaudiTest.py.

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

Definition at line 102 of file GaudiTest.py.

102  def __getitem__(self, key):
103  """
104  Get an environment variable.
105  Needed to provide the same interface as os.environ.
106  """
107  return self.env[key]
108 
def GaudiTest.TemporaryEnvironment.__setitem__ (   self,
  key,
  value 
)
Set an environment variable recording the previous value.

Definition at line 90 of file GaudiTest.py.

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

Definition at line 158 of file GaudiTest.py.

158  def gen_script(self, shell_type):
159  """
160  Generate a shell script to reproduce the changes in the environment.
161  """
162  shells = ['csh', 'sh', 'bat']
163  if shell_type not in shells:
164  raise RuntimeError(
165  "Shell type '%s' unknown. Available: %s" % (shell_type, shells))
166  out = ""
167  for key, value in self.old_values.items():
168  if key not in self.env:
169  # unset variable
170  if shell_type == 'csh':
171  out += 'unsetenv %s\n' % key
172  elif shell_type == 'sh':
173  out += 'unset %s\n' % key
174  elif shell_type == 'bat':
175  out += 'set %s=\n' % key
176  else:
177  # set variable
178  if shell_type == 'csh':
179  out += 'setenv %s "%s"\n' % (key, self.env[key])
180  elif shell_type == 'sh':
181  out += 'export %s="%s"\n' % (key, self.env[key])
182  elif shell_type == 'bat':
183  out += 'set %s=%s\n' % (key, self.env[key])
184  return out
185 
186 
def gen_script(self, shell_type)
Definition: GaudiTest.py:158
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 126 of file GaudiTest.py.

126  def items(self):
127  """
128  Return the list of (name,value) pairs for the defined environment variables.
129  Needed to provide the same interface as os.environ.
130  """
131  return self.env.items()
132 
def GaudiTest.TemporaryEnvironment.keys (   self)
Return the list of defined environment variables.
Needed to provide the same interface as os.environ.

Definition at line 119 of file GaudiTest.py.

119  def keys(self):
120  """
121  Return the list of defined environment variables.
122  Needed to provide the same interface as os.environ.
123  """
124  return self.env.keys()
125 
def GaudiTest.TemporaryEnvironment.restore (   self)
Revert all the changes done to the original environment.

Definition at line 140 of file GaudiTest.py.

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

Member Data Documentation

GaudiTest.TemporaryEnvironment._keep_same
private

Definition at line 88 of file GaudiTest.py.

GaudiTest.TemporaryEnvironment.env

Definition at line 87 of file GaudiTest.py.

GaudiTest.TemporaryEnvironment.old_values

Definition at line 86 of file GaudiTest.py.


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