VACUMM / sphinx-fortran

Fortran domain and autodoc extensions to Sphinx
Other
45 stars 29 forks source link

error processing files on windows NT system #34

Open ndarmage opened 3 years ago

ndarmage commented 3 years ago

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 commented 3 years ago

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)
...