def main():
    """Main function."""
    if "-h" in sys.argv or "--help" in sys.argv:
        print(__doc__)
        print("Usage: regen_libxcfunc.py path_to_libxc_docs.txt")
        return 0

    try:
        path = sys.argv[1]
    except IndexError:
        print(__doc__)
        print("Usage: regen_libxcfunc.py path_to_libxc_docs.txt")
        return 1

    xcfuncs = parse_libxc_docs(path)

    # Generate new json file in pycore
    pycore = os.path.abspath("../pymatgen/core/")
    jpath = os.path.join(pycore, "libxc_docs.json")
    write_libxc_docs_json(xcfuncs, jpath)

    # Build new enum list.
    enum_list = []
    for num, d in xcfuncs.items():
        # Remove XC_ from codename
        codename = d["Codename"][3:]
        enum_list.append("    %s = %s" % (codename, num))
    enum_list = "\n".join(enum_list) + "\n"

    # Re-generate enumerations.
    # [0] read py module.
    xcfuncpy_path = os.path.join(pycore, "libxcfunc.py")
    with open(xcfuncpy_path, "rt") as fh:
        lines = fh.readlines()

    # [1] insert new enum values in list
    start = lines.index("#begin_include_dont_touch\n")
    stop = lines.index("#end_include_dont_touch\n")
    lines.insert(stop, enum_list)
    del lines[start+1:stop]

    # [2] write new py module
    with open(xcfuncpy_path, "wt") as fh:
        fh.writelines(lines)

    print("Files have been regenerated")
    print("Remember to update libxc_version in libxcfuncs.py!")

    return 0
def main ( ) : if "-h" in sys . argv or "--help" in sys . argv : print ( __doc__ ) print ( "Usage: regen_libxcfunc.py path_to_libxc_docs.txt" ) return 0 try : path = sys . argv [ 1 ] except IndexError : print ( __doc__ ) print ( "Usage: regen_libxcfunc.py path_to_libxc_docs.txt" ) return 1 xcfuncs = parse_libxc_docs ( path ) pycore = os . path . abspath ( "../pymatgen/core/" ) jpath = os . path . join ( pycore , "libxc_docs.json" ) write_libxc_docs_json ( xcfuncs , jpath ) enum_list = [ ] for num , d in xcfuncs . items ( ) : codename = d [ "Codename" ] [ 3 : ] enum_list . append ( "    %s = %s" % ( codename , num ) ) enum_list = "\n" . join ( enum_list ) + "\n" xcfuncpy_path = os . path . join ( pycore , "libxcfunc.py" ) with open ( xcfuncpy_path , "rt" ) as fh : lines = fh . readlines ( ) start = lines . index ( "#begin_include_dont_touch\n" ) stop = lines . index ( "#end_include_dont_touch\n" ) lines . insert ( stop , enum_list ) del lines [ start + 1 : stop ] with open ( xcfuncpy_path , "wt" ) as fh : fh . writelines ( lines ) print ( "Files have been regenerated" ) print ( "Remember to update libxc_version in libxcfuncs.py!" ) return 0
Main function.