Overview
docs | |
---|---|
tests | |
package |
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
https://betwixt.readthedocs.io/
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.