WIT supports rich data types like record (structs), variant (enums/unions), and list. When using these in Python, they are mapped to classes and types in the wit_world package.
WIT Definition Example:
world advanced-tool {
export process-user: func(user: user-info) -> result<string, string>;
export handle-event: func(event: app-event) -> result<string, string>;
export process-batch: func(items: list<string>) -> result<list<string>, string>;
}
record user-info {
name: string,
age: u32,
email: string,
}
variant app-event {
user-login(user-info),
user-logout(string),
data-update(string),
}
Python Implementation Example:
from wit_world.types import UserInfo, AppEvent
class AdvancedTool(wit_world.AdvancedTool):
def process_user(self, user: UserInfo) -> str:
return json.dumps({
"processed": True,
"user": {
"name": user.name,
"age": user.age,
"email": user.email
}
})
def handle_event(self, event: AppEvent) -> str:
if isinstance(event, AppEvent.UserLogin):
return f"User {event.value.name} logged in"
elif isinstance(event, AppEvent.UserLogout):
return f"User {event.value} logged out"
# ... handle other variants
def process_batch(self, items: list[str]) -> list[str]:
return [item.upper() for item in items]