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

Metadata

Release files for patterns 0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for patterns 0.3
File Size Uploaded
patterns-0.3.tar.gz 6.0 kB Details

Release files / patterns-0.3.tar.gz

Download URL patterns-0.3.tar.gz
Size 6.0 kB
Tags Source
SHA-256 checksum
How to use checksums
af8144d8993253661fd3d67d52d84d2f4c5ab77c873b17e7c79dd096e04a3049
BLAKE2b-256 checksum
How to use checksums
5e3a6bcb6c21e83bda343cd2e0357d7fb6cfd3a9a099d4c3743c79bf58527723
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.3 This release

1 release file

0.2

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page