Stringify _py3.PathDistribution._path for joining

Since under Windows, that path ends up as pathlib.WindowsPath, which is not directly compatible with os.path.join and therefore leads to an exception in PathDistribution.load_metadata():

>>> import importlib_metadata
>>> importlib_metadata.version('path.py')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
...

~\Projects\importlib\metadata\importlib_metadata\api.py in metadata(self)
     74         """
     75         return email.message_from_string(
---> 76             self.load_metadata('METADATA') or self.load_metadata('PKG-INFO')
     77             )
     78

~\Projects\importlib\metadata\importlib_metadata\_py3.py in load_metadata(self, name)
     65         :return: The metadata string if found, otherwise None.
     66         """
---> 67         filename = os.path.join(self._path, name)
     68         with contextlib.suppress(FileNotFoundError):
     69             with open(filename, encoding='utf-8') as fp:

c:\tools\miniconda3\envs\moon\lib\ntpath.py in join(path, *paths)
    111         return result_drive + result_path
    112     except (TypeError, AttributeError, BytesWarning):
--> 113         genericpath._check_arg_types('join', path, *paths)
    114         raise
    115

c:\tools\miniconda3\envs\moon\lib\genericpath.py in _check_arg_types(funcname, *args)
    141         else:
    142             raise TypeError('%s() argument must be str or bytes, not %r' %
--> 143                             (funcname, s.__class__.__name__)) from None
    144     if hasstr and hasbytes:
    145         raise TypeError("Can't mix strings and bytes in path components") from None

TypeError: join() argument must be str or bytes, not 'WindowsPath'

Merge request reports

Loading
Loading