3 This file contains the base DataSource class, and all sub classes that implement their own methods for parsing data.
22 new_node =
node(node_data)
23 self._child_nodes.append(new_node)
41 return "<node data='%s' children=%s>" % (self.
data(), str(self.
children()))
52 return "<data_source>"
60 _data, _sub_data, _file_name =
None,
None,
None
65 contents = "".
join(handle.readlines())
66 data = json.loads(contents)
71 return json_data_node.make(self.
_data)
80 _data, _sub_data, _file_name =
None,
None,
None
86 cursor = connection.cursor()
87 if query_object ==
None:
89 tables = cursor.execute(
"select name from sqlite_master where type = 'table'")
93 for table
in tables.fetchall():
94 table_to_columns[table[0]] = []
96 columns = cursor.execute(
"pragma table_info(%s)" % table[0])
97 for column
in columns.fetchall():
98 table_to_columns[table[0]].
append(str(column[1]))
102 for table
in table_to_columns:
104 column_string =
",".
join(table_to_columns[table])
105 sql_query =
"select %s from %s" % (column_string, table)
106 results = cursor.execute(sql_query).fetchall()
107 for n
in range(0, len(results)):
108 results[n] =
dict(
zip(table_to_columns[table], map(str, results[n])))
109 table_to_data[str(table)] = results
110 self.
_data = json_data_node.make(table_to_data)
112 sql_query = query_object.to_sql()
130 if type(data) == list:
132 elif type(data) == dict:
144 current_json_node = self
146 data_to_use = current_json_node.data()[args[0]]
147 return json_data_node.make(data_to_use)
149 current_json_node = current_json_node.get(key)
150 return current_json_node
160 if type(self.
_data) == type_name:
161 lists.append(self.
_data)
162 if type(self.
_data) == list:
163 for item
in self.
_data:
164 lists += json_data_node.make(item).
find(type_name)
165 elif type(self.
_data) == dict:
166 for key
in self.
_data:
167 lists += json_data_node.make(self.
_data[key]).
find(type_name)
171 return "<json_data_node data='%s'>" % str(self.
_data)
175 iterator_index =
None
178 self.
_data = data
if data !=
None else []
186 data = self.
get(len(self.
data())-1)
190 if data.__class__.__name__
in [
"json_list",
"json_dict",
"json_basic"]:
192 self._data.append(data)
214 for index
in indices:
218 final_list.append(self.
get(index).
data())
224 return json_data_node.make(final_list)
228 if not(type(member_name)
in [str, unicode]):
229 raise TypeError(
"Value given for member name must be a string.")
230 type_of_first_item = self.
data()[0].__class__
231 for item
in self.
data():
232 if item.__class__ != type_of_first_item:
234 return json_data_node.make(map(
lambda item : getattr(item, member_name), self.
data()))
240 if len(self.
data()) == 0:
241 print(
"\nNo data to convert to dictionaries.\n")
244 if self.
get(0).
data().__class__.__name__
in [
"GlobalTag",
"GlobalTagMap",
"Tag",
"IOV",
"Payload"]:
246 new_data = map(
lambda item : item.as_dicts(convert_timestamps=convert_timestamps), [item
for item
in self.
data()])
249 print(
"Data in json_list was not the correct type.")
256 def as_table(self, fit=["all"], columns=None, hide=None, col_width=None, row_nums=False):
258 if len(self.
data()) == 0:
259 print(
"\nNo data to draw table with.\n")
267 if self.
get(0).
data().__class__.__name__
in [
"GlobalTag",
"GlobalTagMap",
"GlobalTagMapRequest",
"Tag",
"IOV",
"Payload"]:
269 from data_formats
import _objects_to_dicts
272 from querying
import connection
277 headers = [header
for header
in models_dict[self.
get(0).
data().__class__.__name__.lower()].headers]
282 headers = data[0].
keys()
288 headers = [
"row"] + headers
291 for i, item
in enumerate(data):
292 data[i][
"row"] = str(i)
297 if col_width ==
None:
299 table_width = int(0.95*int(subprocess.check_output([
"stty",
"size"]).
split(
" ")[1]))
300 col_width = int(table_width/len(headers))
303 for n
in range(0, len(hide)):
304 del headers[headers.index(hide[n])]
306 def max_width_of_column(column, data):
307 max_width_found = len(str(data[0][column]))
309 current_width = len(str(item[column]))
310 if current_width > max_width_found:
311 max_width_found = current_width
312 if max_width_found > len(column):
313 return max_width_found
317 def cell(content, header, col_width, fit):
319 col_width_with_padding = col_width+2
320 col_width_substring = len(str(content))
322 col_width_with_padding = col_width-2
if col_width-2 > 0
else 1
323 col_width_substring = col_width-5
if col_width-7 > 0
else 1
324 return (
"| {:<%s} " % (col_width_with_padding)).
format(str(content)[0:col_width_substring].
replace(
"\n",
"")\
325 + (
"..." if not(fit)
and col_width_substring < len(str(content))
else ""))
335 if not(column
in headers):
336 print(
"'%s' is not a valid column." % column)
339 column_to_width[column] = max_width_of_column(column, data)
340 surplus_width += column_to_width[column]-col_width
342 if len(
set(headers)-
set(fit)) != 0:
343 non_fited_width_surplus = surplus_width/len(
set(headers)-
set(fit))
345 non_fited_width_surplus = 0
347 for column
in headers:
348 if not(column
in fit):
349 column_to_width[column] = col_width - non_fited_width_surplus
351 for column
in headers:
352 column_to_width[column] = max_width_of_column(column, data)
354 ascii_string =
"\n%s\n\n" % table_name
if table_name !=
None else "\n"
355 for header
in headers:
356 ascii_string += cell(header, header, column_to_width[header], header
in fit)
358 horizontal_border =
"\n"
359 ascii_string += horizontal_border
361 for n
in range(0, len(headers)):
362 entry = item[headers[n]]
363 ascii_string += cell(entry, headers[n], column_to_width[headers[n]], headers[n]
in fit)
366 ascii_string += horizontal_border
367 ascii_string +=
"Showing %d rows\n\n" % len(data)
373 self.
_data = data
if data !=
None else {}
376 if data.__class__.__name__
in [
"json_list",
"json_dict",
"json_basic"]:
378 self.
_data[key] = data
384 self.
_data = data
if data !=
None else ""
std::string print(const Track &, edm::Verbosity=edm::Concise)
Track print utility.
boost::dynamic_bitset append(const boost::dynamic_bitset<> &bs1, const boost::dynamic_bitset<> &bs2)
this method takes two bitsets bs1 and bs2 and returns result of bs2 appended to the end of bs1 ...
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)
static std::string join(char **cmd)