Infix operators for Python
Project description
Easily make named infix binary operators in Python.
Demo time:
# the only useful function in the module >>> from betwixt import infix_operator # any function of 2 arguments would do >>> from fnmatch import fnmatch # make the binary function into an operator, delimited by `*` >>> matches = infix_operator('*', fnmatch) # use it >>> 'foo.txt' *matches* '*.txt' True # other delimiters can be used >>> matches = infix_operator('|', fnmatch) >>> 'foo.txt' |matches| '*.txt' True
A decorator form can also be used:
>>> @infix_operator('|') ... def contains(left, right): ... return right in left >>> [1, 2, 3] |contains| 1 True >>> [1, 2, 3] |contains| 0 False
Finally, betwixt is provided as a shorter (and, perhaps, more expressive) alias to infix_operator:
>>> from betwixt import betwixt >>> @betwixt('*') ... def joining(left, right): ... return left.join(right) >>> '_' *joining* ['a', 'b', 'c'] 'a_b_c' >>> split_at = betwixt('//', lambda lhs, rhs: lhs.split(rhs)) >>> 'a_b_c' //split_at// '_' ['a', 'b', 'c']
All these example operators and a few more are available in module betwixt.examples.
The idea was taken from http://code.activestate.com/recipes/384122-infix-operators/ and by a similar C++ hack whose code on the web I cannot find any more, but no actual code has been stolen.
Installation
pip install betwixt
Documentation
Development
To run the all tests run:
tox
Note, to combine the coverage data from all the tox environments run:
Windows |
set PYTEST_ADDOPTS=--cov-append tox |
---|---|
Other |
PYTEST_ADDOPTS=--cov-append tox |
Copyright and license
Copyright (c) 2016-2020 Riccardo Murri <riccardo.murri@gmail.com>
This is free software, available under the terms and conditions of the GNU LGPL – see file LICENSE for details.
Changelog
1.0.0 (2019-01-31)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for betwixt-1.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a93199915a150628648662b7b561d41731244d83a53c721266988ccf91989f11 |
|
MD5 | b99727bd0d3b7cf55ff8026e48a23af2 |
|
BLAKE2b-256 | c80ca205e3b045e5ec2465401d6030bd9e5d6f8ba114103461bd5c33a9f159ab |