sphinx-fortran icon indicating copy to clipboard operation
sphinx-fortran copied to clipboard

error processing files on windows NT system

Open ndarmage opened this issue 3 years ago • 1 comments

Hello,

when using sphinx-fortran on windows systems, I noticed that the function get_src in module fortran_autodoc.py was wrongly processing filenames with full path stored in block['from']. On win system, a letter is generally used to identify the storage drive, having a column ':' after this letter. The column is used to get the parent block, as in numpy.f2py.crackfortran.py docstring:

B['from'] --- string showing the 'parents' of the current block

This prevents correct execution of sphinx-fortran on win10 for instance.

I suggest the following new version of the function that fixed the issue in my case :

    def get_src(self, block):
        """Get the source lines of the file including this block"""
        srcfile = block['from']
        if os.name != 'nt' or not os.path.isfile(block['from']):
            srcfile = block['from'].split(':')[0]
        return self.src[srcfile]

Thanks for your kind attention. Regards, P.I.: I cannot use a pull request.

ndarmage avatar Apr 08 '21 12:04 ndarmage

Other modification to get the expected behavior on win OS, use the following in function:

    def filter_by_srcfile(self, sfile, mode=None, objtype=None, **kwargs):
...
        for b in self.crack:
            if objtype and objtype != 'all' and b['block'] not in objtype:
                continue
            bfile = b['from']  # new line
            if os.name != 'nt' or not os.path.isfile(bfile):  # new line
                bfile = b['from'].split(':')[0]  # remove module name  / new line
            if mode != 'strict':
                bfile = os.path.basename(bfile)
...

ndarmage avatar Apr 09 '21 14:04 ndarmage