95 parser = argparse.ArgumentParser(description=
'This script reads metadata from a given file')
96 parser.add_argument(
'filenames',
98 help=
'The filenames to read. User can provide a single file or a list of files.')
99 parser.add_argument(
'-v',
102 help=
'print detailed output on screen')
103 parser.add_argument(
'-o',
107 help=
"Saves the output in a file. By default, the output is written on the screen (stdout) in a prettier format for better readabiilty.")
108 parser.add_argument(
'--json',
110 help=
"Sets the output file format as json.")
111 parser.add_argument(
'--indent',
115 help=
"Sets the indent spaces in the output either on screen (without -o flag) either on file (with -o flag). By default, uses two spaces as indent.")
116 parser.add_argument(
'-m',
121 choices=[
'tiny',
'lite',
'full',
'peeker',
'iov'],
122 help=
"This flag provides the user capability to select the amount of metadata retrieved. There are five options: "
123 "tiny (only those values used in PyJobTransforms), "
126 "full (all available data found), "
127 "and iov (full+iov details)" )
129 parser.add_argument(
'-t',
134 choices=[
'POOL',
'BS'],
135 help=
"The file type of the input filename. By default, it tries to determine itself the file type of the input.")
136 parser.add_argument(
'-f',
142 help=
"The metadata keys to filter. ")
143 parser.add_argument(
'--promote',
146 help=
"Force promotion or not of the metadata keys ")
147 parser.add_argument(
'--hideContentList',
149 help=
"Hide content lists (event-level and metadata containers)")
150 parser.add_argument(
'--hideTrigger',
152 help=
"Hide trigger metadata")
153 args = parser.parse_args()
155 verbose = args.verbose
156 filenames = args.filenames
161 file_type = args.type
162 meta_key_filter = args.filter
164 msg.setLevel(logging.INFO
if verbose
else logging.WARNING)
166 handler = logging.StreamHandler()
167 handler.setLevel(logging.INFO
if verbose
else logging.WARNING)
169 formatter = logging.Formatter(
'%(name)s %(levelname)s %(message)s')
170 handler.setFormatter(formatter)
172 msg.addHandler(handler)
174 startTime = time.time()
175 msg.info(
'Imported headers in: {0} miliseconds'.
format((time.time() - startTime) * 1e3))
176 msg.info(
'The output file is: {0}'.
format(output))
177 metadata =
read_metadata(filenames, file_type, mode= mode, meta_key_filter= meta_key_filter, promote=args.promote)
181 print(json.dumps(metadata, indent=indent))
183 enc = sys.stdout.encoding
184 ascii =
not sys.stdout.isatty()
or not enc
or enc.lower().
find(
'ansi') >= 0
or enc.lower().
find(
'ascii') >= 0
185 print(
_tree_print(metadata, indent=indent, pad=18, dict_sort=
'key', list_max_items=8, ascii=ascii,
186 hide_content=args.hideContentList, hide_trigger=args.hideTrigger))
190 with open(output,
'w')
as fd:
191 print(json.dumps(metadata, indent=indent), file=fd)
193 with open(output,
'w')
as fd:
194 print(
_tree_print(metadata, indent=indent, pad=18, dict_sort=
'key', list_max_items=8, ascii=
True,
195 hide_content=args.hideContentList, hide_trigger=args.hideTrigger),