Search code examples
pythonpython-typing

Python Typing: Given Set of Values


I want to type the parameter of a method to be one of a finite set of valid values. So basically, I would like to have the typing equivalent of the following minimal example:

valid_parameters = ["value", "other value"]

def typed_method(parameter):
    if not parameter in valid_parameters:
        raise ValueError("invalid parameter")

I checked typing already, but I didn't manage to find a solution. Maybe I was just not able to fully understand the documentation. Is there such a solution? Can it be created?


Solution

  • This feature has just been introduced in Python 3.8: typing.Literal. See PEP 586 for details.

    Example:

    def typed_method(parameter: Literal["value", "other value"]):
        pass