The Gaudi Framework  v32r2 (46d42edc)
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 78 of file GaudiTest.py.

Constructor & Destructor Documentation

◆ __init__()

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 83 of file GaudiTest.py.

83  def __init__(self, orig=os.environ, keep_same=False):
84  """
85  Create a temporary environment on top of the one specified
86  (it can be another TemporaryEnvironment instance).
87  """
88  # print "New environment"
89  self.old_values = {}
90  self.env = orig
91  self._keep_same = keep_same
92 

◆ __del__()

def GaudiTest.TemporaryEnvironment.__del__ (   self)
Revert the changes on destruction.

Definition at line 154 of file GaudiTest.py.

154  def __del__(self):
155  """
156  Revert the changes on destruction.
157  """
158  # print "Restoring the environment"
159  self.restore()
160 

Member Function Documentation

◆ __contains__()

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

Definition at line 136 of file GaudiTest.py.

136  def __contains__(self, key):
137  """
138  Operator 'in'.
139  Needed to provide the same interface as os.environ.
140  """
141  return key in self.env
142 

◆ __delitem__()

def GaudiTest.TemporaryEnvironment.__delitem__ (   self,
  key 
)
Unset an environment variable.
Needed to provide the same interface as os.environ.

Definition at line 112 of file GaudiTest.py.

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

◆ __getitem__()

def GaudiTest.TemporaryEnvironment.__getitem__ (   self,
  key 
)
Get an environment variable.
Needed to provide the same interface as os.environ.

Definition at line 105 of file GaudiTest.py.

105  def __getitem__(self, key):
106  """
107  Get an environment variable.
108  Needed to provide the same interface as os.environ.
109  """
110  return self.env[key]
111 

◆ __setitem__()

def GaudiTest.TemporaryEnvironment.__setitem__ (   self,
  key,
  value 
)
Set an environment variable recording the previous value.

Definition at line 93 of file GaudiTest.py.

93  def __setitem__(self, key, value):
94  """
95  Set an environment variable recording the previous value.
96  """
97  if key not in self.old_values:
98  if key in self.env:
99  if not self._keep_same or self.env[key] != value:
100  self.old_values[key] = self.env[key]
101  else:
102  self.old_values[key] = None
103  self.env[key] = value
104 

◆ gen_script()

def GaudiTest.TemporaryEnvironment.gen_script (   self,
  shell_type 
)
Generate a shell script to reproduce the changes in the environment.

Definition at line 161 of file GaudiTest.py.

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

◆ items()

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 129 of file GaudiTest.py.

129  def items(self):
130  """
131  Return the list of (name,value) pairs for the defined environment variables.
132  Needed to provide the same interface as os.environ.
133  """
134  return self.env.items()
135 

◆ keys()

def GaudiTest.TemporaryEnvironment.keys (   self)
Return the list of defined environment variables.
Needed to provide the same interface as os.environ.

Definition at line 122 of file GaudiTest.py.

122  def keys(self):
123  """
124  Return the list of defined environment variables.
125  Needed to provide the same interface as os.environ.
126  """
127  return self.env.keys()
128 

◆ restore()

def GaudiTest.TemporaryEnvironment.restore (   self)
Revert all the changes done to the original environment.

Definition at line 143 of file GaudiTest.py.

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

Member Data Documentation

◆ _keep_same

GaudiTest.TemporaryEnvironment._keep_same
private

Definition at line 91 of file GaudiTest.py.

◆ env

GaudiTest.TemporaryEnvironment.env

Definition at line 90 of file GaudiTest.py.

◆ old_values

GaudiTest.TemporaryEnvironment.old_values

Definition at line 89 of file GaudiTest.py.


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