Skip to main content

A fast and thorough lazy object proxy

Project description

Documentation Status Travis-CI Build Status AppVeyor Build Status Coverage Status Code Quality Status Scrtinizer Status
PyPI Package latest release PyPI Package monthly downloads PyPI Wheel Supported versions Supported imlementations

A fast and thorough lazy object proxy.

  • Free software: BSD license

Installation

pip install lazy-object-proxy

Documentation

https://python-lazy-object-proxy.readthedocs.org/

Development

To run the all tests run:

tox

Benchmarks

The tested implementations:

  • lazy_object_proxy.slots.Proxy, available as lazy_object_proxy.Proxy if the C extension is not available.

  • lazy_object_proxy.cext.Proxy, available as lazy_object_proxy.Proxy.

  • objproxies - fork of PJE’s ProxyTypes with Python 3 support. [1]

  • SimpleLazyObject from Django. [1]

  • lazy_object_proxy.simple.Proxy - uses the non-data descriptor trick. [1]

For Python 2.7:

------ benchmark: min 5 rounds (of min 25.00us), 5.00s max time, timer: time.clock -----
Name (time in ns)                Min        Max       Mean    StdDev  Rounds  Iterations
----------------------------------------------------------------------------------------
test_perf[slots]            705.3837  3091.0072   720.4805   27.2588  180453          38
test_perf[cext]              93.6346   278.9731    95.1876    2.5474  164373         312
test_perf[simple]           398.1636  1863.2017   405.4325   13.1411  207521          59
test_perf[django]           471.6515   983.0809   480.4264   10.2059  193043          53
test_perf[objproxies]      1204.7003  4818.8010  1475.3419  114.8213   55898           1
----------------------------------------------------------------------------------------

For Python 3.4:

-- benchmark: min 5 rounds (of min 25.00us), 5.00s max time, timer: time.perf_counter --
Name (time in ns)                 Min        Max       Mean   StdDev  Rounds  Iterations
----------------------------------------------------------------------------------------
test_perf[slots]             803.1335  2728.8286   826.0882  20.5562  182436          33
test_perf[cext]              103.2911   254.4223   104.6869   2.6294  164373         277
test_perf[simple]            448.6894  2040.6147   462.0342  17.1546  218443          49
test_perf[django]            518.3013  1225.7125   532.0523  14.4672  218443          43
test_perf[objproxies]       1116.8575  3827.4331  1157.8419  43.9602  174755          24
----------------------------------------------------------------------------------------

For PyPy 2.4:

Note that the mean difference between simple, django and objproxies is smaller the standard deviance, thus it cannot be considered.

------ benchmark: min 5 rounds (of min 25.00us), 15.00s max time, timer: time.clock ----
Name (time in ns)                   Min        Max     Mean   StdDev  Rounds  Iterations
----------------------------------------------------------------------------------------
test_perf[slots]                 1.9577   260.2979   2.2457   0.4882  498050       15384
test_perf[simple]               31.3536  4374.4246  34.7433  11.7566  478894         999
test_perf[django]               32.5269  4443.8381  35.8729  16.9071  461157        1000
test_perf[objproxies]           33.1293  4529.3718  36.7435  13.3377  452773        1000
----------------------------------------------------------------------------------------

Changelog

1.0.2 (2015-04-11)

  • Remove the bogus lazy_object_proxy console script (contributed by Tin Tvrtković in #4).

1.0.1 (2014-12-28)

  • Fix access via class bug in the __wrapped__ property from lazy_object_proxy.simple.Proxy.

1.0.0 (2014-12-27)

  • General code cleanup

  • A faster pure-python Proxy implementation (lazy_object_proxy.simple.Proxy) to be used where the C extension is not available. It’s not a complete proxy so it’s never available as lazy_object_proxy.Proxy.

0.1.0 (2014-06-10)

  • 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

lazy-object-proxy-1.0.2.tar.gz (33.2 kB view hashes)

Uploaded Source

Built Distributions

lazy_object_proxy-1.0.2-cp34-none-win_amd64.whl (23.8 kB view hashes)

Uploaded CPython 3.4 Windows x86-64

lazy_object_proxy-1.0.2-cp34-none-win32.whl (22.7 kB view hashes)

Uploaded CPython 3.4 Windows x86

lazy_object_proxy-1.0.2-cp33-none-win_amd64.whl (23.8 kB view hashes)

Uploaded CPython 3.3 Windows x86-64

lazy_object_proxy-1.0.2-cp33-none-win32.whl (22.7 kB view hashes)

Uploaded CPython 3.3 Windows x86

lazy_object_proxy-1.0.2-cp27-none-win_amd64.whl (23.8 kB view hashes)

Uploaded CPython 2.7 Windows x86-64

lazy_object_proxy-1.0.2-cp27-none-win32.whl (22.8 kB view hashes)

Uploaded CPython 2.7 Windows x86

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