-
Notifications
You must be signed in to change notification settings - Fork 49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fortran support may be broken #214
Comments
Thanks for reporting @principis! It seems like either the I will need to fiddle with things, if this is for a packaging build it might be appropriate to disable the test. I will see what I can dig up, I've had this change behavior in the past too and IIRC it was because doxygen changed how the xml worked. |
Thanks for your swift response! I'm packaging exhale for Fedora, I'll disable the test for now. 🙂 |
TL;DR: I'd say that's probably the right call, not much has changed code-wise for a couple of years, the latest release was really just to fix packaging mistakes that were starting to prevent people from installing the project on RTD using PyPI. Hmmmmm... so after some digging around, it seems like at some point the fortran support broke. Possibly for quite some time. The next thing to check for me / anybody interested would be looking at different combinations of sphinx and breathe versions to see if there is a known point where the function signatures exhale was generating actually worked.
In this edge case, tests don't actually necessarily fail, it will just render the warning. To keep all of the builds around (warning: diff --git a/testing/base.py b/testing/base.py
index 3360c81..96a8219 100644
--- a/testing/base.py
+++ b/testing/base.py
@@ -122,7 +122,7 @@ class ExhaleTestCaseMetaclass(type):
yield # the test runs
# @no_cleanup sets self.testroot to [self.testroot] as a flag that
# cleanup should not transpire
- if isinstance(self.testroot, six.string_types):
+ if False and isinstance(self.testroot, six.string_types):
# This cleanup happens between each test case, do not delete docs/
# until all tests for this class are done!
containmentFolder = self.getAbsContainmentFolder()
@@ -207,7 +207,7 @@ class ExhaleTestCaseMetaclass(type):
# perform cleanup by deleting the docs dir
# @no_cleanup sets self.testroot to [self.testroot] as a flag that
# cleanup should not transpire
- if isinstance(self.testroot, six.string_types) and os.path.isdir(self.testroot):
+ if False and isinstance(self.testroot, six.string_types) and os.path.isdir(self.testroot):
shutil.rmtree(self.testroot)
self.testroot = None
@@ -225,6 +225,9 @@ class ExhaleTestCaseMetaclass(type):
self.checkAllFilesGenerated()
self.checkAllFilesIncluded()
+ print("{{{{{ imma building }}}}}")
+ self.app.build()
+
attrs["test_common"] = test_common
# Import the default hierarchy dictionaries from the testing/projects folder
And the place where you can fiddle with the parsing of things is here diff --git a/exhale/graph.py b/exhale/graph.py
index c0d8e86..99d57ad 100644
--- a/exhale/graph.py
+++ b/exhale/graph.py
@@ -2196,7 +2196,16 @@ class ExhaleRoot(object):
# 2. The function parameter list.
parameters = []
for param in memberdef.find_all("param", recursive=False):
- parameters.append(param.type.text)
+ # if param.type.text is not None and 'real(c_float), intent(in)' == param.type.text:
+ if func_refid == "namespaceconversions_1af3f7e870092b4986419a4c8c56aaff63":
+ # import pdb
+ # pdb.set_trace()
+ # (pdb) p param <<< that'll show you the function parameters
+ # these are the beautiful soup (xml) nodes getting parsed
+ # as we're building the {hacky} exhale representation
+ parameters.append(param.defname.text)
+ else:
+ parameters.append(param.type.text)
func.parameters = utils.sanitize_all(parameters)
# 3. The template parameter list.
templateparamlist = memberdef.templateparamlist
Noting that modifying this method directly is also an easy way to hack Line 279 in c995925
There's other known problems even with C++ functions (overloads specifically, some work, some don't) 😶 While I'd love to be able to fix these things, they're usually in a corner case of "no known solution without making significant changes here and in breathe"... When running tests against later versions of sphinx and breathe all kinds of other things broke, so it's not clear if this will get solved anytime soon 😞 |
On Fedora 39 the
CPPFortranMixed.test_hierarchies
test fails:Complete test results: test_output.txt
Version info:
Doxygen version: 1.9.7
Breathe version: 4.35.0
Sphinx version: 6.2.1
Python version: 3.12.1
The text was updated successfully, but these errors were encountered: