22 """Clean everything from the C++ signature that prohibits doxygen from automatically creating the correct link."""
26 if not "(" in sig
or "()" in sig:
29 def strip_defaults_from_param_sig(param_sig):
31 split_was_at_equal_sign = [
False]
34 split_was_at_equal_sign.append(
True)
36 split_was_at_equal_sign.append(
False)
37 l = param_sig.replace(
"=",
",").split(
",")
38 l = [l
for l, was
in zip(l, split_was_at_equal_sign)
if not was]
41 def strip_defaults(sig):
42 pbegin = sig.index(
"(") + 1
43 pend = sig.rindex(
")")
44 param_sig = sig[pbegin:pend]
45 return sig[:pbegin] + strip_defaults_from_param_sig(param_sig) + sig[pend:]
47 def strip_output(sig):
49 tmp = sig[:beg].replace(
"*",
"").replace(
"&",
"")
50 return tmp.strip().split(
" ")[-1] + sig[beg:]
53 sig = sig.replace(
"\n",
" ")
56 sig = sig.replace(
";",
"")
59 sig = strip_defaults(sig)
62 sig = strip_output(sig)
66 sig = sig.replace(
" ",
" ")
118 """Prints the doxygen code for the RooFit pythonization page."""
119 from ROOT._pythonization
import _roofit
121 def member_funcs_have_doc(python_class):
122 funcs_have_doc =
False
123 for func_name
in _roofit.get_defined_attributes(python_klass):
124 if not getattr(python_class, func_name).__doc__
is None:
125 funcs_have_doc =
True
126 return funcs_have_doc
129 print(
r"\defgroup RoofitPythonizations RooFit Pythonizations")
130 print(
r"\ingroup Roofitmain")
131 for python_klass
in _roofit.python_classes:
132 if python_klass.__doc__
is None and not member_funcs_have_doc(python_klass):
134 class_name = python_klass.__name__
135 print(
"- [" + class_name +
"](\\ref _" + class_name.lower() +
")")
137 for func_name
in _roofit.get_defined_attributes(python_klass):
138 func = getattr(python_klass, func_name)
139 if func.__doc__
is None:
141 print(
" - [" + func.__name__ +
"](\\ref _" + (python_klass.__name__ +
"_" + func.__name__).lower() +
")")
146 for python_klass
in _roofit.python_classes:
148 if python_klass.__doc__
is None and not member_funcs_have_doc(python_klass):
151 print(
r"\anchor _" + python_klass.__name__.lower())
152 print(
r"## " + python_klass.__name__)
153 print(
r"\see " + python_klass.__name__)
154 if not python_klass.__doc__
is None:
156 print(inspect.cleandoc(python_klass.__doc__))
159 for func_name
in _roofit.get_defined_attributes(python_klass):
160 func = getattr(python_klass, func_name)
161 if func.__doc__
is None:
163 print(
r"\anchor _" + (python_klass.__name__ +
"_" + func.__name__).lower())
164 print(
r"### " + python_klass.__name__ +
"." + func.__name__)
165 print(inspect.cleandoc(func.__doc__))
167 if hasattr(func,
"_cpp_signature"):
168 sigs = func._cpp_signature
169 if isinstance(sigs, str):