Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

Rust like Option and Result types in Python

Project description


Build Status codecov

Rust-like Option and Result types in Python, slotted and fully typed.

An Option type represents an optional value, every Option is either Some and contains Some value, or NONE

A Result type represents a value that might be an error. Every Result is either Ok and contains a success value, or Err and contains an error value.

Using an Option type forces you to deal with None values in your code and increase type safety.

Using a Result type simplifies error handling and reduces try except blocks.

Quick Start

from option import Result, Option, Ok, Err
from requests import get

def call_api(url, params) -> Result[dict, int]:
    result = get(url, params)
    code = result.status_code
    if code == 200:
        return Ok(result.json())
    return Err(code)

def calculate(url, params) -> Option[int]:
    return call_api(url, params).ok().map(len)

dict_len = calculate('', {})


Option can be installed from PyPi:

pip install option


The documentation lives at



Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for option, version 1.0.1
Filename, size File type Python version Upload date Hashes
Filename, size option-1.0.1-py3-none-any.whl (11.7 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size option-1.0.1.tar.gz (7.7 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page