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
File details
Details for the file betwixt-1.0.0.tar.gz
.
File metadata
- Download URL: betwixt-1.0.0.tar.gz
- Upload date:
- Size: 21.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.44.1 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 625611d7942b6a2b8019e79a37dd78c984b93104cfe3d855e52a62d53fcf1d13 |
|
MD5 | 35302e7d0b3f67c1201f2c097429018a |
|
BLAKE2b-256 | 5e5e78aae7e53783c1923ba00856a5ace08eb00dd209ba90b75962b9af066986 |
File details
Details for the file betwixt-1.0.0-py2.py3-none-any.whl
.
File metadata
- Download URL: betwixt-1.0.0-py2.py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.44.1 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a93199915a150628648662b7b561d41731244d83a53c721266988ccf91989f11 |
|
MD5 | b99727bd0d3b7cf55ff8026e48a23af2 |
|
BLAKE2b-256 | c80ca205e3b045e5ec2465401d6030bd9e5d6f8ba114103461bd5c33a9f159ab |