Skip to main content

Pattern matching for python. Works in Python 2.7, 3.3+ and pypy.

Installation

pip install patterns

Usage

from patterns import patterns, Mismatch

@patterns
def factorial():
    if 0: 1
    if n is int: n * factorial(n-1)
    if []: []
    if [x] + xs: [factorial(x)] + factorial(xs)
    if {'n': n, 'f': f}: f(factorial(n))

assert factorial(0) == 1
assert factorial(5) == 120
assert factorial([3,4,2]) == [6, 24, 2]
assert factorial({'n': [5, 1], 'f': sum}) == 121

factorial('hello') # raises Mismatch

See tests for more examples.

TODO

  • docs

  • aliases for structures

  • destructure objects

  • name parameter

  • better handling of Mismatch passing to function env

  • non-strict dict matching

Download files

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

Source Distribution

patterns-0.3.tar.gz (6.0 kB view details)

Uploaded Source

File details

Details for the file patterns-0.3.tar.gz.

File metadata

  • Download URL: patterns-0.3.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for patterns-0.3.tar.gz
Algorithm Hash digest
SHA256 af8144d8993253661fd3d67d52d84d2f4c5ab77c873b17e7c79dd096e04a3049
MD5 72255397ec3cb819c7b8edc132c88dc7
BLAKE2b-256 5e3a6bcb6c21e83bda343cd2e0357d7fb6cfd3a9a099d4c3743c79bf58527723

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3 This release

1 file

0.2

1 file

0.1.2

1 file

0.1.1

1 file

0.1.0

1 file

Supported by

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