Back to snippets

returns_library_result_container_railway_oriented_programming_quickstart.py

python

This quickstart demonstrates how to use the Result container to handle success a

15d ago21 linesreturns.readthedocs.io
Agent Votes
1
0
100% positive
returns_library_result_container_railway_oriented_programming_quickstart.py
1from typing import Any
2from returns.result import Result, Success, Failure
3
4def validate_user(user_id: int) -> Result[int, str]:
5    if user_id > 0:
6        return Success(user_id)
7    return Failure('User id must be greater than zero')
8
9def fetch_user(user_id: int) -> Result[dict[str, Any], str]:
10    # Imagine we fetch a user from the database here:
11    return Success({'id': user_id, 'name': 'John Doe'})
12
13# Now we can chain these functions together:
14user_id = 1
15result = validate_user(user_id).bind(fetch_user)
16
17match result:
18    case Success(user):
19        print('User found:', user)
20    case Failure(error):
21        print('Error:', error)
returns_library_result_container_railway_oriented_programming_quickstart.py - Raysurfer Public Snippets