#include <Python.h>
#include "pyepanet.h"
#include "pyepanet2.h"
#include "pyepanetmsx.h"
#include "pyepanet_plus.h"


PyMethodDef EpanetMethods[] = {
    // EPANET-PLUS
    {"ENopenfrombuffer", method_ENopenfrombuffer, METH_VARARGS, "Python interface for ENopenfrombuffer TODO"},
    {"EN_openfrombuffer", method_EN_openfrombuffer, METH_VARARGS, "Python interface for EN_openfrombuffer TODO"},

    // EPANET-MSX
    {"MSXENopen", method_MSXENopen, METH_VARARGS, "Python interface for MSXENopen C function from EPANET-MSX"},
    {"MSXopen", method_MSXopen, METH_VARARGS, "Python interface for MSXopen C function from EPANET-MSX"},
    {"MSXsolveH", method_MSXsolveH, METH_NOARGS, "Python interface for MSXsolveH C function from EPANET-MSX"},
    {"MSXusehydfile", method_MSXusehydfile, METH_VARARGS, "Python interface for MSXusehydfile C function from EPANET-MSX"},
    {"MSXsolveQ", method_MSXsolveQ, METH_NOARGS, "Python interface for MSXsolveQ C function from EPANET-MSX"},
    {"MSXinit", method_MSXinit, METH_VARARGS, "Python interface for MSXinit C function from EPANET-MSX"},
    {"MSXstep", method_MSXstep, METH_VARARGS, "Python interface for MSXstep C function from EPANET-MSX"},
    {"MSXsaveoutfile", method_MSXsaveoutfile, METH_VARARGS, "Python interface for MSXsaveoutfile C function from EPANET-MSX"},
    {"MSXsavemsxfile", method_MSXsavemsxfile, METH_VARARGS, "Python interface for MSXsavemsxfile C function from EPANET-MSX"},
    {"MSXreport", method_MSXreport, METH_NOARGS, "Python interface for MSXreport C function from EPANET-MSX"},
    {"MSXclose", method_MSXclose, METH_NOARGS, "Python interface for MSXclose C function from EPANET-MSX"},
    {"MSXENclose", method_MSXENclose, METH_NOARGS, "Python interface for MSXENclose C function from EPANET-MSX"},
    {"MSXgetindex", method_MSXgetindex, METH_VARARGS, "Python interface for MSXgetindex C function from EPANET-MSX"},
    {"MSXgetIDlen", method_MSXgetIDlen, METH_VARARGS, "Python interface for MSXgetIDlen C function from EPANET-MSX"},
    {"MSXgetID", method_MSXgetID, METH_VARARGS, "Python interface for MSXgetID C function from EPANET-MSX"},
    {"MSXgetcount", method_MSXgetcount, METH_VARARGS, "Python interface for MSXgetcount C function from EPANET-MSX"},
    {"MSXgetspecies", method_MSXgetspecies, METH_VARARGS, "Python interface for MSXgetspecies C function from EPANET-MSX"},
    {"MSXgetconstant", method_MSXgetconstant, METH_VARARGS, "Python interface for MSXgetconstant C function from EPANET-MSX"},
    {"MSXgetparameter", method_MSXgetparameter, METH_VARARGS, "Python interface for MSXgetparameter C function from EPANET-MSX"},
    {"MSXgetsource", method_MSXgetsource, METH_VARARGS, "Python interface for MSXgetsource C function from EPANET-MSX"},
    {"MSXgetpatternlen", method_MSXgetpatternlen, METH_VARARGS, "Python interface for MSXgetpatternlen C function from EPANET-MSX"},
    {"MSXgetpatternvalue", method_MSXgetpatternvalue, METH_VARARGS, "Python interface for MSXgetpatternvalue C function from EPANET-MSX"},
    {"MSXgetinitqual", method_MSXgetinitqual, METH_VARARGS, "Python interface for MSXgetinitqual C function from EPANET-MSX"},
    {"MSXgetqual", method_MSXgetqual, METH_VARARGS, "Python interface for MSXgetqual C function from EPANET-MSX"},
    {"MSXgeterror", method_MSXgeterror, METH_VARARGS, "Python interface for MSXgeterror C function from EPANET-MSX"},
    {"MSXsetconstant", method_MSXsetconstant, METH_VARARGS, "Python interface for MSXsetconstant C function from EPANET-MSX"},
    {"MSXsetparameter", method_MSXsetparameter, METH_VARARGS, "Python interface for MSXsetparameter C function from EPANET-MSX"},
    {"MSXsetinitqual", method_MSXsetinitqual, METH_VARARGS, "Python interface for MSXsetinitqual C function from EPANET-MSX"},
    {"MSXsetsource", method_MSXsetsource, METH_VARARGS, "Python interface for MSXsetsource C function from EPANET-MSX"},
    {"MSXsetpatternvalue", method_MSXsetpatternvalue, METH_VARARGS, "Python interface for MSXsetpatternvalue C function from EPANET-MSX"},
    {"MSXsetpattern", method_MSXsetpattern, METH_VARARGS, "Python interface for MSXsetpattern C function from EPANET-MSX"},
    {"MSXaddpattern", method_MSXaddpattern, METH_VARARGS, "Python interface for MSXaddpattern C function from EPANET-MSX"},

    // EPANET
    {"EN_createproject", method_EN_createproject, METH_NOARGS, "Python interface for EN_createproject C function from EPANET"},
    {"EN_deleteproject", method_EN_deleteproject, METH_VARARGS, "Python interface for EN_deleteproject C function from EPANET"},
    {"EN_init", method_EN_init, METH_VARARGS, "Python interface for EN_init C function from EPANET"},
    {"EN_open", method_EN_open, METH_VARARGS, "Python interface for EN_open C function from EPANET"},
    {"EN_gettitle", method_EN_gettitle, METH_VARARGS, "Python interface for EN_gettitle C function from EPANET"},
    {"EN_settitle", method_EN_settitle, METH_VARARGS, "Python interface for EN_settitle C function from EPANET"},
    {"EN_getcomment", method_EN_getcomment, METH_VARARGS, "Python interface for EN_getcomment C function from EPANET"},
    {"EN_setcomment", method_EN_setcomment, METH_VARARGS, "Python interface for EN_setcomment C function from EPANET"},
    {"EN_getcount", method_EN_getcount, METH_VARARGS, "Python interface for EN_getcount C function from EPANET"},
    {"EN_saveinpfile", method_EN_saveinpfile, METH_VARARGS, "Python interface for EN_saveinpfile C function from EPANET"},
    {"EN_close", method_EN_close, METH_VARARGS, "Python interface for EN_close C function from EPANET"},
    {"EN_solveH", method_EN_solveH, METH_VARARGS, "Python interface for EN_solveH C function from EPANET"},
    {"EN_usehydfile", method_EN_usehydfile, METH_VARARGS, "Python interface for EN_usehydfile C function from EPANET"},
    {"EN_openH", method_EN_openH, METH_VARARGS, "Python interface for EN_openH C function from EPANET"},
    {"EN_initH", method_EN_initH, METH_VARARGS, "Python interface for EN_initH C function from EPANET"},
    {"EN_runH", method_EN_runH, METH_VARARGS, "Python interface for EN_runH C function from EPANET"},
    {"EN_nextH", method_EN_nextH, METH_VARARGS, "Python interface for EN_nextH C function from EPANET"},
    {"EN_saveH", method_EN_saveH, METH_VARARGS, "Python interface for EN_saveH C function from EPANET"},
    {"EN_savehydfile", method_EN_savehydfile, METH_VARARGS, "Python interface for EN_savehydfile C function from EPANET"},
    {"EN_closeH", method_EN_closeH, METH_VARARGS, "Python interface for EN_closeH C function from EPANET"},
    {"EN_solveQ", method_EN_solveQ, METH_VARARGS, "Python interface for EN_solveQ C function from EPANET"},
    {"EN_openQ", method_EN_openQ, METH_VARARGS, "Python interface for EN_openQ C function from EPANET"},
    {"EN_initQ", method_EN_initQ, METH_VARARGS, "Python interface for EN_initQ C function from EPANET"},
    {"EN_runQ", method_EN_runQ, METH_VARARGS, "Python interface for EN_runQ C function from EPANET"},
    {"EN_nextQ", method_EN_nextQ, METH_VARARGS, "Python interface for EN_nextQ C function from EPANET"},
    {"EN_stepQ", method_EN_stepQ, METH_VARARGS, "Python interface for EN_stepQ C function from EPANET"},
    {"EN_closeQ", method_EN_closeQ, METH_VARARGS, "Python interface for EN_closeQ C function from EPANET"},
    {"EN_writeline", method_EN_writeline, METH_VARARGS, "Python interface for EN_writeline C function from EPANET"},
    {"EN_report", method_EN_report, METH_VARARGS, "Python interface for EN_report C function from EPANET"},
    {"EN_copyreport", method_EN_copyreport, METH_VARARGS, "Python interface for EN_copyreport C function from EPANET"},
    {"EN_clearreport", method_EN_clearreport, METH_VARARGS, "Python interface for EN_clearreport C function from EPANET"},
    {"EN_resetreport", method_EN_resetreport, METH_VARARGS, "Python interface for EN_resetreport C function from EPANET"},
    {"EN_setreport", method_EN_setreport, METH_VARARGS, "Python interface for EN_setreport C function from EPANET"},
    {"EN_setstatusreport", method_EN_setstatusreport, METH_VARARGS, "Python interface for EN_setstatusreport C function from EPANET"},
    {"EN_getversion", method_EN_getversion, METH_VARARGS, "Python interface for EN_getversion C function from EPANET"},
    {"EN_geterror", method_EN_geterror, METH_VARARGS, "Python interface for EN_geterror C function from EPANET"},
    {"EN_getstatistic", method_EN_getstatistic, METH_VARARGS, "Python interface for EN_getstatistic C function from EPANET"},
    {"EN_getresultindex", method_EN_getresultindex, METH_VARARGS, "Python interface for EN_getresultindex C function from EPANET"},
    {"EN_getoption", method_EN_getoption, METH_VARARGS, "Python interface for EN_getoption C function from EPANET"},
    {"EN_setoption", method_EN_setoption, METH_VARARGS, "Python interface for EN_setoption C function from EPANET"},
    {"EN_getflowunits", method_EN_getflowunits, METH_VARARGS, "Python interface for EN_getflowunits C function from EPANET"},
    {"EN_setflowunits", method_EN_setflowunits, METH_VARARGS, "Python interface for EN_setflowunits C function from EPANET"},
    {"EN_gettimeparam", method_EN_gettimeparam, METH_VARARGS, "Python interface for EN_gettimeparam C function from EPANET"},
    {"EN_settimeparam", method_EN_settimeparam, METH_VARARGS, "Python interface for EN_settimeparam C function from EPANET"},
    {"EN_getqualinfo", method_EN_getqualinfo, METH_VARARGS, "Python interface for EN_getqualinfo C function from EPANET"},
    {"EN_getqualtype", method_EN_getqualtype, METH_VARARGS, "Python interface for EN_getqualtype C function from EPANET"},
    {"EN_setqualtype", method_EN_setqualtype, METH_VARARGS, "Python interface for EN_setqualtype C function from EPANET"},
    {"EN_addnode", method_EN_addnode, METH_VARARGS, "Python interface for EN_addnode C function from EPANET"},
    {"EN_deletenode", method_EN_deletenode, METH_VARARGS, "Python interface for EN_deletenode C function from EPANET"},
    {"EN_getnodeindex", method_EN_getnodeindex, METH_VARARGS, "Python interface for EN_getnodeindex C function from EPANET"},
    {"EN_getnodeid", method_EN_getnodeid, METH_VARARGS, "Python interface for EN_getnodeid C function from EPANET"},
    {"EN_setnodeid", method_EN_setnodeid, METH_VARARGS, "Python interface for EN_setnodeid C function from EPANET"},
    {"EN_getnodetype", method_EN_getnodetype, METH_VARARGS, "Python interface for EN_getnodetype C function from EPANET"},
    {"EN_getnodevalue", method_EN_getnodevalue, METH_VARARGS, "Python interface for EN_getnodevalue C function from EPANET"},
    {"EN_setnodevalue", method_EN_setnodevalue, METH_VARARGS, "Python interface for EN_setnodevalue C function from EPANET"},
    {"EN_setjuncdata", method_EN_setjuncdata, METH_VARARGS, "Python interface for EN_setjuncdata C function from EPANET"},
    {"EN_settankdata", method_EN_settankdata, METH_VARARGS, "Python interface for EN_settankdata C function from EPANET"},
    {"EN_getcoord", method_EN_getcoord, METH_VARARGS, "Python interface for EN_getcoord C function from EPANET"},
    {"EN_setcoord", method_EN_setcoord, METH_VARARGS, "Python interface for EN_setcoord C function from EPANET"},
    {"EN_getdemandmodel", method_EN_getdemandmodel, METH_VARARGS, "Python interface for EN_getdemandmodel C function from EPANET"},
    {"EN_setdemandmodel", method_EN_setdemandmodel, METH_VARARGS, "Python interface for EN_setdemandmodel C function from EPANET"},
    {"EN_adddemand", method_EN_adddemand, METH_VARARGS, "Python interface for EN_adddemand C function from EPANET"},
    {"EN_deletedemand", method_EN_deletedemand, METH_VARARGS, "Python interface for EN_deletedemand C function from EPANET"},
    {"EN_getdemandindex", method_EN_getdemandindex, METH_VARARGS, "Python interface for EN_getdemandindex C function from EPANET"},
    {"EN_getnumdemands", method_EN_getnumdemands, METH_VARARGS, "Python interface for EN_getnumdemands C function from EPANET"},
    {"EN_getbasedemand", method_EN_getbasedemand, METH_VARARGS, "Python interface for EN_getbasedemand C function from EPANET"},
    {"EN_setbasedemand", method_EN_setbasedemand, METH_VARARGS, "Python interface for EN_setbasedemand C function from EPANET"},
    {"EN_getdemandpattern", method_EN_getdemandpattern, METH_VARARGS, "Python interface for EN_getdemandpattern C function from EPANET"},
    {"EN_setdemandpattern", method_EN_setdemandpattern, METH_VARARGS, "Python interface for EN_setdemandpattern C function from EPANET"},
    {"EN_getdemandname", method_EN_getdemandname, METH_VARARGS, "Python interface for EN_getdemandname C function from EPANET"},
    {"EN_setdemandname", method_EN_setdemandname, METH_VARARGS, "Python interface for EN_setdemandname C function from EPANET"},
    {"EN_addlink", method_EN_addlink, METH_VARARGS, "Python interface for EN_addlink C function from EPANET"},
    {"EN_deletelink", method_EN_deletelink, METH_VARARGS, "Python interface for EN_deletelink C function from EPANET"},
    {"EN_getlinkindex", method_EN_getlinkindex, METH_VARARGS, "Python interface for EN_getlinkindex C function from EPANET"},
    {"EN_getlinkid", method_EN_getlinkid, METH_VARARGS, "Python interface for EN_getlinkid C function from EPANET"},
    {"EN_setlinkid", method_EN_setlinkid, METH_VARARGS, "Python interface for EN_setlinkid C function from EPANET"},
    {"EN_getlinktype", method_EN_getlinktype, METH_VARARGS, "Python interface for EN_getlinktype C function from EPANET"},
    {"EN_setlinktype", method_EN_setlinktype, METH_VARARGS, "Python interface for EN_setlinktype C function from EPANET"},
    {"EN_getlinknodes", method_EN_getlinknodes, METH_VARARGS, "Python interface for EN_getlinknodes C function from EPANET"},
    {"EN_setlinknodes", method_EN_setlinknodes, METH_VARARGS, "Python interface for EN_setlinknodes C function from EPANET"},
    {"EN_getlinkvalue", method_EN_getlinkvalue, METH_VARARGS, "Python interface for EN_getlinkvalue C function from EPANET"},
    {"EN_setlinkvalue", method_EN_setlinkvalue, METH_VARARGS, "Python interface for EN_setlinkvalue C function from EPANET"},
    {"EN_setpipedata", method_EN_setpipedata, METH_VARARGS, "Python interface for EN_setpipedata C function from EPANET"},
    {"EN_getvertexcount", method_EN_getvertexcount, METH_VARARGS, "Python interface for EN_getvertexcount C function from EPANET"},
    {"EN_getvertex", method_EN_getvertex, METH_VARARGS, "Python interface for EN_getvertex C function from EPANET"},
    {"EN_setvertices", method_EN_setvertices, METH_VARARGS, "Python interface for EN_setvertices C function from EPANET"},
    {"EN_getpumptype", method_EN_getpumptype, METH_VARARGS, "Python interface for EN_getpumptype C function from EPANET"},
    {"EN_getheadcurveindex", method_EN_getheadcurveindex, METH_VARARGS, "Python interface for EN_getheadcurveindex C function from EPANET"},
    {"EN_setheadcurveindex", method_EN_setheadcurveindex, METH_VARARGS, "Python interface for EN_setheadcurveindex C function from EPANET"},
    {"EN_addpattern", method_EN_addpattern, METH_VARARGS, "Python interface for EN_addpattern C function from EPANET"},
    {"EN_deletepattern", method_EN_deletepattern, METH_VARARGS, "Python interface for EN_deletepattern C function from EPANET"},
    {"EN_getpatternindex", method_EN_getpatternindex, METH_VARARGS, "Python interface for EN_getpatternindex C function from EPANET"},
    {"EN_getpatternid", method_EN_getpatternid, METH_VARARGS, "Python interface for EN_getpatternid C function from EPANET"},
    {"EN_setpatternid", method_EN_setpatternid, METH_VARARGS, "Python interface for EN_setpatternid C function from EPANET"},
    {"EN_getpatternlen", method_EN_getpatternlen, METH_VARARGS, "Python interface for EN_getpatternlen C function from EPANET"},
    {"EN_getpatternvalue", method_EN_getpatternvalue, METH_VARARGS, "Python interface for EN_getpatternvalue C function from EPANET"},
    {"EN_setpatternvalue", method_EN_setpatternvalue, METH_VARARGS, "Python interface for EN_setpatternvalue C function from EPANET"},
    {"EN_getaveragepatternvalue", method_EN_getaveragepatternvalue, METH_VARARGS, "Python interface for EN_getaveragepatternvalue C function from EPANET"},
    {"EN_setpattern", method_EN_setpattern, METH_VARARGS, "Python interface for EN_setpattern C function from EPANET"},
    {"EN_addcurve", method_EN_addcurve, METH_VARARGS, "Python interface for EN_addcurve C function from EPANET"},
    {"EN_deletecurve", method_EN_deletecurve, METH_VARARGS, "Python interface for EN_deletecurve C function from EPANET"},
    {"EN_getcurveindex", method_EN_getcurveindex, METH_VARARGS, "Python interface for EN_getcurveindex C function from EPANET"},
    {"EN_getcurveid", method_EN_getcurveid, METH_VARARGS, "Python interface for EN_getcurveid C function from EPANET"},
    {"EN_setcurveid", method_EN_setcurveid, METH_VARARGS, "Python interface for EN_setcurveid C function from EPANET"},
    {"EN_getcurvelen", method_EN_getcurvelen, METH_VARARGS, "Python interface for EN_getcurvelen C function from EPANET"},
    {"EN_getcurvetype", method_EN_getcurvetype, METH_VARARGS, "Python interface for EN_getcurvetype C function from EPANET"},
    {"EN_getcurvevalue", method_EN_getcurvevalue, METH_VARARGS, "Python interface for EN_getcurvevalue C function from EPANET"},
    {"EN_setcurvevalue", method_EN_setcurvevalue, METH_VARARGS, "Python interface for EN_setcurvevalue C function from EPANET"},
    {"EN_getcurve", method_EN_getcurve, METH_VARARGS, "Python interface for EN_getcurve C function from EPANET"},
    {"EN_setcurve", method_EN_setcurve, METH_VARARGS, "Python interface for EN_setcurve C function from EPANET"},
    {"EN_addcontrol", method_EN_addcontrol, METH_VARARGS, "Python interface for EN_addcontrol C function from EPANET"},
    {"EN_deletecontrol", method_EN_deletecontrol, METH_VARARGS, "Python interface for EN_deletecontrol C function from EPANET"},
    {"EN_getcontrol", method_EN_getcontrol, METH_VARARGS, "Python interface for EN_getcontrol C function from EPANET"},
    {"EN_setcontrol", method_EN_setcontrol, METH_VARARGS, "Python interface for EN_setcontrol C function from EPANET"},
    {"EN_addrule", method_EN_addrule, METH_VARARGS, "Python interface for EN_addrule C function from EPANET"},
    {"EN_deleterule", method_EN_deleterule, METH_VARARGS, "Python interface for EN_deleterule C function from EPANET"},
    {"EN_getrule", method_EN_getrule, METH_VARARGS, "Python interface for EN_getrule C function from EPANET"},
    {"EN_getruleID", method_EN_getruleID, METH_VARARGS, "Python interface for EN_getruleID C function from EPANET"},
    {"EN_getpremise", method_EN_getpremise, METH_VARARGS, "Python interface for EN_getpremise C function from EPANET"},
    {"EN_setpremise", method_EN_setpremise, METH_VARARGS, "Python interface for EN_setpremise C function from EPANET"},
    {"EN_setpremiseindex", method_EN_setpremiseindex, METH_VARARGS, "Python interface for EN_setpremiseindex C function from EPANET"},
    {"EN_setpremisestatus", method_EN_setpremisestatus, METH_VARARGS, "Python interface for EN_setpremisestatus C function from EPANET"},
    {"EN_setpremisevalue", method_EN_setpremisevalue, METH_VARARGS, "Python interface for EN_setpremisevalue C function from EPANET"},
    {"EN_getthenaction", method_EN_getthenaction, METH_VARARGS, "Python interface for EN_getthenaction C function from EPANET"},
    {"EN_setthenaction", method_EN_setthenaction, METH_VARARGS, "Python interface for EN_setthenaction C function from EPANET"},
    {"EN_getelseaction", method_EN_getelseaction, METH_VARARGS, "Python interface for EN_getelseaction C function from EPANET"},
    {"EN_setelseaction", method_EN_setelseaction, METH_VARARGS, "Python interface for EN_setelseaction C function from EPANET"},
    {"EN_setrulepriority", method_EN_setrulepriority, METH_VARARGS, "Python interface for EN_setrulepriority C function from EPANET"},
    {"EN_gettag", method_EN_gettag, METH_VARARGS, "Python interface for EN_gettag C function from EPANET"},
    {"EN_settag", method_EN_settag, METH_VARARGS, "Python interface for EN_settag C function from EPANET"},
    {"EN_timetonextevent", method_EN_timetonextevent, METH_VARARGS, "Python interface for EN_timetonextevent C function from EPANET"},
    {"EN_getnodevalues", method_EN_getnodevalues, METH_VARARGS, "Python interface for EN_getnodevalues C function from EPANET"},
    {"EN_getlinkvalues", method_EN_getlinkvalues, METH_VARARGS, "Python interface for EN_getlinkvalues C function from EPANET"},
    {"EN_setvertex", method_EN_setvertex, METH_VARARGS, "Python interface for EN_setvertex C function from EPANET"},
    {"EN_loadpatternfile", method_EN_loadpatternfile, METH_VARARGS, "Python interface for EN_loadpatternfile C function from EPANET"},
    {"EN_setcurvetype", method_EN_setcurvetype, METH_VARARGS, "Python interface for EN_setcurvetype C function from EPANET"},
    {"EN_getcontrolenabled", method_EN_getcontrolenabled, METH_VARARGS, "Python interface for EN_getcontrolenabled C function from EPANET"},
    {"EN_setcontrolenabled", method_EN_setcontrolenabled, METH_VARARGS, "Python interface for EN_setcontrolenabled C function from EPANET"},
    {"EN_getruleenabled", method_EN_getruleenabled, METH_VARARGS, "Python interface for EN_getruleenabled C function from EPANET"},
    {"EN_setruleenabled", method_EN_setruleenabled, METH_VARARGS, "Python interface for EN_setruleenabled C function from EPANET"},

    // EPANET 2
    {"ENopen", method_ENopen, METH_VARARGS, "Python interface for ENopen C function from EPANET"},
    {"ENclose", method_ENclose, METH_NOARGS, "Python interface for ENclose C function from EPANET"},
    {"ENaddcontrol", method_ENaddcontrol, METH_VARARGS, "Python interface for ENaddcontrol C function from EPANET"},
    {"ENaddcurve", method_ENaddcurve, METH_VARARGS, "Python interface for ENaddcurve C function from EPANET"},
    {"ENadddemand", method_ENadddemand, METH_VARARGS, "Python interface for ENadddemand C function from EPANET"},
    {"ENaddlink", method_ENaddlink, METH_VARARGS, "Python interface for ENaddlink C function from EPANET"},
    {"ENaddnode", method_ENaddnode, METH_VARARGS, "Python interface for ENaddnode C function from EPANET"},
    {"ENaddpattern", method_ENaddpattern, METH_VARARGS, "Python interface for ENaddpattern C function from EPANET"},
    {"ENaddrule", method_ENaddrule, METH_VARARGS, "Python interface for ENaddrule C function from EPANET"},
    {"ENclearreport", method_ENclearreport, METH_NOARGS, "Python interface for ENclearreport C function from EPANET"},
    {"ENcloseH", method_ENcloseH, METH_NOARGS, "Python interface for ENcloseH C function from EPANET"},
    {"ENcloseQ", method_ENcloseQ, METH_NOARGS, "Python interface for ENcloseQ C function from EPANET"},
    {"ENcopyreport", method_ENcopyreport, METH_VARARGS, "Python interface for ENcopyreport C function from EPANET"},
    {"ENdeletecontrol", method_ENdeletecontrol, METH_VARARGS, "Python interface for ENdeletecontrol C function from EPANET"},
    {"ENdeletecurve", method_ENdeletecurve, METH_VARARGS, "Python interface for ENdeletecurve C function from EPANET"},
    {"ENdeletedemand", method_ENdeletedemand, METH_VARARGS, "Python interface for ENdeletedemand C function from EPANET"},
    {"ENdeletelink", method_ENdeletelink, METH_VARARGS, "Python interface for ENdeletelink C function from EPANET"},
    {"ENdeletenode", method_ENdeletenode, METH_VARARGS, "Python interface for ENdeletenode C function from EPANET"},
    {"ENdeletepattern", method_ENdeletepattern, METH_VARARGS, "Python interface for ENdeletepattern C function from EPANET"},
    {"ENdeleterule", method_ENdeleterule, METH_VARARGS, "Python interface for ENdeleterule C function from EPANET"},
    {"ENgetaveragepatternvalue", method_ENgetaveragepatternvalue, METH_VARARGS, "Python interface for ENgetaveragepatternvalue C function from EPANET"},
    {"ENgetbasedemand", method_ENgetbasedemand, METH_VARARGS, "Python interface for ENgetbasedemand C function from EPANET"},
    {"ENgetcomment", method_ENgetcomment, METH_VARARGS, "Python interface for ENgetcomment C function from EPANET"},
    {"ENgetcontrol", method_ENgetcontrol, METH_VARARGS, "Python interface for ENgetcontrol C function from EPANET"},
    {"ENgetcoord", method_ENgetcoord, METH_VARARGS, "Python interface for ENgetcoord C function from EPANET"},
    {"ENgetcount", method_ENgetcount, METH_VARARGS, "Python interface for ENgetcount C function from EPANET"},
    {"ENgetcurve", method_ENgetcurve, METH_VARARGS, "Python interface for ENgetcurve C function from EPANET"},
    {"ENgetcurveid", method_ENgetcurveid, METH_VARARGS, "Python interface for ENgetcurveid C function from EPANET"},
    {"ENgetcurveindex", method_ENgetcurveindex, METH_VARARGS, "Python interface for ENgetcurveindex C function from EPANET"},
    {"ENgetcurvelen", method_ENgetcurvelen, METH_VARARGS, "Python interface for ENgetcurvelen C function from EPANET"},
    {"ENgetcurvetype", method_ENgetcurvetype, METH_VARARGS, "Python interface for ENgetcurvetype C function from EPANET"},
    {"ENgetcurvevalue", method_ENgetcurvevalue, METH_VARARGS, "Python interface for ENgetcurvevalue C function from EPANET"},
    {"ENgetdemandindex", method_ENgetdemandindex, METH_VARARGS, "Python interface for ENgetdemandindex C function from EPANET"},
    {"ENgetdemandmodel", method_ENgetdemandmodel, METH_NOARGS, "Python interface for ENgetdemandmodel C function from EPANET"},
    {"ENgetdemandname", method_ENgetdemandname, METH_VARARGS, "Python interface for ENgetdemandname C function from EPANET"},
    {"ENgetdemandpattern", method_ENgetdemandpattern, METH_VARARGS, "Python interface for ENgetdemandpattern C function from EPANET"},
    {"ENgetelseaction", method_ENgetelseaction, METH_VARARGS, "Python interface for ENgetelseaction C function from EPANET"},
    {"ENgeterror", method_ENgeterror, METH_VARARGS, "Python interface for ENgeterror C function from EPANET"},
    {"ENgetflowunits", method_ENgetflowunits, METH_NOARGS, "Python interface for ENgetflowunits C function from EPANET"},
    {"ENgetheadcurveindex", method_ENgetheadcurveindex, METH_VARARGS, "Python interface for ENgetheadcurveindex C function from EPANET"},
    {"ENgetlinkid", method_ENgetlinkid, METH_VARARGS, "Python interface for ENgetlinkid C function from EPANET"},
    {"ENgetlinkindex", method_ENgetlinkindex, METH_VARARGS, "Python interface for ENgetlinkindex C function from EPANET"},
    {"ENgetlinknodes", method_ENgetlinknodes, METH_VARARGS, "Python interface for ENgetlinknodes C function from EPANET"},
    {"ENgetlinktype", method_ENgetlinktype, METH_VARARGS, "Python interface for ENgetlinktype C function from EPANET"},
    {"ENgetlinkvalue", method_ENgetlinkvalue, METH_VARARGS, "Python interface for ENgetlinkvalue C function from EPANET"},
    {"ENgetnodeid", method_ENgetnodeid, METH_VARARGS, "Python interface for ENgetnodeid C function from EPANET"},
    {"ENgetnodeindex", method_ENgetnodeindex, METH_VARARGS, "Python interface for ENgetnodeindex C function from EPANET"},
    {"ENgetnodetype", method_ENgetnodetype, METH_VARARGS, "Python interface for ENgetnodetype C function from EPANET"},
    {"ENgetnodevalue", method_ENgetnodevalue, METH_VARARGS, "Python interface for ENgetnodevalue C function from EPANET"},
    {"ENgetnumdemands", method_ENgetnumdemands, METH_VARARGS, "Python interface for ENgetnumdemands C function from EPANET"},
    {"ENgetoption", method_ENgetoption, METH_VARARGS, "Python interface for ENgetoption C function from EPANET"},
    {"ENgetpatternid", method_ENgetpatternid, METH_VARARGS, "Python interface for ENgetpatternid C function from EPANET"},
    {"ENgetpatternindex", method_ENgetpatternindex, METH_VARARGS, "Python interface for ENgetpatternindex C function from EPANET"},
    {"ENgetpatternlen", method_ENgetpatternlen, METH_VARARGS, "Python interface for ENgetpatternlen C function from EPANET"},
    {"ENgetpatternvalue", method_ENgetpatternvalue, METH_VARARGS, "Python interface for ENgetpatternvalue C function from EPANET"},
    {"ENgetpremise", method_ENgetpremise, METH_VARARGS, "Python interface for ENgetpremise C function from EPANET"},
    {"ENgetpumptype", method_ENgetpumptype, METH_VARARGS, "Python interface for ENgetpumptype C function from EPANET"},
    {"ENgetqualinfo", method_ENgetqualinfo, METH_NOARGS, "Python interface for ENgetqualinfo C function from EPANET"},
    {"ENgetqualtype", method_ENgetqualtype, METH_NOARGS, "Python interface for ENgetqualtype C function from EPANET"},
    {"ENgetresultindex", method_ENgetresultindex, METH_VARARGS, "Python interface for ENgetresultindex C function from EPANET"},
    {"ENgetrule", method_ENgetrule, METH_VARARGS, "Python interface for ENgetrule C function from EPANET"},
    {"ENgetruleID", method_ENgetruleID, METH_VARARGS, "Python interface for ENgetruleID C function from EPANET"},
    {"ENgetstatistic", method_ENgetstatistic, METH_VARARGS, "Python interface for ENgetstatistic C function from EPANET"},
    {"ENgetthenaction", method_ENgetthenaction, METH_VARARGS, "Python interface for ENgetthenaction C function from EPANET"},
    {"ENgettimeparam", method_ENgettimeparam, METH_VARARGS, "Python interface for ENgettimeparam C function from EPANET"},
    {"ENgettitle", method_ENgettitle, METH_NOARGS, "Python interface for ENgettitle C function from EPANET"},
    {"ENgetversion", method_ENgetversion, METH_NOARGS, "Python interface for ENgetversion C function from EPANET"},
    {"ENgetvertex", method_ENgetvertex, METH_VARARGS, "Python interface for ENgetvertex C function from EPANET"},
    {"ENgetvertexcount", method_ENgetvertexcount, METH_VARARGS, "Python interface for ENgetvertexcount C function from EPANET"},
    {"ENinit", method_ENinit, METH_VARARGS, "Python interface for ENinit C function from EPANET"},
    {"ENinitH", method_ENinitH, METH_VARARGS, "Python interface for ENinitH C function from EPANET"},
    {"ENinitQ", method_ENinitQ, METH_VARARGS, "Python interface for ENinitQ C function from EPANET"},
    {"ENnextH", method_ENnextH, METH_NOARGS, "Python interface for ENnextH C function from EPANET"},
    {"ENnextQ", method_ENnextQ, METH_NOARGS, "Python interface for ENnextQ C function from EPANET"},
    {"ENopen", method_ENopen, METH_VARARGS, "Python interface for ENopen C function from EPANET"},
    {"ENopenH", method_ENopenH, METH_NOARGS, "Python interface for ENopenH C function from EPANET"},
    {"ENopenQ", method_ENopenQ, METH_NOARGS, "Python interface for ENopenQ C function from EPANET"},
    {"ENreport", method_ENreport, METH_NOARGS, "Python interface for ENreport C function from EPANET"},
    {"ENresetreport", method_ENresetreport, METH_NOARGS, "Python interface for ENresetreport C function from EPANET"},
    {"ENrunH", method_ENrunH, METH_NOARGS, "Python interface for ENrunH C function from EPANET"},
    {"ENrunQ", method_ENrunQ, METH_NOARGS, "Python interface for ENrunQ C function from EPANET"},
    {"ENsaveH", method_ENsaveH, METH_NOARGS, "Python interface for ENsaveH C function from EPANET"},
    {"ENsavehydfile", method_ENsavehydfile, METH_VARARGS, "Python interface for ENsavehydfile C function from EPANET"},
    {"ENsaveinpfile", method_ENsaveinpfile, METH_VARARGS, "Python interface for ENsaveinpfile C function from EPANET"},
    {"ENsetbasedemand", method_ENsetbasedemand, METH_VARARGS, "Python interface for ENsetbasedemand C function from EPANET"},
    {"ENsetcomment", method_ENsetcomment, METH_VARARGS, "Python interface for ENsetcomment C function from EPANET"},
    {"ENsetcontrol", method_ENsetcontrol, METH_VARARGS, "Python interface for ENsetcontrol C function from EPANET"},
    {"ENsetcoord", method_ENsetcoord, METH_VARARGS, "Python interface for ENsetcoord C function from EPANET"},
    {"ENsetcurve", method_ENsetcurve, METH_VARARGS, "Python interface for ENsetcurve C function from EPANET"},
    {"ENsetcurveid", method_ENsetcurveid, METH_VARARGS, "Python interface for ENsetcurveid C function from EPANET"},
    {"ENsetcurvevalue", method_ENsetcurvevalue, METH_VARARGS, "Python interface for ENsetcurvevalue C function from EPANET"},
    {"ENsetdemandmodel", method_ENsetdemandmodel, METH_VARARGS, "Python interface for ENsetdemandmodel C function from EPANET"},
    {"ENsetdemandname", method_ENsetdemandname, METH_VARARGS, "Python interface for ENsetdemandname C function from EPANET"},
    {"ENsetdemandpattern", method_ENsetdemandpattern, METH_VARARGS, "Python interface for ENsetdemandpattern C function from EPANET"},
    {"ENsetelseaction", method_ENsetelseaction, METH_VARARGS, "Python interface for ENsetelseaction C function from EPANET"},
    {"ENsetflowunits", method_ENsetflowunits, METH_VARARGS, "Python interface for ENsetflowunits C function from EPANET"},
    {"ENsetheadcurveindex", method_ENsetheadcurveindex, METH_VARARGS, "Python interface for ENsetheadcurveindex C function from EPANET"},
    {"ENsetjuncdata", method_ENsetjuncdata, METH_VARARGS, "Python interface for ENsetjuncdata C function from EPANET"},
    {"ENsetlinkid", method_ENsetlinkid, METH_VARARGS, "Python interface for ENsetlinkid C function from EPANET"},
    {"ENsetlinknodes", method_ENsetlinknodes, METH_VARARGS, "Python interface for ENsetlinknodes C function from EPANET"},
    {"ENsetlinktype", method_ENsetlinktype, METH_VARARGS, "Python interface for ENsetlinktype C function from EPANET"},
    {"ENsetlinkvalue", method_ENsetlinkvalue, METH_VARARGS, "Python interface for ENsetlinkvalue C function from EPANET"},
    {"ENsetnodeid", method_ENsetnodeid, METH_VARARGS, "Python interface for ENsetnodeid C function from EPANET"},
    {"ENsetnodevalue", method_ENsetnodevalue, METH_VARARGS, "Python interface for ENsetnodevalue C function from EPANET"},
    {"ENsetoption", method_ENsetoption, METH_VARARGS, "Python interface for ENsetoption C function from EPANET"},
    {"ENsetpattern", method_ENsetpattern, METH_VARARGS, "Python interface for ENsetpattern C function from EPANET"},
    {"ENsetpatternid", method_ENsetpatternid, METH_VARARGS, "Python interface for ENsetpatternid C function from EPANET"},
    {"ENsetpatternvalue", method_ENsetpatternvalue, METH_VARARGS, "Python interface for ENsetpatternvalue C function from EPANET"},
    {"ENsetpipedata", method_ENsetpipedata, METH_VARARGS, "Python interface for ENsetpipedata C function from EPANET"},
    {"ENsetpremise", method_ENsetpremise, METH_VARARGS, "Python interface for ENsetpremise C function from EPANET"},
    {"ENsetpremiseindex", method_ENsetpremiseindex, METH_VARARGS, "Python interface for ENsetpremiseindex C function from EPANET"},
    {"ENsetpremisestatus", method_ENsetpremisestatus, METH_VARARGS, "Python interface for ENsetpremisestatus C function from EPANET"},
    {"ENsetpremisevalue", method_ENsetpremisevalue, METH_VARARGS, "Python interface for ENsetpremisevalue C function from EPANET"},
    {"ENsetqualtype", method_ENsetqualtype, METH_VARARGS, "Python interface for ENsetqualtype C function from EPANET"},
    {"ENsetreport", method_ENsetreport, METH_VARARGS, "Python interface forENsetreport C function from EPANET"},
    {"ENsetrulepriority", method_ENsetrulepriority, METH_VARARGS, "Python interface for ENsetrulepriority C function from EPANET"},
    {"ENsetstatusreport", method_ENsetstatusreport, METH_VARARGS, "Python interface for ENsetstatusreport C function from EPANET"},
    {"ENsettankdata", method_ENsettankdata, METH_VARARGS, "Python interface for ENsettankdata C function from EPANET"},
    {"ENsetthenaction", method_ENsetthenaction, METH_VARARGS, "Python interface for ENsetthenaction C function from EPANET"},
    {"ENsettimeparam", method_ENsettimeparam, METH_VARARGS, "Python interface for ENsettimeparam C function from EPANET"},
    {"ENsettitle", method_ENsettitle, METH_VARARGS, "Python interface for ENsettitle C function from EPANET"},
    {"ENsetvertices", method_ENsetvertices, METH_VARARGS, "Python interface for ENsetvertices C function from EPANET"},
    {"ENsolveH", method_ENsolveH, METH_NOARGS, "Python interface for ENsolveH C function from EPANET"},
    {"ENsolveQ", method_ENsolveQ, METH_NOARGS, "Python interface for ENsolveQ C function from EPANET"},
    {"ENstepQ", method_ENstepQ, METH_NOARGS, "Python interface for ENstepQ C function from EPANET"},
    {"ENusehydfile", method_ENusehydfile, METH_VARARGS, "Python interface for ENusehydfile C function from EPANET"},
    {"ENwriteline", method_ENwriteline, METH_VARARGS, "Python interface for ENwriteline C function from EPANET"},
    {"ENgettag", method_ENgettag, METH_VARARGS, "Python interface for ENgettag C function from EPANET"},
    {"ENsettag", method_ENsettag, METH_VARARGS, "Python interface for ENsettag C function from EPANET"},
    {"ENtimetonextevent", method_ENtimetonextevent, METH_VARARGS, "Python interface for ENtimetonextevent C function from EPANET"},
    {"ENgetnodevalues", method_ENgetnodevalues, METH_VARARGS, "Python interface for ENgetnodevalues C function from EPANET"},
    {"ENgetlinkvalues", method_ENgetlinkvalues, METH_VARARGS, "Python interface for ENgetlinkvalues C function from EPANET"},
    {"ENsetvertex", method_ENsetvertex, METH_VARARGS, "Python interface for ENsetvertex C function from EPANET"},
    {"ENloadpatternfile", method_ENloadpatternfile, METH_VARARGS, "Python interface for ENloadpatternfile C function from EPANET"},
    {"ENsetcurvetype", method_ENsetcurvetype, METH_VARARGS, "Python interface for ENsetcurvetype C function from EPANET"},
    {"ENgetcontrolenabled", method_ENgetcontrolenabled, METH_VARARGS, "Python interface for ENgetcontrolenabled C function from EPANET"},
    {"ENsetcontrolenabled", method_ENsetcontrolenabled, METH_VARARGS, "Python interface for ENsetcontrolenabled C function from EPANET"},
    {"ENgetruleenabled", method_ENgetruleenabled, METH_VARARGS, "Python interface for ENgetruleenabled C function from EPANET"},
    {"ENsetruleenabled", method_ENsetruleenabled, METH_VARARGS, "Python interface for ENsetruleenabled C function from EPANET"},
    {NULL, NULL, 0, NULL}
};


struct PyModuleDef epanetmodule = {
    PyModuleDef_HEAD_INIT,
    "epanet",
    "Python interface for EPANET and EPANET-MSX",
    -1,
    EpanetMethods
};

PyMODINIT_FUNC PyInit_epanet(void)
{
    return PyModule_Create(&epanetmodule);
}
