Skip to main content

dry-monads

wemake.services Build Status Coverage Status Documentation Status Python Version wemake-python-styleguide

Monads for python made simple and safe.

Features

  • Provides primitives to write declarative business logic
  • Fully typed with annotations and checked with mypy, allowing you to write type-safe code as well
  • No operator overloading or other unpythonic stuff that makes your eyes bleed

Installation

pip install dry-monads

What's inside?

We have several the most iconic monads inside:

We also care about code readability and developer experience, so we have included some useful features to make your life easier:

Example

from dry_monads.do_notation import do_notation
from dry_monads.either import Result, Success, Failure

class CreateAccountAndUser(object):
    """Creates new Account-User pair."""

    @do_notation
    def __call__(self, username: str, email: str) -> Result['User', str]:
        """Can return a Success(user) or Failure(str_reason)."""
        user_schema = self._validate_user(username, email).unwrap()
        account = self._create_account(user_schema).unwrap()
        return self._create_user(account)

    # Protected methods
    # ...

We are covering what's going on in this example in the docs.

Inspirations

This module is heavily based on:

Download files

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

Source Distribution

dry-monads-0.2.0.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dry_monads-0.2.0-py3-none-any.whl (22.9 kB view details)

Uploaded Python 3

File details

Details for the file dry-monads-0.2.0.tar.gz.

File metadata

  • Download URL: dry-monads-0.2.0.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.11 CPython/3.6.6 Darwin/18.2.0

File hashes

Hashes for dry-monads-0.2.0.tar.gz
Algorithm Hash digest
SHA256 dde7d4160473b469032719cdf8449d716501de379de653d053b6909de4a84477
MD5 25e0fa3156c5800d8c21a6b4c272e620
BLAKE2b-256 a8b97eeb4827ea3f1c97020923263b4c3457a1fc8f6bbdb14f487392cb7705bb

See more details on using hashes here.

File details

Details for the file dry_monads-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: dry_monads-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 22.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.11 CPython/3.6.6 Darwin/18.2.0

File hashes

Hashes for dry_monads-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 64828e97d308052e95bd1233e7bf5b7a1f76c10e18a0d565b6f763a8c17f8cfe
MD5 829d963dfaeaaf3b8e93ea860f21158f
BLAKE2b-256 b60e5ad9a35e1c1b500637230416d13d69f723777973192e6e94102769abed47

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page