Skip to main content

A 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

An example package. Replace this with a proper project description. Generated with https://github.com/ionelmc/cookiecutter-pylibrary

  • Free software: BSD license

Installation

pip install lazy-object-proxy

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
----------------------------------------------------------------------------------------
[1](1, 2, 3) Lacks support for certain more tricky operations like vars(obj) and other operators.

Changelog

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.

Files for lazy-object-proxy, version 1.0.0
Filename, size File type Python version Upload date Hashes
Filename, size lazy_object_proxy-1.0.0-cp27-none-win32.whl (22.5 kB) File type Wheel Python version cp27 Upload date Hashes View hashes
Filename, size lazy_object_proxy-1.0.0-cp27-none-win_amd64.whl (23.6 kB) File type Wheel Python version cp27 Upload date Hashes View hashes
Filename, size lazy_object_proxy-1.0.0-cp33-none-win32.whl (22.4 kB) File type Wheel Python version cp33 Upload date Hashes View hashes
Filename, size lazy_object_proxy-1.0.0-cp33-none-win_amd64.whl (23.5 kB) File type Wheel Python version cp33 Upload date Hashes View hashes
Filename, size lazy_object_proxy-1.0.0-cp34-none-win32.whl (22.4 kB) File type Wheel Python version cp34 Upload date Hashes View hashes
Filename, size lazy_object_proxy-1.0.0-cp34-none-win_amd64.whl (23.5 kB) File type Wheel Python version cp34 Upload date Hashes View hashes
Filename, size lazy-object-proxy-1.0.0.tar.gz (30.2 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page