#!/usr/bin/env python3

###########################################################################################
#  package:   Gtools
#  file:      pplot
#  brief:     
#  copyright: GPLv3
#             Copyright (C) 2019 EPFL (Ecole Polytechnique Federale de Lausanne)
#             LASTRO - Laboratory of Astrophysics of EPFL
#  author:    Yves Revaz <yves.revaz@epfl.ch>
#
# This file is part of Gtools.
###########################################################################################


import argparse
from h5py import File


description="Print the description of all particles attributes."
epilog     ="""
Examples:
--------
sw_getDescriptionFields file1.hdf5 file2.hdf5
"""

parser = argparse.ArgumentParser(description=description,epilog=epilog,formatter_class=argparse.RawDescriptionHelpFormatter)


parser.add_argument(action="store", 
                    dest="files", 
                    metavar='FILE', 
                    type=str,
                    default=None,
                    nargs='*',
                    help='files') 
                    
                    

########################################################################
# MAIN
########################################################################

units = "Expression for physical CGS units"

if __name__ == '__main__':

    opt = parser.parse_args()
    
    for filename in opt.files: 
      with File(filename, "r") as f:
         for i in range(6):
             name = "PartType%i" % i
             if name not in f:
                 continue
      
             print()
             print(name)
             print()
                   
             part = f[name]                    
             for d in part:
                                
                 try:
                   descr = part[d].attrs["Description"].decode("utf8")
                   u = part[d].attrs[units].decode("utf8")
                 
                   s = "\t{0:30s} ({1:s})".format(d,u)
                   print(s)
                   s = "\t{0:s}\n".format(descr)
                   print(s)
                 except:
                   print(d)  
                 
                 #print(d, ": ", descr, " in ", u)




