Skip to main content

A small package for effect type in python

Project description


Get inspiration from and Scala type system

Try to support mypy type annotation.

You can use following types from this library

  • Option
  • Some
  • NONE
  • Either
  • Left
  • Right
  • Unit

Option Type Usage

from pyffect import Option, NONE, Some

def findDistanceFromSun(planetName: str) -> Option[str]:
    planetAndDistance = {
        "Mercury": "0.39 AU",
        "Venus": "0.72 AU",
        "Earth": "1.00 AU",
        "Mars": "1.52 AU",
        "Jupiter": "5.20 AU",
        "Saturn": "9.54 AU",
        "Uranus": "19.20 AU",
        "Neptune": "30.06 AU",

    if planetName in planetAndDistance:
        return Some(planetAndDistance[planetName])
        return NONE()

distanceFromJupiterOrNone: Option[str] = findDistanceFromSun("Jupiter")
assert distanceFromJupiterOrNone.isDefined
assert distanceFromJupiterOrNone.value == "5.20 AU"

distanceFromUnknownPlanetOrNone: Option[str] = findDistanceFromSun("Unknown Planet")
assert distanceFromUnknownPlanetOrNone.isEmpty
assert distanceFromUnknownPlanetOrNone.getOrElse("Unknown Distance") == "Unknown Distance"

Either Type Usage

from pyffect import Either, Right, Left

def divide(numerator: int, denominator: int) -> Either[str, float]:
        value = numerator / denominator
        return Right(value)
        return Left('unable to perform the operation.')

firstValue: Either[str, float] = divide(5, 0)
assert firstValue.isLeft
assert firstValue.leftValue == 'unable to perform the operation.'
secondValue: Either[str, float] = divide(5, 2)
assert secondValue.isRight
assert secondValue.rightValue == 2.5

Project details

Download files

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

Source Distribution

pyffect-0.0.2.tar.gz (3.6 kB view hashes)

Uploaded source

Built Distribution

pyffect-0.0.2-py3-none-any.whl (4.7 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page