Robot Framework
variables.py
Go to the documentation of this file.
1 # Copyright 2008-2015 Nokia Networks
2 # Copyright 2016- Robot Framework Foundation
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 # http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 
16 from robot.utils import is_list_like, type_name
17 
18 from .filesetter import VariableFileSetter
19 from .replacer import VariableReplacer
20 from .store import VariableStore
21 from .tablesetter import VariableTableSetter
22 
23 
24 
30 class Variables:
31 
32  def __init__(self):
33  self.storestore = VariableStore(self)
34  self._replacer_replacer = VariableReplacer(self.storestore)
35 
36  def __setitem__(self, name, value):
37  self.storestore.add(name, value)
38 
39  def __getitem__(self, name):
40  return self.storestore.get(name)
41 
42  def __contains__(self, name):
43  return name in self.storestore
44 
45  def resolve_delayed(self):
46  self.storestore.resolve_delayed()
47 
48  def replace_list(self, items, replace_until=None, ignore_errors=False):
49  if not is_list_like(items):
50  raise ValueError("'replace_list' requires list-like input, "
51  "got %s." % type_name(items))
52  return self._replacer_replacer.replace_list(items, replace_until, ignore_errors)
53 
54  def replace_scalar(self, item, ignore_errors=False):
55  return self._replacer_replacer.replace_scalar(item, ignore_errors)
56 
57  def replace_string(self, item, custom_unescaper=None, ignore_errors=False):
58  return self._replacer_replacer.replace_string(item, custom_unescaper, ignore_errors)
59 
60  def set_from_file(self, path_or_variables, args=None, overwrite=False):
61  setter = VariableFileSetter(self.storestore)
62  return setter.set(path_or_variables, args, overwrite)
63 
64  def set_from_variable_table(self, variables, overwrite=False):
65  setter = VariableTableSetter(self.storestore)
66  setter.set(variables, overwrite)
67 
68  def clear(self):
69  self.storestore.clear()
70 
71  def copy(self):
72  variables = Variables()
73  variables.store.data = self.storestore.data.copy()
74  return variables
75 
76  def update(self, variables):
77  self.storestore.update(variables.store)
78 
79  def as_dict(self, decoration=True):
80  return self.storestore.as_dict(decoration=decoration)
Represents a set of variables.
Definition: variables.py:30
def replace_scalar(self, item, ignore_errors=False)
Definition: variables.py:54
def as_dict(self, decoration=True)
Definition: variables.py:79
def replace_string(self, item, custom_unescaper=None, ignore_errors=False)
Definition: variables.py:57
def replace_list(self, items, replace_until=None, ignore_errors=False)
Definition: variables.py:48
def __setitem__(self, name, value)
Definition: variables.py:36
def update(self, variables)
Definition: variables.py:76
def set_from_file(self, path_or_variables, args=None, overwrite=False)
Definition: variables.py:60
def set_from_variable_table(self, variables, overwrite=False)
Definition: variables.py:64
def type_name(item, capitalize=False)
Return "non-technical" type name for objects and types.
Definition: robottypes.py:86
def is_list_like(item)
Definition: robottypes.py:66