- Added Python 3.12 wheels.
- Dropped support for Python 3.7.
- Applied some reformatting and lint fixes using ruff to the codebase (mostly more Python 2 leftover cleanups).
- Added support for matrix multiplication operator (
@
). - Should have all the wheels now (including the manylinux ones).
- Bumped minimum version requirements for setuptools and setuptools-scm.
- Switched the default pure python fallback implementation to the "simple" one (when you
from lazy_object_proxy import Proxy
and the C extension is not available). Previously the "slots" implementation was used but as it turns out it is slower on Python 3.
- Cleaned up use of cPickle. Contributed by Sandro Tosi in #62.
- Cleaned up more dead Python 2 code.
- Added Python 3.11 wheels.
- Dropped support for Python 3.6.
Removed most of the Python 2 support code and fixed
python_requires
to require at least Python 3.6.Note that 1.7.0 has been yanked because it could not install on Python 2.7. Installing lazy-object-proxy on Python 2.7 should automatically fall back to the 1.6.0 release now.
- Switched CI to GitHub Actions, this has a couple consequences:
- Support for Python 2.7 is dropped. You can still install it there but it's not tested anymore and Python 2 specific handling will be removed at some point.
- Linux wheels are now provided in musllinux and manylinux2014 variants.
- Fixed
__index__
to fallback toint
if the wrapped object doesn't have an__index__
method. This prevents situations where code using a proxy would otherwise likely just callint
had the object not have an__index__
method.
Added support for async special methods (
__aiter__
,__anext__
,__await__
,__aenter__
,__aexit__
). These are used in theasync 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.
- Added Python 3.9 wheels.
- Removed Python 2.7 Windows wheels (not supported on newest image with Python 3.9).
- Added ARM64 wheels (manylinux2014).
- Added support for
__fspath__
. - Dropped support for Python 3.4.
- Added binary wheels for Python 3.8.
- Fixed license metadata.
- Included a
pyproject.toml
to allow users install the sdist with old python/setuptools, as the setuptools-scm dep will be fetched by pip instead of setuptools. Fixes #30.
- Fixed wheels being built with
-coverage
cflags. No more issues about boguscext.gcda
files. - Removed useless C file from wheels.
- Changed
setup.py
to use setuptools-scm.
- Fixed
__mod__
for the slots backend. Contributed by Ran Benita in #28. - Dropped support for Python 2.6 and 3.3. Contributed by "hugovk" in #24.
- Fix broken release (
sdist
had a brokenMANIFEST.in
).
- Speed up arithmetic operations involving
cext.Proxy
subclasses.
- Added manylinux wheels.
- Minor cleanup in readme.
- Fix a memory leak (the wrapped object would get bogus references). Contributed by Astrum Kuo in #10.
- Don't instantiate the object when __repr__ is called. This aids with debugging (allows one to see exactly in what state the proxy is).
- Added support for pickling. The pickled value is going to be the wrapped object without any Proxy container.
- Fixed a memory management issue in the C extension (reference cycles weren't garbage collected due to improper handling in the C extension). Contributed by Alvin Chow in #8.
- First release on PyPI.