What is the correct way in python to annotate a path with type hints?

10,874

I assume that typical path objects are either Paths or strs, as such you could use a Union:

import pathlib
import typing

typing.Union[str, pathlib.Path]
Share:
10,874
Zacharias030
Author by

Zacharias030

Updated on June 05, 2022

Comments

  • Zacharias030
    Zacharias030 about 2 years

    What is the proper way to annotate this simple utility function in python3 that reads from a file? It should accept pathlib.Path objects as well as any other common way of passing a path.

    def read_json(path: <TYPE HINT>):
        with open(path, 'rb') as f:
            data = json.load(f)
        return data
    

    It seems to me as if this topic is in flux and I couldn't find a good place where this information was collected. I am interested in how to handle this in python 3.6, 3.7 and 3.8.

  • Martin Bonner supports Monica
    Martin Bonner supports Monica over 4 years
    Is there anywhere the standard functions are shown with type annotations? I couldn't find one, but "copy the annotation for open would be a good answer.
  • Diogo
    Diogo over 3 years
    open uses file: _OpenFile as annotation, which is the union Union[AnyPath, int].
  • maf88
    maf88 over 3 years
    I use this PathLike = TypeVar("PathLike", str, pathlib.Path, None).