pat

patterns

Pattern matching for python

Showing:

Popularity

Downloads/wk

0

GitHub Stars

216

Maintenance

Last Commit

7yrs ago

Contributors

2

Package

Dependencies

0

License

BSD

Categories

Readme

Patterns |Build Status|

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

Installation

::

pip install patterns

Usage

.. code:: python

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

.. |Build Status| image:: https://travis-ci.org/Suor/patterns.svg?branch=master :target: https://travis-ci.org/Suor/patterns

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100