Custom Types

You will see types like e.g MinecraftOptions or MinecraftVersionInfo. They are defined in types and microsoft_types. They are all normal Dicts. Let’s take a look at MinecraftVersionInfo:

class MinecraftVersionInfo(TypedDict):
    id: str
    type: str
    releaseTime: datetime.datetime

It means the following: This function returns a Dict with these keys:

  • id: A string

  • type: A string

  • releaseTime: A datetime.datetime

This type definition is just there to help your IDE. The function itself returns just a normal Dict.

version_list = minecraft_launcher_lib.utils.get_version_list()
print(version_list[0]["id"])

print(type(version_list[0]))
# <class 'dict'>

As said above, it is there to help your IDE. When the function definition just say, that it returns a Dict, your IDE will not know what the Dict contains. But when using a TypedDict, your IDE, will exactly know what the Dict contains and can offer your better autocompletion and a better type checking.

You can even use it when you are calling a function:

import minecraft_launcher_lib

options: minecraft_launcher_lib.types.MinecraftOptions = {}
options["username"] = "Test123"

When using a IDE, you will see that it will start autocompleting the keys of the Dict while writing.

For more information about TypedDict see PEP 589.