Skip to main content

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

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

Changelog

1.0.0 (2019-01-31)

  • First release on PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

betwixt-1.0.0.tar.gz (21.2 kB view details)

Uploaded Source

Built Distribution

betwixt-1.0.0-py2.py3-none-any.whl (8.9 kB view details)

Uploaded Python 2 Python 3

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

Hashes for betwixt-1.0.0.tar.gz
Algorithm Hash digest
SHA256 625611d7942b6a2b8019e79a37dd78c984b93104cfe3d855e52a62d53fcf1d13
MD5 35302e7d0b3f67c1201f2c097429018a
BLAKE2b-256 5e5e78aae7e53783c1923ba00856a5ace08eb00dd209ba90b75962b9af066986

See more details on using hashes here.

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

Hashes for betwixt-1.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a93199915a150628648662b7b561d41731244d83a53c721266988ccf91989f11
MD5 b99727bd0d3b7cf55ff8026e48a23af2
BLAKE2b-256 c80ca205e3b045e5ec2465401d6030bd9e5d6f8ba114103461bd5c33a9f159ab

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page