Python-version-sensitive monkeypatching.
Project description
- Contact:
- z@etiol.net
ook is a simple library to assist with monkeypatching Python methods and functions on a per-Python-version basis. It provides one decorator, patch, which conditionally patches callables depending on which version of Python is running.
Example
Adding the compress() function to Python 2.6’s itertools module:
import itertools from ook import patch # http://docs.python.org/2.7/library/itertools.html#itertools.compress @patch(itertools, 2.6) def compress(data, selectors): # compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F return (d for d, s in itertools.izip(data, selectors) if s)
Usage
patch accepts an arbitrary number of version arguments, in a variety of formats:
@patch(some.module.or.class, 2.7, "2.6.8", (3, 2, 5), 3) def method_or_function(signature): """Do something.""" pass
… as well as min and max keyword arguments:
@patch(some.module.or.class, min="2.6.5", max=2.7) def method_or_function(signature): """Do something.""" pass
… which can be combined:
@patch(some.module.or.class, "3.3.5", max=3.3) def method_or_function(signature): """Do something.""" pass
Note: If you specify both keyword and non-keyword version arguments, the patch will only take effect if both the explicitly specified versions and the implied version ranges are satisfied.
With no arguments other than the module or class to be patched, patch applies the patch regardless of Python version:
@patch(some.module.or.class) def method_or_function(signature): """Do something, no matter what.""" pass
Installation
This should do the trick:
pip install ook
Credits / Copyright
ook was (cough) “inspired” by Guido van Rossum’s monkeypatch recipe. Thanks, Guido :-)
It’s released under the GNU General Public License (version 3 or later), a copy of which is included with this distribution in the file COPYING.
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 ook-1.0.2.tar.gz
.
File metadata
- Download URL: ook-1.0.2.tar.gz
- Upload date:
- Size: 18.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e693d58fb3e8c804228a5bb22f64e601569b54bec448d6cabdf9e5beb1cfc844 |
|
MD5 | 3b219107016109f81a619a237d8d0610 |
|
BLAKE2b-256 | 36221b0f2d4de75b3af470f4e05c4de6970d16ab08815c4150d335113a46faa4 |
File details
Details for the file ook-1.0.2-py2.py3-none-any.whl
.
File metadata
- Download URL: ook-1.0.2-py2.py3-none-any.whl
- Upload date:
- Size: 6.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d26a1f6f7d2b707c313e263622793ecbce5345483b87eccf0d8a7247ffd286e |
|
MD5 | 0e6b97c53ce20d0e20c131179c58e86a |
|
BLAKE2b-256 | 8eec682b4996085fafe9e612f6d3cb87f237bb38eebcc82dfaf1d998c3ce7898 |