single |
========
Overview
========
A fast and thorough lazy object proxy.
* Free software: BSD 2-Clause License
Note that this is based on `wrapt`_'s ObjectProxy with one big change: it
calls a function the first time the proxy object is
used, while `wrapt.ObjectProxy` just forwards the method calls to the
target object.
In other words, you use `lazy-object-proxy` when you only have the object
way later and you use `wrapt.ObjectProxy` when you
want to override few methods (by subclassing) and forward everything else
to the target object.
Example::
import lazy_object_proxy
def expensive_func():
from time import sleep
print('starting calculation')
# just as example for a very slow computation
sleep(2)
print('finished calculation')
# return the result of the calculation
return 10
obj = lazy_object_proxy.Proxy(expensive_func)
# function is called only when object is actually used
print(obj) # now expensive_func is called
print(obj) # the result without calling the expensive_func
Installation
============
::
pip install lazy-object-proxy
Documentation
=============
https://python-lazy-object-proxy.readthedocs.io/
Development
===========
To run all the tests run::
tox
Acknowledgements
================
This project is based on some code from `wrapt`_ as you can see in the git
history.
.. _wrapt: https://github.com/GrahamDumpleton/wrapt
Changelog
=========
1.6.0 (2021-03-22)
------------------
* Added support for async special methods (__aiter__, __anext__,
__await__, __aenter__, __aexit__).
These are used in the async for, ``await` and async with statements.
Note that __await__ returns a wrapper that tries to emulate the crazy
stuff going on in the ceval loop, so there will be a small performance
overhead.
* Added the __resolved__ property. You can use it to check if the factory
has
been called.
1.5.2 (2020-11-26)
------------------
* Added Python 3.9 wheels.
* Removed Python 2.7 Windows wheels
(not supported on newest image with Python 3.9).
1.5.1 (2020-07-22)
------------------
* Added ARM64 wheels (manylinux2014).
1.5.0 (2020-06-05)
------------------
* Added support for __fspath__.
* Dropped support for Python 3.4.
1.4.3 (2019-10-26)
|