CMS 3D CMS Logo

PyBind11Module.h
Go to the documentation of this file.
1 #ifndef FWCore_PyDevParameterSet_PyBind11Module_h
2 #define FWCore_PyDevParameterSet_PyBind11Module_h
3 
6 
15 #include <pybind11/stl.h>
16 #include <string>
17 
18 // This is to give some special handling to cms::Exceptions thrown
19 // in C++ code called by python. Only at the very top level do
20 // we need the exception message returned by the function "what".
21 // We only need the central message here as this will get converted
22 // back into a cms::Exception again when control rises back into
23 // the C++ code. If necessary it would probably be possible to
24 // improve these messages even more by adding something in the python
25 // to add module type and label context to the messages being caught
26 // here. At this point we did not think it worth the time to implement.
27 //namespace {
28 // void translatorlibFWCorePythonParameterSet(cms::Exception const& ex) {
29 // PyErr_SetString(PyExc_RuntimeError, ex.message().c_str());
30 // }
31 //}
32 
33 #include <pybind11/pybind11.h>
34 
35 using namespace cmspython3;
36 
37 PYBIND11_MODULE(libFWCorePyDevParameterSet, m) {
38  pybind11::register_exception_translator([](std::exception_ptr p) {
39  try {
40  if (p)
41  std::rethrow_exception(p);
42  } catch (const cms::Exception &e) {
43  PyErr_SetString(PyExc_RuntimeError, e.what());
44  }
45  });
46 
47  pybind11::class_<edm::InputTag>(m, "InputTag")
48  .def(pybind11::init<>())
49  .def(pybind11::init<const std::string &>())
50  .def(pybind11::init<const std::string &, const std::string &, const std::string &>())
51  .def(pybind11::init<const std::string &, const std::string &>())
55 
56  pybind11::class_<edm::ESInputTag>(m, "ESInputTag")
57  .def(pybind11::init<std::string>())
58  .def(pybind11::init<std::string, std::string>())
61 
62  pybind11::class_<edm::EventID>(m, "EventID")
63  .def(pybind11::init<edm::RunNumber_t, edm::LuminosityBlockNumber_t, edm::EventNumber_t>())
64  .def("run", &edm::EventID::run)
65  .def("luminosityBlock", &edm::EventID::luminosityBlock)
66  .def("event", &edm::EventID::event);
67 
68  pybind11::class_<edm::LuminosityBlockID>(m, "LuminosityBlockID")
69  .def(pybind11::init<unsigned int, unsigned int>())
71  .def("luminosityBlock", &edm::LuminosityBlockID::luminosityBlock);
72 
73  pybind11::class_<edm::FileInPath>(m, "FileInPath")
74  .def(pybind11::init<std::string>())
75  .def("fullPath", &edm::FileInPath::fullPath)
76  .def("relativePath", &edm::FileInPath::relativePath);
77 
78  pybind11::class_<edm::LuminosityBlockRange>(m, "LuminosityBlockRange")
79  .def(pybind11::init<unsigned int, unsigned int, unsigned int, unsigned int>())
81  .def("startSub", &edm::LuminosityBlockRange::startLumi)
83  .def("endSub", &edm::LuminosityBlockRange::endLumi);
84 
85  pybind11::class_<edm::EventRange>(m, "EventRange")
92  .def("start", &edm::EventRange::startRun)
93  .def("startLumi", &edm::EventRange::startLumi)
94  .def("startSub", &edm::EventRange::startEvent)
95  .def("end", &edm::EventRange::endRun)
96  .def("endLumi", &edm::EventRange::endLumi)
97  .def("endSub", &edm::EventRange::endEvent);
98 
99  pybind11::class_<Python11ParameterSet>(m, "ParameterSet")
100  .def(pybind11::init<>())
101  .def("addInt32", &Python11ParameterSet::addParameter<int>)
102  .def("getInt32", &Python11ParameterSet::getParameter<int>)
103  .def("addVInt32", &Python11ParameterSet::addParameters<int>)
104  .def("getVInt32", &Python11ParameterSet::getParameters<int>)
105  .def("addUInt32", &Python11ParameterSet::addParameter<unsigned int>)
106  .def("getUInt32", &Python11ParameterSet::getParameter<unsigned int>)
107  .def("addVUInt32", &Python11ParameterSet::addParameters<unsigned int>)
108  .def("getVUInt32", &Python11ParameterSet::getParameters<unsigned int>)
109  .def("addInt64", &Python11ParameterSet::addParameter<long long>)
110  .def("getInt64", &Python11ParameterSet::getParameter<long long>)
111  .def("addUInt64", &Python11ParameterSet::addParameter<unsigned long long>)
112  .def("getUInt64", &Python11ParameterSet::getParameter<unsigned long long>)
113  .def("addVInt64", &Python11ParameterSet::addParameters<long long>)
114  .def("getVInt64", &Python11ParameterSet::getParameters<long long>)
115  .def("addVUInt64", &Python11ParameterSet::addParameters<unsigned long long>)
116  .def("getVUInt64", &Python11ParameterSet::getParameters<unsigned long long>)
117  .def("addDouble", &Python11ParameterSet::addParameter<double>)
118  .def("getDouble", &Python11ParameterSet::getParameter<double>)
119  .def("addVDouble", &Python11ParameterSet::addParameters<double>)
120  .def("getVDouble", &Python11ParameterSet::getParameters<double>)
121  .def("addBool", &Python11ParameterSet::addParameter<bool>)
122  .def("getBool", &Python11ParameterSet::getParameter<bool>)
123  .def("addString", &Python11ParameterSet::addParameter<std::string>)
124  .def("getString", &Python11ParameterSet::getParameter<std::string>)
125  .def("addVString", &Python11ParameterSet::addParameters<std::string>)
126  .def("getVString", &Python11ParameterSet::getParameters<std::string>)
127  .def("addInputTag", &Python11ParameterSet::addParameter<edm::InputTag>)
128  .def("getInputTag", &Python11ParameterSet::getParameter<edm::InputTag>)
129  .def("addVInputTag", &Python11ParameterSet::addParameters<edm::InputTag>)
130  .def("getVInputTag", &Python11ParameterSet::getParameters<edm::InputTag>)
131  .def("addESInputTag", &Python11ParameterSet::addParameter<edm::ESInputTag>)
132  .def("getESInputTag", &Python11ParameterSet::getParameter<edm::ESInputTag>)
133  .def("addVESInputTag", &Python11ParameterSet::addParameters<edm::ESInputTag>)
134  .def("getVESInputTag", &Python11ParameterSet::getParameters<edm::ESInputTag>)
135  .def("addEventID", &Python11ParameterSet::addParameter<edm::EventID>)
136  .def("getEventID", &Python11ParameterSet::getParameter<edm::EventID>)
137  .def("addVEventID", &Python11ParameterSet::addParameters<edm::EventID>)
138  .def("getVEventID", &Python11ParameterSet::getParameters<edm::EventID>)
139  .def("addLuminosityBlockID", &Python11ParameterSet::addParameter<edm::LuminosityBlockID>)
140  .def("getLuminosityBlockID", &Python11ParameterSet::getParameter<edm::LuminosityBlockID>)
141  .def("addVLuminosityBlockID", &Python11ParameterSet::addParameters<edm::LuminosityBlockID>)
142  .def("getVLuminosityBlockID", &Python11ParameterSet::getParameters<edm::LuminosityBlockID>)
143  .def("addLuminosityBlockRange", &Python11ParameterSet::addParameter<edm::LuminosityBlockRange>)
144  .def("getLuminosityBlockRange", &Python11ParameterSet::getParameter<edm::LuminosityBlockRange>)
145  .def("addVLuminosityBlockRange", &Python11ParameterSet::addParameters<edm::LuminosityBlockRange>)
146  .def("getVLuminosityBlockRange", &Python11ParameterSet::getParameters<edm::LuminosityBlockRange>)
147  .def("addEventRange", &Python11ParameterSet::addParameter<edm::EventRange>)
148  .def("getEventRange", &Python11ParameterSet::getParameter<edm::EventRange>)
149  .def("addVEventRange", &Python11ParameterSet::addParameters<edm::EventRange>)
150  .def("getVEventRange", &Python11ParameterSet::getParameters<edm::EventRange>)
151  .def("addPSet", &Python11ParameterSet::addPSet)
152  .def("getPSet", &Python11ParameterSet::getPSet)
153  .def("addVPSet", &Python11ParameterSet::addVPSet)
154  .def("getVPSet", &Python11ParameterSet::getVPSet)
155  .def("addFileInPath", &Python11ParameterSet::addParameter<edm::FileInPath>)
156  .def("getFileInPath", &Python11ParameterSet::getParameter<edm::FileInPath>)
157  .def("newInputTag", &Python11ParameterSet::newInputTag)
158  .def("newESInputTag", &Python11ParameterSet::newESInputTag)
159  .def("newEventID", &Python11ParameterSet::newEventID)
160  .def("newLuminosityBlockID", &Python11ParameterSet::newLuminosityBlockID)
161  .def("newLuminosityBlockRange", &Python11ParameterSet::newLuminosityBlockRange)
162  .def("newEventRange", &Python11ParameterSet::newEventRange)
163  .def("addNewFileInPath", &Python11ParameterSet::addNewFileInPath)
164  .def("newPSet", &Python11ParameterSet::newPSet)
165  .def("dump", &Python11ParameterSet::dump);
166 
167  pybind11::class_<PyBind11ProcessDesc>(m, "ProcessDesc") //, pybind11::init<>())
168  .def(pybind11::init<>())
169  .def(pybind11::init<std::string>())
170  .def("newPSet", &PyBind11ProcessDesc::newPSet)
172  .def("dump", &PyBind11ProcessDesc::dump);
173 }
174 
175 #endif
RunNumber_t run() const
Definition: EventID.h:39
EventNumber_t event() const
Definition: EventID.h:41
Python11ParameterSet newPSet() const
def copy(args, dbName)
void addVPSet(bool tracked, std::string const &name, pybind11::list value)
int init
Definition: HydjetWrapper.h:67
unsigned long long EventNumber_t
char const * what() const override
Definition: Exception.cc:103
RunNumber_t startRun() const
Definition: EventRange.h:46
LuminosityBlockNumber_t luminosityBlock() const
Definition: EventID.h:40
unsigned int LuminosityBlockNumber_t
void addPSet(bool tracked, std::string const &name, Python11ParameterSet const &ppset)
LuminosityBlockNumber_t startLumi() const
Python11ParameterSet newPSet() const
RunNumber_t endRun() const
Definition: EventRange.h:47
EventNumber_t endEvent() const
Definition: EventRange.h:51
edm::InputTag newInputTag(std::string const &label, std::string const &instance, std::string const &process)
Python11ParameterSet getPSet(bool tracked, std::string const &name) const
RunNumber_t run() const
edm::LuminosityBlockRange newLuminosityBlockRange(unsigned int start, unsigned int startSub, unsigned int end, unsigned int endSub)
const std::string & data() const
Definition: ESInputTag.h:104
RunNumber_t startRun() const
LuminosityBlockNumber_t endLumi() const
Definition: EventRange.h:49
pybind11::list getVPSet(bool tracked, std::string const &name)
EventNumber_t startEvent() const
Definition: EventRange.h:50
LuminosityBlockNumber_t luminosityBlock() const
void addNewFileInPath(bool tracked, std::string const &name, std::string const &value)
std::string const & label() const
Definition: InputTag.h:36
LuminosityBlockNumber_t startLumi() const
Definition: EventRange.h:48
std::string const & process() const
Definition: InputTag.h:40
Python11ParameterSet & pset()
edm::ESInputTag newESInputTag(std::string const &module, std::string const &data)
std::string fullPath() const
Definition: FileInPath.cc:163
RunNumber_t endRun() const
edm::EventRange newEventRange(edm::RunNumber_t start, edm::LuminosityBlockNumber_t startLumi, edm::EventNumber_t startSub, edm::RunNumber_t end, edm::LuminosityBlockNumber_t endLumi, edm::EventNumber_t endSub)
unsigned int RunNumber_t
LuminosityBlockNumber_t endLumi() const
std::string relativePath() const
Definition: FileInPath.cc:159
const std::string & module() const
Definition: ESInputTag.h:99
edm::EventID newEventID(edm::RunNumber_t run, edm::LuminosityBlockNumber_t lumi, edm::EventNumber_t event)
edm::LuminosityBlockID newLuminosityBlockID(unsigned int run, unsigned int lumi)
JetCorrectorParameters::Definitions def
Definition: classes.h:6
std::string const & instance() const
Definition: InputTag.h:37
PYBIND11_MODULE(libFWCorePyDevParameterSet, m)